Где найти цвета медовой росы и увидеть цвет светлой мальвы подскажет новый колдунщик цветов. Колдунщик цветов


Колдунщик цветов: возвращение — Блог Яндекса

Если вы когда-нибудь задавались вопросом, какого цвета бедро испуганной нимфы, недоумевали, о каком таком «перванше» идёт речь в любимой книге, или хотели перекодировать нужный оттенок из RGB в HSV, вы уже наверняка знакомы с колдунщиком цветов Яндекса. Если нет, то вот он, просим любить и жаловать.

Колдунщик цветов появился в 2008 году. К нему быстро привыкли: кому-то он помогал в работе, кому-то просто нравилось вращать барабан и узнавать о существовании цветов вроде «бисмарк-фуриозо». Но летом прошлого года страница результатов поиска поменяла интерфейс, и некоторыми возможностями пришлось временно пожертвовать — в том числе и колдунщиком цветов. Зато вернулся он в улучшенном виде.

Старый колдунщик знал 234 цвета. В новом их стало 1010: мы взяли за основу несколько существующих списков именованных цветов (это те, за которыми закреплены конкретное название и координаты в стандартных цветовых моделях вроде RGB) и добавили несколько оттенков, названия для которых придумали сами. Теперь нужно было разложить эти цвета по порядку — чтобы людям было удобно пользоваться колдунщиком, переходы между соседними цветами должны быть плавными. Надо ли говорить, что это оказалось и сложнее, и интереснее, чем мы думали.

Так выглядел наш набор цветов до сортировки.

Вручную выстроить эти цвета в плавную последовательность практически невозможно. Один и тот же цвет на глаз воспринимается по-разному — в зависимости от его окружения. Когда меняешь расположение одного цвета, нужно передвигать и другие. Местоположение одних только оттенков синего можно выверять до бесконечности. Очевидно, что эту задачу нужно решать математически.

В упрощенном виде её можно сформулировать так: нужно нанизать 1010 цветов на нитку — так, чтобы получившиеся бусы максимально плавно меняли окрас. Тут необходимо учитывать, что нитка одномерная, а все модели цветового пространства как минимум трёхмерны. Это связано с физиологией человеческого зрения. Фоторецепторы, с помощью которых мы различаем цвета, — колбочки — делятся на три типа, по чувствительности к разным длинам волн света. Первые интенсивно реагируют на фиолетово-синюю часть спектра, вторые — на зелёно-жёлтую, третьи — на жёлто-красную. Например, если раздражены два последних типа рецепторов, то мы видим жёлтый цвет, если только последние — красный.

Такая физиология человеческого восприятия отражена в цветовой модели RGB. Это трёхмерное пространство, заданное осями, по которым увеличивается интенсивность красной (red), зеленой (green) и синей (blue) компонент. Поместить наши цвета в это пространство никакой проблемы не составляет — их координаты известны. Проблема — в плавности переходов от одного цвета к другому.

Чтобы переход был плавным, две соседние «бусины» должны минимально отличаться по цвету — для человеческого восприятия. Это уточнение не такое очевидное, каким кажется. Логично предположить, что чем меньше один цвет отстоит от другого в математической модели, тем меньше они отличаются на глаз. Значит, необходимо найти такое расположение для нашей нитки, чтобы между последовательными бусинами-цветами было наименьшее расстояние. Это верный ход мысли, но не для всякой цветовой модели.

Цветовые пространства большинства моделей, в том числе и RGB, не однородны для нашего восприятия. Другими словами, человеческим глазом один и тот же сдвиг по осям координат ощущается по-разному в разных цветовых регионах. Если взять два цвета — например, красный и тёмно-зеленый — и изменить их координаты так, чтобы сдвиг по всем трём осям был равным и параллельным, то на глаз разница между красным и получившимся тёмно-красным будет больше, чем между тёмно-зеленым и тёмно-тёмно-зеленым. Это значит, что если мы найдем математический алгоритм, который по оптимальному маршруту обойдёт все интересующие нас объекты такого цветового пространства и нанижет их на одномерную нитку, то для человеческого глаза изменение её окраса не будет равномерным — а мы-то хотели добиться именно этого.

Одна из моделей, в которых визуальная однородность достигается математическими средствами, назвается CIELAB — в ней-то мы и решали нашу задачу. По своему устройству CIELAB принципиально отличается от RGB: оси координат в ней задают яркость и две пары противоположных цветов (красный — зеленый, синий — жёлтый).

Итак, мы поместили наши 1010 цветов в пространство, где геометрическое расстояние между цветами соответствует восприятию разницы между ними. Теперь нам осталось обойти их так, чтобы расстояние между каждыми двумя последовательными элементами было бы минимальным.

Тут напрашивается решение с помощью алгоритма «ближайшего соседа»: выбираем точку, которая к нам ближе всего, добравшись до неё, ищем новую ближайшую точку и так далее. Однако алгоритм «ближайшего соседа» решает только локальную задачу, игнорируя картину в целом. Представьте себе архипелаг, острова которого разбросаны так же неравномерно, как 1010 цветов в нашем пространстве. Если путешествовать по ним, каждый раз двигаясь к ближайшему острову, мы в результате рискуем очень скоро оказаться, например, на южном краю архипелага, оставив не охваченными еще десять островов на севере. Тогда нам придется совершить длинный перелет, или, в нашем случае, — резкий переход от одного цвета к другому. Так что это решение нам не подходит.

Задача, с которой мы столкнулись, улучшая колдунщик цветов, представляет собой частный случай одной из самых известных задач комбинаторной оптимизации — задачи коммивояжёра. В классическом виде она заключается в том, чтобы найти самый короткий маршрут, который позволил бы коммивояжёру хотя бы раз оказаться в каждом из городов в его списке, а в конце пути вернуться в исходную точку. Правда, мы имели дело не с плоской картой, а с трёхмерным пространством, но в остальном картина похожа: коммивояжёру предстояло посетить пляж Бонди, пески пустыни, горный луг, Мичиганский университет и ещё 1006 пунктов и при этом пройти по оптимальному маршруту. Как и для большинства классических задач, для задачи коммивояжёра существуют готовые алгоритмы оптимизации. Применив их к нашему случаю, мы получили вот такой цветной путь коммивояжёра в 3D.

Теперь повторить путь коммивояжёра в цветовом пространстве CIELAB вы можете на странице результатов поиска. Просто поищите, например, [цвет Яндекса].

yandex.ru

Колдунщик цветов Яндекс покажет цвета, название которых мы не знали

Где найти цвета медовой росы и увидеть цвет светлой мальвы подскажет новый колдунщик цветов

Человеческий глаз различает миллионы оттенков цветов, которым мы сами просто не в состоянии дать уникальное название. Ведь одних только оттенков серого мы способный увидеть около пяти сотен. А ведь для любого дизайнера важно знать не только цифровую составляющую цвета, но и его смысловой аналог. И в этом случае традиционными семью цветами уже не обойтись. Для этого в сети появились специальные помощники, названные колдунщиками цветов. Именно с их помощью можно подобрать подходящий аналог, который иногда даже сложно на глаз отличить от его соседа.

палитра-цветов3 палитра-цветов2

Новый метод показа цветов от Яндекс

В поисковой системе Яндекс, где как известно найдётся все:-) , колдунщик появился относительно недавно — всего семь лет назад. Тогда он представлял собой всего 234 цвета, которые были не классифицированы и часто трудно найти оттенок, наиболее точно подходящий соседнему цвету.

колдунщик Яндекса

Впрочем, именно тогда появилась интересная идея давать наиболее популярным оттенкам созвучные им словосочетания. Поэтому с его появлением пользователи узнали о существования таких цветов, как бисмарк-фуриозо или же о перванше.

Палитра цветов

Однако недавно Яндекс обновил свою систему классификации, расширив ее не только до 1010 цветовых оттенков, но и значительно изменил порядок их расположения. И теперь все оттенки плавно переходят от одного цвета к другому, дополняя идеи дизайнера подходящими для объяснения цветового решения словосочетаниями. В результате некоторые из нас смогут узнать, какого именно цвета бедра испуганной нимфы или же увидеть бледно-голубой с фиолетовым оттенком перванш.

Задача коммивояжера в красочной обертке

палитра-цветов5 палитра-цветов4

Стоит отметить и еще один интересный факт, благодаря которому все пользователи получили этот полезный метод определения цветов. Основной проблемой программистов Яндекса было найти правильный способ нанизывания 1010 цветовых бусинок на нитку колдунщика так, чтобы все бусы поместились туда, при этом плавно меняя свой цветовой окрас.

Для обычного обывателя эта задача звучит просто — создаете линейную последовательность цветов и все готово. Однако на самом деле не все так просто, поскольку человеческий глаз имеет трехмерную модель цветового пространства, а значит, задача превращается в плавное приведение традиционной RGB модели в линейный переход. Подробно о всех тонкостях во время построения перехода можно прочитать на самом Яндексе. Я же остановлюсь на одном необычном решении этой проблемы.

salesman

В конечном итоге после построения сей карты точек в пространстве, решение их связывания можно было бы найти при помощи классических математических задач. Первым на ум пришло использовать алгоритм ближнего соседа, однако он бы не решил проблему полного прохождения неравномерной карты оттенков цветов. Поэтому для этого в качестве решения выбрали метод коммивояжёра, которая в классическом варианте сводится к построению пути, в котором коммивояжер должен обязательно посетить все точки. С единственным уточнением оптимальный маршрут должен проходить по точкам максимально подходящим по тону.

необычные цвета

Невероятная палитра цветов от Яндекса

И в результате все мы можем насладиться такими необычными для слуха цветами, как Вердепешевый, Гридеперлевый, увидеть цвета горного луга и песков пустыни, узнать о цвете Мичиганского университета и окраске птицы чирок. В общем дерзайте и ищите вдохновения. И интересные новости не оставят вас.

allpozitive.ru

Компания Яндекс — Технологии — Колдунщики

Параллельно с поиском по интернету Яндекс ищет ответы и на собственных сервисах. Такой поиск называется параллельным, а его результаты, которые как по волшебству появляются среди других результатов поиска, — колдунщиками.

Представить этот процесс можно так. Вы пришли в огромную библиотеку, чтобы найти ответ на какой-то вопрос, и говорите:

— Мне нужна [формула объёма усечённой пирамиды] — где бы её поискать?— Можете попробовать посмотреть в такой-то энциклопедии или вот в этих учебниках, — отвечает библиотекарь и добавляет, — но вообще-то у меня эта формула вот тут выписана. Держите.

Ещё он может подсказать, [когда отключат горячую воду] и [какая погода в Лиме], найти [вишнёвый кабриолет с механической коробкой] и напомнить, откуда вот это вот [уж небо осенью дышало] и как там дальше.

Искать дополнительные ответы на своих сервисах Яндекс начал в 2000 году, подключив к поиску ленту новостей и базу товаров интернет-магазинов. С тех пор сервисов стало гораздо больше — сегодня отвечать на пользовательские запросы Поиску помогают четыре десятка колдунщиков, и ответы на один и тот же запрос могут найтись у многих из них. Например, по запросу [electric wizard] Яндекс может предложить послушать песни группы, которые есть на Музыке, посмотреть фото музыкантов, найденные Картинками, или клипы на Видео.

Какие колдунщики, в каком количестве и порядке подмешивать к результатам поиска в интернете, решает специальная система — Блендер. Для каждого сервиса у Блендера есть отдельная формула, построенная с помощью машинного обучения, по которой рассчитывается релевантность ответа от этого сервиса конкретному пользовательскому запросу. Например, в случае с запросом [виктор цой клип] всё просто: Блендер обратит внимание на уточняющее слово «клип» и сделает вывод, что тут нужен ответ от Видео — колдунщик этого сервиса появится в самом верху выдачи.

А вот в случае запроса вроде [синий цвет] всё немного сложнее. Здесь тоже есть слово-маркер («цвет»), на которое реагирует колдунщик цветов, но подходящий ответ есть и у других сервисов. Чтобы решить, какой колдунщик показать выше в результатах поиска, Блендер прогоняет запрос через формулу релевантности каждого из них и сравнивает полученные числовые показатели между собой. Самый высокий показатель для запроса [синий цвет] — скажем, 0,6 — будет у колдунщика цветов. У Картинок, которые нашли синее небо, синие розы, синие машины и другие синие вещи, — 0,31. Кроме того, выяснится, что подходящий ответ есть и у Видео: иногда, хоть и не так часто, пользователи хотят послушать стихотворение «Синий цвет». Показатель релевантности этого ответа будет меньше 0,1 — это мало, но всё-таки достаточно для того, чтобы включить в выдачу подборку роликов, пусть и внизу страницы. Показатели других сервисов несопоставимо малы, поэтому их колдунщиков в выдаче по этому запросу не будет.

ОтвечалкаРеагирует на некоторые запросы, предполагающие однозначный ответ.

МаркетВ интернете много информации о товарах (возможно, даже слишком много), но, где найти описание конкретной модели, например, фотоаппарата, понятно далеко не всегда. Для таких случаев и существует колдунщик Маркета — в ответ на запрос он предложит карточку нужной модели из базы сервиса с описанием характеристик и ценой.

Автомобильный код регионаЧтобы узнать автомобильный код, достаточно ввести в поиск Яндекса запрос вроде [16 какой регион] или наоборот — [татарстан какой номер региона].

МузыкаЕсли запрос определяется как музыкальный (на это может указывать узнаваемое имя исполнителя, название композиции или слово «слушать»), Яндекс покажет среди результатов поиска плеер. С его помощью можно послушать несколько треков прямо на странице выдачи и перейти в раздел артиста на Яндекс.Музыке.

ВидеоНекоторые вещи необходимо видеть. Самым подходящим ответом на запрос вроде [как танцевать мазурку] или [лучшие голы сезона] будет видео. Поэтому среди результатов поиска вы увидите подборку роликов, найденных Яндекс.Видео.

КартинкиКогда ответ можно сопроводить картинкой, она появляется на странице поисковой выдачи. Особенно, если пользователь прямо сказал, что ему нужен [натюрморт], [портрет] или [пейзаж].

АфишаКолдунщик Афиши показывает краткую информацию о запрошенном фильме или спектакле, а также предлагает посмотреть расписание показов и даже купить билет.

ОпечаткиКолдунщик опечаток умеет анализировать запрос и исправлять опечатки, учитывая контекст запроса. Если набрать в поисковой строке [карманный вал], колдунщик предложит исправить его на «карданный», а [карданные собачки] — на «карманные». Кроме того, если пользователь забудет сменить раскладку клавиатуры или сделает орфографическую ошибку, запрос будет автоматически исправлен на верный, о чем колдунщик обязательно уведомит пользователя.

ПереводПоисковую строку Яндекса можно использовать как словарь — достаточно добавить к запросу слово «перевод».

КартыКолдунщик Карт отвечает, когда пользователя интересует какая-нибудь улица, площадь, переулок или даже тупик — например, Тихий. Колдунщик прямо на карте покажет, где находится нужная улица.

А ещё он умеет показывать вид с высоты:

АдресаАдресный колдунщик находит нужные организации — сразу во всем городе или только в каком-то районе или у станции метро. Например, он может показать, где находятся [поликлиники в Саратове] или [ремонт часов на парке культуры].

ИндексБывают ситуации, когда нужно отправить бумажное письмо по неэлектронной почте. Но для этого надо знать не только адрес, но и почтовый индекс вашего адресата. С этим поможет колдунщик — достаточно ввести в поисковую строку улицу, номер дома и добавить слова «почтовый индекс».

РасписанияЭтот колдунщик появляется тогда, когда пользователь явно или неявно собирается в путь. Например, если его интересует [расписание Тула], [Москва Пекин] или знаменитая [Красная стрела]. Колдунщик сам определяет местонахождение пользователя и показывает расписание поездов и самолетов для его города.

АвиабилетыПозволяет прямо на странице выдачи выбрать даты поездки и подобрать подходящий рейс.

ПутешествияЕсли нужен не только билет, но и номер в отеле, на помощь придёт колдунщик Путешествий.

ПогодаСобирая чемодан в путешествие или просто размышляя, брать ли на прогулку зонт, пользователь может поинтересоваться у Яндекса, какая погода будет там, куда он отправляется.

НовостиКолдунщик Новостей показывает самую свежую информацию. Если человек краем уха услышал о каком-то событии, он может ввести в поиск Яндекса ключевые слова (например, имя или должность главного героя) и увидеть среди результатов свежие сообщения от партнёров Новостей — ведущих информационных агентств и СМИ.

Результаты матчейРеагирует на запросы с названиями команд, например, [барселона бавария] или [канада россия], если матч между такими командами ещё идёт или состоялся недавно.

ВремяВ 2008 году, к 100-летию первого перевода часов, Яндекс запустил проект Время. С тех пор специальный колдунщик отвечает на вопросы [который час], [сколько времени] и даже [скока времени]. Если пользователь не уточняет город, для которого он хочет узнать время, то его местоположение определяется автоматически.

Еще колдунщик умеет показывать разницу во времени между городами — например, между Москвой и Кейптауном.

А при запросе [Горячий Ключ и Высокая Печь разница во времени] колдунщик покажет ответ на этот точно сформулированный вопрос.

ОплатаУ Яндекса есть несколько колдунщиков, которые помогают пользователям совершать бытовые платежи — пополнять баланс мобильного телефона, оплачивать штрафы или услуги ЖКХ. В ответ на запрос вроде [оплатить свет] появляется строка для ввода ИНН или названия организации. После этого пользователь попадает на сервис Городских платежей, позволяющий рассчитаться за нужную услугу банковской карточкой, Яндекс.Деньгами или наличными.

Колдунщик горячей водыВ ответ на запросы вроде [отключение воды] или [график отключения] над результатами поиска появляется специальная строка — введите в неё нужный адрес и, если у колдунщика есть данные для вашего дома, он сообщит «дату икс».

IP-адрес пользователяПо запросам типа [узнать мой IP] или просто [мой айпи] колдунщик показывает адрес и предлагает узнать больше о соединении между провайдером пользователя и Яндексом — например, измерить его скорость.

Стихи6 июня 2009 года, в день рождения Пушкина, робот Яндекса начал добавлять к своим произведениям — страницам с результатами поиска — «эпиграфы». Если запрос — это цитата из стихотворения или песни, робот включит в «эпиграф» нужное четверостишье, напомнит автора произведения и его название, а также даст ссылку на один из сайтов, где его можно прочитать целиком. Каждый день робот Яндекса учит новые стихотворения — может, поэтому у него такая хорошая память.

ЦветаБлагодаря этому колдунщику можно увидеть, как выглядит тот или иной цвет, и узнать о некоторых экзотических оттенках. Запрос может быть как на русском, так и на английском языке, а может представлять собой обозначение в HEX, RGB или HSV.

КонвертерДля тех, кто интересуется переводом одних величин в другие, работает колдунщик-конвертер. Благодаря ему можно узнать, например, сколько миль в километре или сколько сантиметров в Дюймовочке.

Курс валютУмеет показывать курс валюты, указанной в запросе, по отношению к валюте той страны, в которой находится пользователь.

Котировки акций и цены на сырьёЧтобы быстро проверить, как поживают акции, достаточно ввести в Поиск название компании и добавить к запросу «курс акций». Этот же колдунщик умеет отвечать и на запросы по стоимости сырья, например, [цены на нефть].

Инструкции лекарствЭтот колдунщик выручает в случаях, когда вместе с коробочкой от лекарства выбросили и инструкцию. Для получения справки о действующем веществе препарата, противопоказаниях, дозах и способе приёма, нужно поискать в Яндексе его название, прибавив слово «инструкция».

КалькуляторЭтот колдунщик реагирует на запросы вроде [7/40] и [18898^_-6] и позволяет быстро поделить, возвести в степень или произвести другую математическую операцию.

ФормулыТакие запросы, как [площадь круга], [объём усечённого конуса] или [периметр ромба], вызывают колдунщик, помогающий рассчитать искомую величину.

Психологическая помощьБывает не понятно, где начинать искать помощь. Этот колдунщик реагируют на запросы вроде [ребёнка обижают в школе] или [наркотики] и подсказывает контакты специализированных фондов и организаций.

yandex.ru

Колдунщик

Колдунщик – это специальный модуль Яндекса, который выдает ответ на ваш запрос поверх результатов поиска. Это может быть погода, время, перевод слова, расписание поездов и другая информация, которая по мнению поисковика уже является ответом на ваш запрос и поэтому выдается поверх ссылок на проиндексированные сайты. 

 

Колдунщик

 

История появления колдунщика

Искать дополнительные ответы на вопросы Яндекс впервые начал в 2000 году. Тогда к поиску были подключены лента новостей и база товаров интернет-магазинов. Такой поиск получил название параллельный, а его результаты, которые появляются, как по волшебству, рядом с результатами поиска по вебу, были названы колдунщиком. 

 

Сейчас Яндекс ведет параллельный поиск по различным сервисам (Новостям, Маркету, Картам, Словарям, Блогам, Картинкам и т.д.) одновременно с поиском по вебу. Результаты параллельного поиска могут располагаться над результатами поиска по вебу, справа от них и даже внутри  – рядом с ссылками на веб-страницы. Если найти нужный ответ «везде» не удалось, можно щелкнуть на название сервиса над поисковой строкой и увидеть, что нашлось по этому запросу там.

 

Можно сказать, что появление и развитие подобных сервисов отражает тенденцию перехода к семантическому вебу, где поисковики будут сами собирать и выдавать пользователю информацию о неком явлении, формируя ее из различных источников интернета, вместо того, чтобы отсылать к ним.

 

Функционал колдунщиков

Со временем Яндекс создал множество колдунщиков на различные темы. Новости, Пресс-портреты, Маркет, Авто, Музыка, Видео, Картинки, Погода, Расписание и т.д. Некоторые из них отвечают на вопросы прямо, дают точный ответ, например – который час, другие не дают конкретного ответа, зато показывают, на каком сервисе его можно найти – например, колдунщик Новостей предлагает один из возможных ответов на вопрос, а за остальными приглашает перейти на сервис.

 

Колдунщики учитывают регион пользователя. Так, по запросу «прогноз погоды» поисковик показывает колдунщик с прогнозом погоды именно для того города, где находится пользователь. А по запросу с названием улицы – карту в его городе, если, конечно, улица с таким названием там есть.

 

Помимо всем известным колдунщикам с большим массивом информации, Яндекс обладает небольшими колдунщиками-фишками. Например, 6 июня 2009 года, в день рождения А.С. Пушкина, робот Яндекса начал добавлять к страницам с результатами поиска – «эпиграфы». В ответ на цитату из стихотворения в «эпиграфе» показываются строки из произведения, его название и автор.

 

Наверняка, многие пользовались другими полезными мелочам: Конвертером величин, позволяющим узнать, сколько миль в километре или сантиметров в дюйме, Курсом валют, помогающим будущим путешественникам быстро прикинуть размер своего бюджета в валюте другой страны, или музыкальным плеером, проигрывающим искомую мелодию прямо со страницы поисковика. 

 

Колдунщик цветов

Еще один колдунщик, полезный, в частности, для веб-мастеров. Это цветовой «барабан», позволяющий увидеть, как выглядит тот или иной цвет, указав его в запросе. При этом запрос может быть как на русском, так и на английском языке, а может представлять собой обозначение в различных цветовых моделях: hex, rgb или hsv. Благодаря колдунщику пользователи Яндекса могут воочию лицезреть экзотические цвета, вроде бисмарк-фуриозо и перванша.

 

Колдунщик цветов

 

Появившись в 2008 году, колдунщик включал 234 цвета. Затем он на некоторое время исчезал, и заработав вновь после перезапуска, знал уже 1010 цветов. За основу были взяты несколько существующих списков именованных цветов, а также несколько новых оттенков, названия которым выдумали сами создатели колдунщика.

 

При этом, в ходе работы над колдунщиком, разработчики столкнулись с интересной задачей. Нужно было разложить взятые цвета по порядку. Чтобы людям было удобно пользоваться колдунщиком, переходы между соседними цветами должны быть плавными. Однако, вручную выстроить эти цвета в плавную последовательность практически невозможно. Один и тот же цвет на глаз воспринимается по-разному — в зависимости от его окружения. Когда меняешь расположение одного цвета, нужно передвигать и другие. Местоположение одних только оттенков синего можно выверять до бесконечности. Поэтому было понятно, что эту задачу нужно решать математически.

 

В упрощенном виде её можно сформулировать так: нужно нанизать 1010 цветов на нитку –так, чтобы получившиеся бусы максимально плавно меняли окрас. Тут необходимо учитывать, что нитка одномерная, а все модели цветового пространства как минимум трёхмерны. Это связано с физиологией человеческого зрения.

 

Такая задача представляет собой частный случай одной из самых известных задач комбинаторной оптимизации – задачи коммивояжёра. В классическом виде она заключается в том, чтобы найти самый короткий маршрут, который позволил бы коммивояжёру хотя бы раз оказаться в каждом из городов в его списке, а в конце пути вернуться в исходную точку. Правда, здесь приходилось иметь дело не с плоской картой, а с трёхмерным пространством. Но в остальном картина похожа: коммивояжёру предстояло посетить морской берег, пески пустыни, горный луг, северный город и ещё 1006 пунктов, и при этом пройти по оптимальному маршруту. 

 

Как и для большинства классических задач, для задачи коммивояжёра существуют готовые алгоритмы оптимизации, которые и были использованы. 

 

 

Функции поиска Google

В Гугл, естественно, имеется аналогичный функционал, позволяющий узнавать погоду, время, различные меры, перевод слов и расписание киносеансов. Не так давно поисковик ввел функцию поиска авиабилетов. Хотя Яндекс и обогнал своего конкурента в плане различных забавных фишек, стоит отметить, что Гугл работает в этой плоскости немного в другом контексте. И его усовершенствования в основном касаются интеграции с мобильными устройствами, социальными сетями, развития голосового поиска и других инноваций, отражающих потребности пользователей.

 

 

Источники и материалы про колдунщик

 

Смотрите также про колдунщик

 

Автор - Андрей Калинин

seotuition.ru

Цветовые схемы, Яндекс цвета, обман зрения и парочка онлайн сервисов

Приветствую всех читателей блога scriptcoding.ru. Данная статья будет объемной и познавательной, поскольку в ней мы рассмотрим несколько связанных между собой тем. Так что. Запасайтесь чаем и печеньем, и в путь….

Обман зрения, цветовые схемы и Яндекс цвета

В этой статье мы рассмотрим:

Цветовые схемы RGB, CMYK, Lab и HSB

Цветовые схемы RGB, LAB и CMYK

Сложно представить лучшего художника, чем природа. Человек, со всеми своими технологиями является лишь плагиатором, который пытается воспроизвести ту красоту и разнообразие цветов, которыми природа радует нас каждый день. Однако, за всю историю, человечество увидело, что невозможно создать единую схему, или набор правил, для воспроизведения того или иного цвета. Это и неудивительно, так как разнообразие цветов и оттенков столь огромно, что даже ни одно количество терабайт не сможет их запомнить, или угадать. Дело в том, что наш разум по своей природе примитивный, так, мы по-разному воспринимаем цвет объекта в зависимости от освещения, кроме того – наш глаз просто физически не в силах отличить все оттенки многолепия природы.

Однако, может возникнуть вопрос: но как же, ведь есть такие цветовые схемы как RGB или CMYK, кроме того, глянцевые журналы и дорогие мониторы тоже могут порадовать наш глаз, значит, мы все же разгадали загадку цвета, или нет? Возможно, а возможно и нет. Еще из школьной скамьи известно, что в природе есть объекты, которые излучают свет – Солнце, звезды, галактики, элементы освещения, и объекты, которые видны только за счет способности отражать световые лучи – Луна, Земля, бумажный лист, дома и так далее. Исходя из этого, светлые умы человечества решили придумать две схемы для представления цвета:

  • Аддитивные схемы – тут все основывается на световых лучах, освещающих белый объект. Так, если листок бумаги белого цвета осветить зеленым цветом, то он представится нам зеленым, если осветить красным цветом – то мы подумаем, что лист бумаги красного цвета.
  • Субтрактивные схемы – данный тип схем подходит для красок. Смешивая тот или иной набор красок в заданном количестве, мы получаем новый цвет.

Цветовая схема RGB

RGB - цветовая схема

Цветовая схема RGB является аддитивной, так как применяется в электронных устройства вывода данных, таких как монитор, телевизор и так далее. В ее составе лежат три цвета: красный (Red), зелёный (Green) и синий (Blue). Может возникнуть логический вопрос: а почему именно эти три цвета? Дело в том, что видимый спектр света при попадании на сетчатку человеческого глаза, происходит обработку нашим мозгом, который, в свою очередь, разбивает видимый спектр на три части: зеленую, красную и синюю, и уже основываясь на эти цвета, происходит вычитание общей информации о цвете. Поэтому, условно можно сказать, что цветовая схема RGB отражает модель, по которой наш глаз воспринимает окружающий мир.

Цветовая схема CMYK

CMYK - цветовая схема

Полагаю, многие знают, что цветовая схема CMYK применяется в полиграфии, однако, своей жизнью она обязана такой субтрактивной цветовой схеме как CMY, в основе которой лежат такие цвета как бирюзовый (Cyan), пурпурный (Magenta) и жёлтый (Yellow). Схема по своей природе идеальна, если бы не одно маленькое но. Дело в том, что в идеальном случае при смешивании данных цветов, должен получиться черный цвет, но практика показывает, что на выходе получается некий темно-бурый оттенок, который лишь отдаленно напоминает черный. Исходя из этого, к схеме добавили черный цвет - буква K (blacK),обозначающая черный цвет.

Как и в случае с цветовой схемой RGB, может возникнуть логический вопрос: а почему именно эти цвета? Мы знаем, что бумага, в отличии от экранов или мониторов, не способна излучить свет, она может только отразить световые лучи. В зависимости от количества поглощенной и отраженной краски, мы можем видеть различные цвета. Исходя из этого, решили, что намного удобнее рассчитывать, какое количество света было отражено от заданной поверхности, чем считать, сколько света поглотилось. В результате, если мы вычтем три первичных цвета (RGB) из белого, то мы получим дополнительные три цвета, на которых основана цветовая схема CMY.

Цветовая схема Lab

LAB - цветовая схема

Исходя из вышесказанного, мы видим, что цветовая схема RGB ориентирована на свойства излучаемого света, а CMYK – на свойства поглощаемого света. Однако, стоит отметить, что цветовые диапазоны в обеих цветовых схем не совпадают. Так, RGB позволяет прекрасно воспроизводить цвета в диапазоне от синего до зеленого, и несколько хуже — оттенки желтого и оранжевого, а в модель CMYK – скудна на многие оттенки. Исходя из этого и была разработана модель Lab, которая активно используется в компьютерной графике.

В основе модели Lab лежат три параметра: L — яркость, а - цвета от темно-зеленого через серый до ярко-розового и b - цвета от светло-синего через серый до ярко-желтого. По своей природе цветовая модель Lab независима, например, Фотошоп при переходе от RGB к CMYK использует Lab как промежуточный этап.

Цветовая схема HSB или HSV

HSB - цветовая схема

По своей природе, цветовая схема HSB является практически той же RGB. Для определения цвета в схеме HSB используются три параметра:

  • Hue - цветовой тон или оттенок, например, зеленый, красный или сине-голубой. Тут значение задается в градусах от 0 до 360.
  • Saturation – насыщенность, значение от 0 до 100, фактически, процент добавленной к цвету белой краски.
  • Value (значение цвета) или Brightness — яркость. Значение определяется в процентах от 0 до 100.

Стоит обратить внимание на то, что цветовая схема HSB не соответствует тем цветам, которые воспринимает человеческий глаз. Человеческий орган зрения воспринимает цвета, как такие, что имеют разное значение яркости. Однако, для примера, спектральный синий имеет меньшую яркость, чем спектральный зеленый. А модель HSB основывается на том, что все цвета основного спектра обладают 100%-й яркостью, хотя в реальности это не так.

Онлайн сервисы для работы с цветовыми схемами

Онлайн сервисы для построения цветовых схем

Kuler - kuler.adobe.com

Данный онлайн сервис от компании Adobe уже давно считается лучшим помощником профессионального веб-дизайнера. После регистрации появляется возможность использовать цветовые схемы, созданные другими пользователями, сохранять собственные цветовые схемы и многое другое. При желании можно выбрать тип цветовой схемы - RGB, CMYK, LAB или HSV.

Важно отметить, что вы можете загрузить собственное изображение, на основе которого будет создана цветовая схема, можно использовать такие графические форматы как TIFF, JPEG, GIF, PNG и BMP. Кроме того, Kuler поддерживает экспорт палитры в формат *.ASE, это позволяет импортировать созданные цвета в графический редактор Фотошоп через палитру SWATCHES. Кроме того, с Кулером можно взаимодействовать через меню Фотошоп: Окна /Расширения /Kuler.

Color Palette Generator - www.degraeve.com/color-palette/ и ColorHunter - www.colorhunter.com

Данный сервис по своей природе очень простой, сразу после перехода, у вас будет возможность создать цветовую схему для любого понравившегося изображения. Для этого справа есть окно "URL of image", вставляем туда ссылку на рисунок и нажимаем на кнопку "Color-Palette-ify!" В итоге, слева мы увидим цветовую схему для заданного рисунка. Все гениально просто.

На этом же сервисе есть ссылка на ColorHunter, перейдя по ней, мы попадаем на похожий сервис для составления схем, но тут уже можно не только указывать URL адрес к картинке, но и загрузить собственный рисунок, подде5рживаемые форматы – jpg, png и gif. Обратите внимание, что внизу под строкой ввода есть список уже готовых цветовых схем, которые созданы другими пользователями сервиса.

Contrast-A - dasplankton.de/ContrastA/

При переходе на сервис, на первый взгляд все кажется непонятным, но это не так… Как написано на главной странице: Приложение позволяет пользователям экспериментировать с цветовыми комбинациями, изучить их в аспекте принципов доступности и создавать собственные цветовые палитры. Contrast-A проверяет сочетания цветов для достаточной контрастности и показывает информацию в соответствии с WCAG 2.0 (Коэффициент яркости), а также в соответствии со старыми правилами WCAG 1.0 (Разница в яркости и цвете).

По сути, все сводится к тому, что мы можем выбрать два цвета, и сразу увидеть, как они между собой сосчитаются.

Colorotate - www.colorotate.org

Colorotate чем-то похож на Kuler, о котором мы упомянули выше, тут тоже можно загружать собственные изображения или выбирать готовые цветовые схемы. Однако тут, генератор цветовых схем представлен не в виде цветового колеса, а в виде трехмерного конуса. На главной странице можно скачать приложение для мобильных устройств, кроме того, используя плагин ColoRotate, можно работать с цветовой схемой непосредственно в Фотошоп и Fireworks.

Colour Lovers - www.colourlovers.com

В отличии от предыдущих сервисов, тут можно создавать не только цветовые схемы, или использовать уже созданные, но и создавать различные шаблоны. Ресурс постоянно обновляется – всегда свежие новости, обзоры, есть сообщества и группы. Естественно, для использования всех функций, придется зарегистрироваться.

Color Scheme Designer - colorschemedesigner.com

Тут все гениально просто: вы выбираете нужный тип цветовой схемы - моно, комплиментарная, триада, тетрада или аналоговая. Далее, выбираем нужные цвета, удобство заключается в том, что тут сразу можно посмотреть, как будет выглядеть страница сайта с заданной цветовой палитрой.

ColorSchemer Gallery - www.colorschemer.com/schemes/

Название говорит само за себя – галерея цветовых схем. Кроме выбора готовых схем, созданных пользователями сервиса, можно скачать различные приложения для работы с цветом.

Color Spire - www.colorspire.com

Очень простой сервис. Вам нужно только выбрать заданный цвет, а сервис автоматически предложит цветовую схему. Справа будет находиться небольшой пример, содержащий шапку, подвал, боковую панель и основу макета сайта с выбранными цветами.

ColorExplorer - www.colorexplorer.com

Тут содержится не один, а сразу несколько инструментов для работы с цветом. Кроме того, можно просмотреть готовую библиотеку цветов. Функций у сервиса много, так что есть что изучать.

Sphere - mudcu.be/sphere/

Очень интересный сервис, слева находится цветовой круг, на котором находятся шесть связанных между собой точек, точки можно отдалять от центра круга или приближать к центру. Справа находятся шесть ползунков, по три на каждую цветовую схему – RGB или HSL. По сути, достаточно выбрать один цвет, а все остальные будут задаваться автоматически.

Pictaculous - www.pictaculous.com и ColourGrab - colourgrab.com

 

Оба сервиса позволяют создать цветовую схему на основе заданного изображения – в одном случае вы задаете ссылку на рисунок в сети, а в другом – загружаете с компьютера.

Куда пропал колдунщик цветов Яндекса

Яндекс цвета

Многие пользователи, которые ищут информацию в поисковой системе яндекс, привыкли, что довольно часто помимо стандартной выдачи с сайтами, нам могут, в зависимости от поискового запроса, выводиться картинки, карты, калькулятор и так далее. Такие дополнительные элементы в Яндекс называются колдунщиками. Что бы не затягивать материал, я коротко опишу, как происходит вызов нужного колдунщика…

Помимо текстовой информации, содержащейся на сайтах, человек может искать и то, что по определению просто нет смысла описывать специально в статье. Например:

  • Человек ищет информацию о Евровидении, которое недавно прошло – в таком случае пользователю есть смысл показать последние новости.
  • Пользователь вводит в строке поиска "число пи" – скорее всего он хочет увидеть числовое значение.
  • В строке поиска вводится слово серобуромалиновый – тут логично предложить код цвета

И таких примеров много…

По сути, вывод результатов по вебу и вывод информации из сервисов Яндекса, это так называемый параллельный поиск, а результаты, которые показываются вместе со стандартной выдачей – колдунщиками. Многие заметили, что колдунщиков может появиться несколько. Конечно, внутренние алгоритмы поиска проверяют, насколько запрос популярен в плане того, что бы выводить для него кроме поисковой выдачи еще и нужный колдунщик.

Однако, в последнее время я заметил, что колдунщик Яндекс цветов пропал из выдачи. Данный колдунщик появляется, когда мы вводим название цвета, его код, ну или просто фразу Цвет Яндекса – вариантов много. Побродив по просторам интернета я узнал, что не только у меня пропали из выдачи Яндекс цвета, как оказалось, Яндекс любит проводить различный эксперименты, для которых выборочно выбирает пользователей, скорое всего, я тоже попал под раздачу.>

Что бы убедится, что яндекс цвета полностью не пропали, я зашел через анонимайзер на Яндекс и ввел фразу Яндекс цвета, и… удача, колдунщик цветов появился. Давайте разберемся, что из себя представляет колдунщик Яндекс цветов.

Смотрите, суть сервиса заключается в том, что бы показать, как выглядит заданный цвет, и какой у него код. Слева находится небольшой блок, который состоит из цветных полос с названиями цвета, рядом с блоком находятся стрелки, которые позволяют делать прокрутку в заданном направлении. Весь юмор заключается в том, что можно увидеть цвет не только для стандартного набора вида красный, зеленый, но и для:

  • Серобуромалиновый
  • Цвет блошиного брюшка
  • Медвежье ушко
  • Морская пена

Справа находится кольцо для выбора цвета, рядом с ним можно ввести вручную нужный код цвета. Поддерживаются две цветовые схемы: RGB и HSV.

Игры с цветом, или обман зрения

красного и розового цветов нет - обман зрения

На этом рисунке, на самом деле, нет оттенков розового и красного цветов, в этом легко убедиться, если загрузить изображение в графический редактор, например, Фотошоп, и увеличить нужную область с якобы красными цветами до максимума.

обман зрения - точки А и В одного цвета

Шахматная доска - А и В одного цвета

Иллюзия шахматной доски – в данных примерах, точки А и В содержат одинаковый цвет. Это легко проверить в любом графическом редакторе. Аналогично, можно увидеть обман, если смотреть на изображение под определенным углом.

обман зрения - обе лошади оного цвета

обман зрения - обе собаки одного цвета

обман зрения - линия одного цвета, без переходов

Иллюзия с градиентом – данный тип иллюзии легко создать самому, достаточно открыть Фотошоп и создать два слоя. На переднем слое рисуем две или одну фигуру заданного цвета, а на заднем фоне используем заливку в виде градиента, сам градиент должен содержать два цвета – один светлее, другой темнее фигуры, которая на переднем плане.

Во всех случаях фигуры на переднем плане одинакового цвета.

В следующих примерах иллюзия с цветами тоже связана с задним планом, точнее с областью, на которой находится цветовая область.

Спирали на рисунке одного цвета

Тут все спиральки одного цвета.

обман зрения - цвет у кубиков один, без оттенков

Все кубики одного цвета

Круги одного цвета - обман зрения

Оба круга одного цвета.

В обох случаях квадратики в центре одного цвета

Квадратики в центре на обоих картинках одного цвета.

Прямоугольные области в центре одного цвета

Тут как и в предыдущем примере области в центре одного цвета.

на всем рисунке чередуются сине-зеленые полосы

Может показаться, что на рисунке чередуются цветные полосы розового, оранжевого, синего и зеленые полосы, на самом деле, синий и зеленый это один и тот же цвет. Если присмотреться, то будет видно, что "сине-зеленые" полосы идут через весь рисунок, не меняя своего цвета.

шахматы сверху и снизу одинаковые

Тут тоже действует эффект заднего плана – шахматы вверху и внизу одного цвета.

Верхняя и нижняя часть одного цвета

Данный пример мне больше всего нравится, поскольку, тут, как говорится, все ясно – поверхность А и поверхность В разного цвета, но это иллюзия! Обман легко раскрыть, если разделить рисунок на две части по видимой границе, и просто переместить нижнюю часть наверх или наоборот.

Обман зрения - области А, В и С одинаковые

В данном примере квадраты А, В и С одно цвета.

Прямоугольники справа и слева одного цвета

Все серые прямоугольники одного цвета.

Тут нет красных и розовых квадратиков

Из-за разного окружающего цвета, кажется будто квадратики содержат различные розовые тона, но на самом деле розовый цвет у всех квадратиков одинаковый.

scriptcoding.ru

Компания Яндекс — Технологии — Колдунщики

Параллельно с поиском по интернету Яндекс ищет ответы и на собственных сервисах. Такой поиск называется параллельным, а его результаты, которые как по волшебству появляются среди других результатов поиска, — колдунщиками.

Представить этот процесс можно так. Вы пришли в огромную библиотеку, чтобы найти ответ на какой-то вопрос, и говорите:

— Мне нужна [формула объёма усечённой пирамиды] — где бы её поискать?— Можете попробовать посмотреть в такой-то энциклопедии или вот в этих учебниках, — отвечает библиотекарь и добавляет, — но вообще-то у меня эта формула вот тут выписана. Держите.

Ещё он может подсказать, [когда отключат горячую воду] и [какая погода в Лиме], найти [вишнёвый кабриолет с механической коробкой] и напомнить, откуда вот это вот [уж небо осенью дышало] и как там дальше.

Искать дополнительные ответы на своих сервисах Яндекс начал в 2000 году, подключив к поиску ленту новостей и базу товаров интернет-магазинов. С тех пор сервисов стало гораздо больше — сегодня отвечать на пользовательские запросы Поиску помогают четыре десятка колдунщиков, и ответы на один и тот же запрос могут найтись у многих из них. Например, по запросу [electric wizard] Яндекс может предложить послушать песни группы, которые есть на Музыке, посмотреть фото музыкантов, найденные Картинками, или клипы на Видео.

Какие колдунщики, в каком количестве и порядке подмешивать к результатам поиска в интернете, решает специальная система — Блендер. Для каждого сервиса у Блендера есть отдельная формула, построенная с помощью машинного обучения, по которой рассчитывается релевантность ответа от этого сервиса конкретному пользовательскому запросу. Например, в случае с запросом [виктор цой клип] всё просто: Блендер обратит внимание на уточняющее слово «клип» и сделает вывод, что тут нужен ответ от Видео — колдунщик этого сервиса появится в самом верху выдачи.

А вот в случае запроса вроде [синий цвет] всё немного сложнее. Здесь тоже есть слово-маркер («цвет»), на которое реагирует колдунщик цветов, но подходящий ответ есть и у других сервисов. Чтобы решить, какой колдунщик показать выше в результатах поиска, Блендер прогоняет запрос через формулу релевантности каждого из них и сравнивает полученные числовые показатели между собой. Самый высокий показатель для запроса [синий цвет] — скажем, 0,6 — будет у колдунщика цветов. У Картинок, которые нашли синее небо, синие розы, синие машины и другие синие вещи, — 0,31. Кроме того, выяснится, что подходящий ответ есть и у Видео: иногда, хоть и не так часто, пользователи хотят послушать стихотворение «Синий цвет». Показатель релевантности этого ответа будет меньше 0,1 — это мало, но всё-таки достаточно для того, чтобы включить в выдачу подборку роликов, пусть и внизу страницы. Показатели других сервисов несопоставимо малы, поэтому их колдунщиков в выдаче по этому запросу не будет.

ОтвечалкаРеагирует на некоторые запросы, предполагающие однозначный ответ.

МаркетВ интернете много информации о товарах (возможно, даже слишком много), но, где найти описание конкретной модели, например, фотоаппарата, понятно далеко не всегда. Для таких случаев и существует колдунщик Маркета — в ответ на запрос он предложит карточку нужной модели из базы сервиса с описанием характеристик и ценой.

Автомобильный код регионаЧтобы узнать автомобильный код, достаточно ввести в поиск Яндекса запрос вроде [16 какой регион] или наоборот — [татарстан какой номер региона].

МузыкаЕсли запрос определяется как музыкальный (на это может указывать узнаваемое имя исполнителя, название композиции или слово «слушать»), Яндекс покажет среди результатов поиска плеер. С его помощью можно послушать несколько треков прямо на странице выдачи и перейти в раздел артиста на Яндекс.Музыке.

ВидеоНекоторые вещи необходимо видеть. Самым подходящим ответом на запрос вроде [как танцевать мазурку] или [лучшие голы сезона] будет видео. Поэтому среди результатов поиска вы увидите подборку роликов, найденных Яндекс.Видео.

КартинкиКогда ответ можно сопроводить картинкой, она появляется на странице поисковой выдачи. Особенно, если пользователь прямо сказал, что ему нужен [натюрморт], [портрет] или [пейзаж].

АфишаКолдунщик Афиши показывает краткую информацию о запрошенном фильме или спектакле, а также предлагает посмотреть расписание показов и даже купить билет.

ОпечаткиКолдунщик опечаток умеет анализировать запрос и исправлять опечатки, учитывая контекст запроса. Если набрать в поисковой строке [карманный вал], колдунщик предложит исправить его на «карданный», а [карданные собачки] — на «карманные». Кроме того, если пользователь забудет сменить раскладку клавиатуры или сделает орфографическую ошибку, запрос будет автоматически исправлен на верный, о чем колдунщик обязательно уведомит пользователя.

ПереводПоисковую строку Яндекса можно использовать как словарь — достаточно добавить к запросу слово «перевод».

КартыКолдунщик Карт отвечает, когда пользователя интересует какая-нибудь улица, площадь, переулок или даже тупик — например, Тихий. Колдунщик прямо на карте покажет, где находится нужная улица.

А ещё он умеет показывать вид с высоты:

АдресаАдресный колдунщик находит нужные организации — сразу во всем городе или только в каком-то районе или у станции метро. Например, он может показать, где находятся [поликлиники в Саратове] или [ремонт часов на парке культуры].

ИндексБывают ситуации, когда нужно отправить бумажное письмо по неэлектронной почте. Но для этого надо знать не только адрес, но и почтовый индекс вашего адресата. С этим поможет колдунщик — достаточно ввести в поисковую строку улицу, номер дома и добавить слова «почтовый индекс».

РасписанияЭтот колдунщик появляется тогда, когда пользователь явно или неявно собирается в путь. Например, если его интересует [расписание Тула], [Москва Пекин] или знаменитая [Красная стрела]. Колдунщик сам определяет местонахождение пользователя и показывает расписание поездов и самолетов для его города.

АвиабилетыПозволяет прямо на странице выдачи выбрать даты поездки и подобрать подходящий рейс.

ПутешествияЕсли нужен не только билет, но и номер в отеле, на помощь придёт колдунщик Путешествий.

ПогодаСобирая чемодан в путешествие или просто размышляя, брать ли на прогулку зонт, пользователь может поинтересоваться у Яндекса, какая погода будет там, куда он отправляется.

НовостиКолдунщик Новостей показывает самую свежую информацию. Если человек краем уха услышал о каком-то событии, он может ввести в поиск Яндекса ключевые слова (например, имя или должность главного героя) и увидеть среди результатов свежие сообщения от партнёров Новостей — ведущих информационных агентств и СМИ.

Результаты матчейРеагирует на запросы с названиями команд, например, [барселона бавария] или [канада россия], если матч между такими командами ещё идёт или состоялся недавно.

ВремяВ 2008 году, к 100-летию первого перевода часов, Яндекс запустил проект Время. С тех пор специальный колдунщик отвечает на вопросы [который час], [сколько времени] и даже [скока времени]. Если пользователь не уточняет город, для которого он хочет узнать время, то его местоположение определяется автоматически.

Еще колдунщик умеет показывать разницу во времени между городами — например, между Москвой и Кейптауном.

А при запросе [Горячий Ключ и Высокая Печь разница во времени] колдунщик покажет ответ на этот точно сформулированный вопрос.

ОплатаУ Яндекса есть несколько колдунщиков, которые помогают пользователям совершать бытовые платежи — пополнять баланс мобильного телефона, оплачивать штрафы или услуги ЖКХ. В ответ на запрос вроде [оплатить свет] появляется строка для ввода ИНН или названия организации. После этого пользователь попадает на сервис Городских платежей, позволяющий рассчитаться за нужную услугу банковской карточкой, Яндекс.Деньгами или наличными.

Колдунщик горячей водыВ ответ на запросы вроде [отключение воды] или [график отключения] над результатами поиска появляется специальная строка — введите в неё нужный адрес и, если у колдунщика есть данные для вашего дома, он сообщит «дату икс».

IP-адрес пользователяПо запросам типа [узнать мой IP] или просто [мой айпи] колдунщик показывает адрес и предлагает узнать больше о соединении между провайдером пользователя и Яндексом — например, измерить его скорость.

Стихи6 июня 2009 года, в день рождения Пушкина, робот Яндекса начал добавлять к своим произведениям — страницам с результатами поиска — «эпиграфы». Если запрос — это цитата из стихотворения или песни, робот включит в «эпиграф» нужное четверостишье, напомнит автора произведения и его название, а также даст ссылку на один из сайтов, где его можно прочитать целиком. Каждый день робот Яндекса учит новые стихотворения — может, поэтому у него такая хорошая память.

ЦветаБлагодаря этому колдунщику можно увидеть, как выглядит тот или иной цвет, и узнать о некоторых экзотических оттенках. Запрос может быть как на русском, так и на английском языке, а может представлять собой обозначение в HEX, RGB или HSV.

КонвертерДля тех, кто интересуется переводом одних величин в другие, работает колдунщик-конвертер. Благодаря ему можно узнать, например, сколько миль в километре или сколько сантиметров в Дюймовочке.

Курс валютУмеет показывать курс валюты, указанной в запросе, по отношению к валюте той страны, в которой находится пользователь.

Котировки акций и цены на сырьёЧтобы быстро проверить, как поживают акции, достаточно ввести в Поиск название компании и добавить к запросу «курс акций». Этот же колдунщик умеет отвечать и на запросы по стоимости сырья, например, [цены на нефть].

Инструкции лекарствЭтот колдунщик выручает в случаях, когда вместе с коробочкой от лекарства выбросили и инструкцию. Для получения справки о действующем веществе препарата, противопоказаниях, дозах и способе приёма, нужно поискать в Яндексе его название, прибавив слово «инструкция».

КалькуляторЭтот колдунщик реагирует на запросы вроде [7/40] и [18898^_-6] и позволяет быстро поделить, возвести в степень или произвести другую математическую операцию.

ФормулыТакие запросы, как [площадь круга], [объём усечённого конуса] или [периметр ромба], вызывают колдунщик, помогающий рассчитать искомую величину.

Психологическая помощьБывает не понятно, где начинать искать помощь. Этот колдунщик реагируют на запросы вроде [ребёнка обижают в школе] или [наркотики] и подсказывает контакты специализированных фондов и организаций.

www.yandex.ru

Почему непросто показать все цвета в одномерном пространстве, и сколько раз это можно сделать

Яндекс умеет подсказывать цвета по их названию и находить близкие к ним. Некоторое время назад эту подсказку (внутри себя мы называем такие штуки «колдунщиками») пришлось переделывать, чтобы она соответствовала виду поисковых результатов после их редизайна. И мы воспользовались этим поводом, чтобы поработать над ним всерьёз, — ведь оказалось, что расположить цвета линейно — очень нетривиальная задача.

В этом посте я хочу рассказать, какую интересную алгоритмическую задачу, которая потребовала погружения в теорию цвета, нам пришлось решать почти всем Яндексом, чтобы сделать новый колдунщик таким, каким его задумала команда.

Колдунщик цветов появился в результатах поиска Яндекса в 2008 году. Когда его задумывали, нам хотелось, чтобы он стал не только игрушкой, которая откроет человеку цвет бедра испуганной нимфы, но и поможет узнать цвет по формуле, узнать нотацию по цвету, перевести код из одного цветового пространства в другое. Старая версия колдунщика состояла из барабана, колорпикера, инпута и 234 именованных цветов.

old colors

Поначалу казалось, что возродить его на обновленной выдаче можно за пару недель. Первой частью этой задачи было привести внешний вид колдунщика к новому стилю страницы результатов поиска.

Быстро стало понятно, что на стандартных элементах его собрать не получится. Кроме того, колдунщик, нарисованный для старой страницы результатов поиска, не вписался бы в новую версию, да и делать трёхмерный барабан, по мнению наших дизайнеров, уже не модно. Так родился плоский дизайн. Главное, что хотелось поддержать в новой версии и чего не было раньше, — это просмотр кастомных цветов, которые не имели названия. В старой версии колдунщик отвечал на все запросы ближайшими именованными цветами и мог ввести людей в заблуждение. Теперь любой цвет можно увидеть в окружении ближайших именованных соседей или в другой яркости.

Главный дизайнер поиска kovchiy подарил команде файл с тысячами именованных цветов из личного архива. В итоге у нас было 1010 цветов, названия и координаты которых частично закреплены в стандартных списках цветов (таких как HTML Color Names, X11 Color Names), а частично — придуманы самостоятельно. И когда стали думать, как уложить их в колдунщик, началось самое сложное. Команда, которая работала над ним, решила даже устроить конкурс на лучшую сортировку цветов во внутренней соцсети Яндекса. Именно там я узнал о задаче и предложил своё решение, которое в итоге попало в продакшн. Но обо всем по порядку.

Итак, задача заключалась в том, чтобы упорядочить набор цветов на барабане (на линии или кольце) так, чтобы:

  • переходы между соседними цветами были гладкими, а возможно, и менее контрастными — чтобы рядом стоящие цвета были похожими;
  • близкие цвета были сгруппированы, чтобы похожие цвета стояли рядом.
Так выглядел исходный набор цветов без заданного порядка

Но уже эти два критерия являются:

  • избыточными — группировка близких цветов повышает контрастность, а уменьшение контрастности разделяет группы;
  • недостаточными — они допускают множество различных решений, при равенстве которых по данным критериям некоторые выделяются среди прочих менее определёнными качествами вроде лучшей видимой осмысленности расположения в целом;
  • неопределёнными — они указывают, на что должно быть похоже желаемое решение, но не позволяют различить, какое из хороших решений лучше.
В итоге и судьи, и участники при сопоставлении решений больше полагались на вкус, чем на соответствие критериям.

Вручную, без помощи алгоритмов, не получится не только найти красивый порядок даже меньшего числа цветов, но и улучшить кем-то найденный. Если кажется, что некоторому цвету самое место в другой части барабана, то, переставив, обнаруживаешь резкий контраст: восприятие цвета зависит от фона, и новые соседи перемещённого цвета, казавшиеся на фоне близлежащих цветов столь на него похожими, после перемещения вдруг обнаруживают разительно иной оттенок.

Если подбирать расстановку цветов алгоритмически, естественно увидеть в проблеме задачу оптимизации и первым шагом к её решению выбрать цель оптимизации — функцию, которая сообщает, насколько хороша или плоха та или иная расстановка цветов.

Для построения этой функции необходима вспомогательная, называемая ΔE, которая задаёт числом разность или степень похожести между двумя цветами. То есть если и только если разность одной пары близких цветов равна разности другой пары, наблюдателю должно казаться, что цвета в каждой из пар одинаково отстоят друг от друга. ΔE составляет одну из фундаментальных проблем науки о цвете, но в определённых рамках она является вполне решённой. К счастью, функция разности между цветами давно исследуется в науке о цвете, и сейчас, где это необходимо, используются формула, опубликованная международной комиссией по освещению вместе с цветовым пространством CIE L*a*b* (LAB) в 1976 (в котором разность между цветами просто евклидово расстояние между ними) под названием CIE ΔE и уточнённая в 1994 и 2000 годах. Участники конкурса, не знавшие о CIE ΔE, обычно определяли ΔE сами как евклидово расстояние в RGB и HSV.

Используя ΔE, мы можем построить функцию оценки качества расположения цветов на барабане как сумму квадратов разностей между соседними цветами на барабане. Решение между участниками начинает различаться как раз с выбора функции качества решения. Все хорошие решения использовали CIE ΔE; между собой они отличаются выбором функции качества решения и алгоритма её оптимизации.

Почему CIE ΔE несколько, чем они отличаются по смыслу? Цветовое пространство CIE LAB было создано для того, чтобы цвета располагались равномерно. Оно отделяет яркость от двух других координат цвета, которые выбирает так, чтобы изменение цвета на несколько единиц яркости воспринималось как разница при изменении других координат на столько же единиц. Но и математическая простота функций, выражающих преобразование физического пространства (CIE XYZ) в LAB, по-видимому, имела существенное значение. Последующие эксперименты показали, что воспринимаемая цветовая разница не вполне, хоть и очень близко, сответствует заложенной в LAB. То есть LAB не является вполне однородным. Но найденные поправки к CIE ΔE 1976 нельзя включить в новое цветовое пространство — то есть невозможно пространство, в котором исправленная CIE ΔE была бы евклидовым расстоянием, как старая CIE ΔE в CIE LAB. Поэтому до сих пор используется CIE LAB 1967.

CIELAB

После того как мы выбрали пространство цветов, мы можем дальше выбрать самую естественную, самую простую функцию качества решения — это сумма квадратов между соседними цветами расстановки. Оптимизация этой функции приводит к наиболее гладким переходам между соседними цветами (если применять CIE ΔE), и такое решение используется теперь в обновлённом колдунщике цветов. Однако оно специально не учитывает, что может быть лучше расположить группу соседних цветов подряд, чем использовать её часть, плавно перейти к другим оттенкам и вернуться к первым ещё раз. Кроме того, может быть желательно переходить от цвета к цвету «в одном направлении»: чтобы после тёмно-красного за чуть более светлым красным шёл ещё более светлый, а не более тёмный оттенок. Чтобы учесть эти пожелания, участники прибавляли к простой функции качества сумму квадратов разностей до более отдалённых соседей, или до усреднённого цвета всех ближайших соседей. Это улучшало вид расстановки в целом, но к сожалению, часто чрезмерно ухудшало вид вблизи — тот набор из пяти цветов, который колдунщик показывает за раз.

После выбора функции качества нужно решить, как её оптимизировать. Если эта функция выглядит как сумма квадратов разностей между стоящими рядом цветами, задача её оптимизации практически эквивалентна задаче оптимизации пути коммивояжёра (TSP), посещающего все места по одному разу и стремящегося максимально сократить суммарный путь. TSP является NP-сложной, но хорошо изученной проблемой, для приближённого решения которой в общественном доступе имеется несколько превосходных решателей — прежде всего LKH и Concorde. Использование специализированного решателя позволяет получить решение ближе к оптимальному и быстрее, чем это возможно с применением универсальных методов оптимизации.

TSP

Такие универсальные методы требуются, если выбрана более сложная функция качества расстановки, учитывающая разность не только между ближайшими соседями.

Вариант сортировки с использованием TSP по метрике CIE94 от Zubchick

Два участника использовали метод отжига. Этот метод последовательной оптимизации решения. Сначала мы берем какое-то произвольное решение и затем стараемся постепенно его улучшать. На каждом шаге мы выбираем некоторое простое преобразование предыдущего решения. Например, переставить местами пару случайных цветов или соседних цветов, или перевернуть отрезок цветов, или поставить его в другом месте. После такой перестановки по функции качества решений сравнивается качество предыдущего и следующего решения.

Несколько вариантов сортировки методом отжига от AOrazaev

Если бы это был не метод отжига, а метод градиентного спуска, он бы всегда переходил от решения с худшим качеством к решению с лучшим качеством. Но такой метод приводит к локальным оптимумам, когда каким-то простым преобразованием улучшить решение нельзя, но если всё в корне поменять, можно прийти к лучшему результату. Поэтому метод отжига иногда ухудшает решение. За счет этого возможно избавиться от локальных оптимумов в поиске глобального оптимума. Решения были неплохими, но недостаточно хорошие вблизи.

Двое других наших коллег использовали генетические алгоритмы и либо не дождались хорошего результата, либо использовали неудачную функцию качества. Не считая версии XtremAlRaven, где за исходную точку было взято независимо полученное решение TSP, но которое не удалось заметно улучшить.

Попытка улучшить генетическим алгоритмом модифицированный TSP в метрике CIE1994 от XtremAlRaven

До сих пор я говорил о том, что результат можно получить только алгоритмически, но кроме выбора конкретного алгоритма было возможно некоторое ручное вмешательство. Во-первых, некоторые участники пытались сначала сгруппировать цвета вокруг нескольких выбранных точек (скажем, вокруг черного, красного, зеленого) и оптимизировать по отдельности все зоны, а потом их склеивать.

Я пробовал размещать цвета по вручную подобранным группам (так, чтобы похожие насыщенные цвета не смешивались между собой), находил граничные цвета, чтобы они плавно переходили друг в друга, и сортировал каждую группу между граничными цветами. Такой метод позволяет найти решение, которое лучше смотрится издали, потому что получается меньше одинаковых цветовых пятен в разных местах, но в колдунщике, когда будет показано только 5 цветов, оно выглядит немного хуже.

На самом деле, задача казалась сложной, потому что до того, как был объявлен конкурс, у разработчиков колдунщика в течение полутора месяцев оставался открытым вопрос, как хорошо расположить цвета. Они в итоге сами нашли хорошее решение, сравнимое по качеству с теми, которые участвовали потом в конкурсе. Кроме того, если заранее не знать некоторые элементы теории цвета, сложно понять, как решить эту задачу хорошо. Моё решение было готово на третий день конкурса, большинство других — в первую неделю.

Итоговая сортировка

Тут уже сложность возникла у команды, которая занималась колдунщиком, — им нужно было выбрать одно из почти сорока.

habrahabr.ru


Смотрите также