Что такое поисковые алгоритмы

Алгоритм «Палех»: как нейронные сети помогают поиску Яндекса — Блог Яндекса

Мы запустили новый поисковый алгоритм — «Палех». Он позволяет поиску Яндекса точнее понимать, о чём его спрашивают люди. Благодаря «Палеху» поиск лучше находит веб-страницы, которые соответствуют запросам не только по ключевым словам, но и по смыслу. За сопоставление смысла запросов и документов отвечает поисковая модель на основе нейронных сетей.

«Длинный хвост»

Каждый день поиск Яндекса отвечает примерно на 280 миллионов запросов. Какие-то из них, например [вконтакте], люди вводят в поисковую строку практически каждую секунду. Какие-то запросы уникальны — их задают один раз, и они, возможно, больше никогда не повторятся. Уникальных и просто редких запросов очень много — около ста миллионов в день.

График частотного распределения запросов в Яндексе часто представляют в виде птицы, у которой есть клюв, туловище и длинный хвост.

Список самых распространённых запросов не особо велик, но их задают очень-очень часто — это «клюв» птички. Запросы средней частотности образуют «туловище».

Обратите внимание

Низкочастотные запросы по отдельности встречаются чрезвычайно редко, но вместе составляют существенную часть поискового потока и поэтому складываются в «длинный хвост».

Новый алгоритм позволяет поиску Яндекса лучше отвечать на сложные запросы из «длинного хвоста». Такой хвост есть у сказочной Жар-птицы, которая часто появляется на палехской миниатюре. Поэтому мы дали алгоритму название «Палех».

Запросы из «длинного хвоста» очень разнообразны, но среди них можно выделить несколько групп.

Например, одна из них — запросы от детей, которые пока не освоили язык общения с поиском и часто обращаются к нему как к живому собеседнику: [дорогой яндекс посоветуй пожалуйста новые интересные игры про фей для плантика].

Ещё одна группа — запросы от людей, которые хотят узнать название фильма или книги по запомнившемуся эпизоду: [фильм про человека который выращивал картошку на другой планете] («Марсианин») или [фильм где физики рассказывали даме про дейтерий] («Девять дней одного года»).

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

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

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

Важно

Несмотря на то, что каждый из запросов «длинного хвоста» по отдельности встречается крайне редко, мы всё равно хотим находить по ним хорошие результаты. К решению этой задачи мы привлекли нейронные сети.

Семантический вектор

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

Например, нейронную сеть можно обучить распознавать на изображениях те или иные объекты — скажем, деревья или собак. В ходе обучения ей показывают огромное количество картинок, где есть нужные объекты (положительные примеры) и где их нет (отрицательные примеры).

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

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

Каждый пример — это пара «запрос — заголовок». Подобрать примеры можно с помощью накопленной поиском статистики.

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

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

Вообразить такую систему координат человеку довольно трудно.

Совет

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

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

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

Такой способ обработки запроса и его сопоставления с вероятными ответами мы назвали семантическим вектором. Этот подход хорошо работает в тех случаях,  когда запрос относится к области «длинного хвоста».

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

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

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

Дальше — больше

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

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

Обратите внимание

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

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

Источник: https://yandex.ru/blog/company/algoritm-palekh-kak-neyronnye-seti-pomogayut-poisku-yandeksa

Поисковый алгоритм

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

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

Поисковые алгоритмы на примере Яндекса

Специалисты Яндексавыбрали для своих поисковых алгоритмов названия городов России. Перечислим наиболее значимые поисковые алгоритмы и их версии.

Магадан

14 апреля 2008 года у Яндекса заработал сервис buki.yandex.ru, с помощью которого вэб-мастера могли и могут тестировать новые алгоритмы.

Первым из них стал — Магадан, вступивший в силу 16 мая 2008 года.

Что он изменил в действующем алгоритме:

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

Находка

11 сентября 2008 года вступил в силу алгоритм «Находка», который с собой принес:

  • новый подход к машинному обучению;
  • изменения в методе учета слоп-слов;
  • улучшение поиска слов, написанных через дефис и слитно;
  • новый способ учета факторов ранжирования по формуле.

Арзамас

10 апреля 2009 года алгоритм был выложен на yandex.ru и запущен в работу.

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

Читайте также:  Html тег table - подробное описание с примерами

Арзамас 1.1

Был выложен на yandex.ru 24 июня 2009 года и изменил формулу ранжирования, определяющую результаты поиска для пользователей из Москвы, Санкт-Петербурга и Екатеринбурга.

Арзамас + 16

3 сентября 2009 года алгоритм был выложен в общую выдачу поисковика и расширил действие поиска по регионам России еще на 16 городов: Владивосток, Новосибирск, Челябинск, Кемерово, Иркутск, Барнаул, Воронеж, Красноярск, Омск, Ростов-на-Дону, Краснодар, Нижний Новгород, Уфа.

Арзамас 1.5 SP1

Алгоритм был запущен 9 октября 2009 года и позволил:

  • улучшить классификатор геозависимости запросов;
  • ввести региональное ранжирование суммарно в 19 регионах России;
  • снять оммонимию;
  • исключить формулу ранжирования для посетителей из России, исключая Москву, Санкт-Петербург и Екатеринбург.

АГС-17 и АСГ-30

Активно использоваться начал с осени 2009 года. С его появлением поисковик начал борьбу с сайтами-саттелитами и другими вэб-страницами, не представляющими по мнению поисковика ценности для пользователей.

Алортим сократил число сайтов в выдаче с числом страниц 1-15 шт.

Снежинск

17 ноября 2009 года он был введн в работу на поиске и принес с обой:

  • новый метод машинного обучения «Матрикснет»;
  • создание более точной математической модели, учитывающей  несколько тысяч поисковых параметров длядокумента;
  • внедрение дополнительных региональных факторов, основанных на интересе пользователей к документам;
  • внедрение программы в российскую выдачу, что не затронуло Казахстан, Белоруссию и Украину.
  • учет поведенческих факторов ранжирования.

Источник: http://promo-sa.ru/seo-terms/poiskoviy-algoritm

Что такое поисковый алгоритм?

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

Параметры поисковых алгоритмов, по которым оценивают релевантность

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

К таким параметрам относят:

  • Возраст сайта.
  • Его имя и уровень домена, а также доменная зона.
  • Популярность тем, которые освещает данный ресурс, соответствие тематики ключевикам.
  • Объем информации, размещенной на сайте, и на каждой странице в отдельности, количество страниц.
  • Авторитетность сайта и всех его страниц по мнению поисковиков.
  • Единство стиля на всех страницах ресурса.
  • Количество ключевиков и их постраничное распределение в текстовом содержимом сайта. Соотношение ключевых слов и общего количества слов в используемом контенте.
  • ТИЦ.
  • Количество поисковых запросов, созданных пользователями за конкретный отрезок времени, по каждому из ключевых слов, входящих в семантическое ядро.
  • Периодичность обновлений.
  • Наличие графического и мультимедийного контента.
  • Шрифты и форматирование, стиль заголовков и выделение ключей.
  • Расстояние от начала статьи до ключевиков.
  • Использование спорных методов уникализации, например, намеренно сделанные грамматические ошибки, написание ключевых слов вразрядку.
  • Метатеги.
  • Наличие документа robots.txt.
  • Глубина сайта — количество возможных переходов внутри сайта без повторных посещений одних и тех же страниц.
  • Использование в программном коде комментариев.
  • География сайта и используемый язык.
  • Внешняя и внутренняя ссылочная масса. Качество имеющихся ссылок.
  • Прочие параметры.

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

Существуют алгоритмы прямого и обратного действия.

Поисковые алгоритмы прямого действия

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

Алгоритмы инвертированного или обратного действия

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

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

Апдейты поисковых алгоритмов

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

Обновление предполагает добавление в алгоритм новых критериев ранжирования и упразднение неэффективных параметров, а также внесение изменений в формулы, если это необходимо.

Апдейт всегда приводит к изменениям в ранжировании, следовательно, позиции площадок в выдаче меняются.

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

Поисковые алгоритмы Яндекса и Гугла

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

Гугл использует поисковый алгоритм Panda, периодически выпуская новые его версии.

Яндекс, создавая алгоритмы, присваивает им названия городов: Находка, Арзамас, Обнинск, Краснодар и другие.

Источник: https://netrocket.com.ua/blog/chto-takoe-poiskovyj-algoritm/

Поисковый алгоритм

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

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

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

Параметры сайта, которые анализируются алгоритмами поисковых систем:

· возраст сайта,

· URL (доменное имя),

· язык,

· количество страниц,

· популярность тематики веб-ресурса,

· объём (вес) сайта и каждой его страницы,

· объём текста на сайте и на каждой его странице по отдельности,

· использования стиля на страницах,

· общее число ключевых слов на сайте и на отдельно взятой странице,

· общее количество слов на сайте и ключевых слов на сайте/странице (соотношение двух величин),

· индекс цитирования,

· число запросов по определённому ключевому слову за заданный период времени,

· периодичность обновления информации на сайте, включая дату последнего обновления страниц,

· количество находящихся на сайте изображений и файлов мультимедиа,

· применение фреймов,

· размер и тип (жирность, написание заглавными буквами) шрифта, которым прописаны ключевые слова (в том числе и наличие разрядки),

· стиль заголовков и наименований ключевых слов,

· дальность расположения ключевиков от начала страницы,

· мета-теги,

· описание и свойства страницы,

· файл «robots.txt»,

· географическое местоположение сайта,

· наличие или отсутствие комментариев в программном коде,

· тип страницы – статическая или динамическая,

· наличие или отсутствие flash-модулей,

· присутствие страниц-дублей или страниц с небольшими отличиями,

· соответствие ключевиков разделу каталога поисковой системы, где сайт зарегистрирован,

· стоп-слова,

· общее число гиперссылок, а также внутренних и внешних ссылок,

· глубина сайта.

Важно

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

Алгоритмы Яндекса и

Источник: https://www.SEOnews.ru/glossary/poiskovyiy-algoritm/

Алгоритмы поиска данных — современные наукоемкие технологии (научный журнал)

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

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

С 50-х годов началось решение проблемы поиска элементов, обладающих определенным свойством в заданном  множестве. Алгоритмам поиска посвятили свои труды J. von Neumann, K. E. Batcher, J. W. J. Williams, R. W. Floyd, R. Sedgewick, E. J. Isaac, C. A. R. Hoare, D. E. Knuth, R. C. Singleton, D. L. Shell и другие.

Читайте также:  Что такое ключевые слова

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

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

Задачу поиска можно сформулиро-вать так: найти один или несколько элементов в множестве, причем искомые элементы должны обладать определенным свойством. Это свойство может быть абсолютным или относительным.

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

Пример задачи поиска элемента с абсолютным свойством: найти в конечном множестве занумерованных элементов элемент с номером 13, если такой существует.

Таким образом, в задаче поиска имеются следующие шаги [2]:

1) вычисление свойства элемента; часто это — просто получение «значения» элемента, ключа элемента и т. д.;

2) сравнение свойства элемента с эталонным свойством (для абсолютных свойств) или сравнение свойств двух элементов (для относительных свойств);

3) перебор элементов множества, т. е. прохождение по элементам множества.

Первые два шага относительно просты. Вся суть различных методов поиска сосредоточена в методах перебора, в стратегии поиска и здесь возникает ряд вопросов [2]:

  • Как сделать так, чтобы проверять не все элементы?
  • Если же задача требует неоднократного прохода по всем элементам множества, то как уменьшить количество проходов?

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

Последовательный поиск

Поиск нужной записи в неотсортированном списке сводится к просмотру всего списка до того, как запись будет найдена. «Начать с начала и продолжать, пока не будет найден искомый ключ, затем остановиться» [1] -это простейший из алгоритмов поиска. Этот алгоритм не очень эффективен, однако он работает на произвольном списке.

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

Совет

Здесь и далее предполагается, что массив А состоит из записей, и его описание и задание произведено вне процедуры (массив является глобальным по отношению к процедуре).

Единственное, что требуется знать о типе записей — это то, что в состав записи входит поле key — ключ, по которому и производится поиск. Записи идут в массиве последовательно и между ними нет промежутков. Номера записей идут от 1 до n — полного числа записей.

Это позволит нам возвращать 0 в случае, если целевой элемент отсутствует в списке. Для простоты мы предполагаем, что ключевые значения не повторяются.

Процедура SequentialSearch выпол-няет последовательный поиск элемента z в массиве A[1..n].

SequentialSearch(A, z, n)

(1) for i ←1 to n

(2) do if z = A[i].key

(3) then return i

(4) return 0

Анализ наихудшего случая. У алгоритма последовательного поиска два наихудших случая. В первом случае целевой элемент стоит в списке последним. Во втором его вовсе нет в списке. В обоих случаях алгоритм выполнит n сравнений, где n — число элементов в списке.

Анализ среднего случая. Целевое значение может занимать одно из n возможных положений. Будем предполагать, что все эти положения равновероятны, т. е. вероятность встретить каждое из них равна. Следовательно, для нахождения i‑го элемента A[i] требуется i сравнений. В результате для сложности в среднем случае мы получаем равенство

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

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

Рассмотрим общий случай, когда вероятность встретить искомый элемент в списке равна pi , где pi ≥ 0 и В этом случае средняя сложность (математическое ожидание) поиска элемента будет равна Хорошим приближением распределения частот к действительности является закон Зипфа: для i = 1, 2, …, n.

[n‑е наиболее употребительное в тексте на естественном языке слово встречается с частотой, приблизительно обратно пропорциональной n.

] Нормирующая константа выбирается так, что Пусть элементы массива A упорядочены согласно указанным частотам, тогда и среднее время успешного поиска составит

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

Обратите внимание

Алгоритм последовательного поиска данных одинаково эффективно выполня-ется при размещении множества a1, a2,…, an на смежной или связной памяти. Сложность алгоритма линейна — O(n).

 Логарифмический поиск

Логарифмический (бинарный или метод делением пополам) поиск данных применим к сортированному множеству элементов a1 

Источник: https://top-technologies.ru/ru/article/view?id=24620

Подборка визуализаций по алгоритмам поиска

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

Список рассматриваемых алгоритмов:

Алгоритм поиска A*

Алгоритм поиска по первому наилучшему совпадению на графе, который находит маршрут с наименьшей стоимостью от одной вершины (начальной) к другой (целевой, конечной).

A* пошагово просматривает все пути, ведущие от начальной вершины в конечную, пока не найдёт минимальный. Как и все информированные алгоритмы поиска, он просматривает сначала те маршруты, которые «кажутся» ведущими к цели. С исходным кодом алгоритма вы сможете ознакомиться на дополнительном ресурсе.

Алгоритм поиска Jump Point Search (JPS)

JPS выполняет поиск пути быстрее, будто «перескакивая» некоторые места, которые должны быть просмотрены. Характерным отличием JPS от других алгоритмов является отсутствие требований для предварительной обработки и дополнительных затрат памяти.

Более подробно ознакомиться с работой этого алгоритма вы сможете в развёрнутой статье, посвящённой ему. С кодом этого алгоритма предлагаем ознакомиться на дополнительном ресурсе.

Алгоритм обнаружения циклических схем в направленном графе

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

С исходным кодом алгоритма и его интерактивной презентацией вы сможете ознакомиться в источнике.

Алгоритм поиска в глубину

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

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

Если после завершения алгоритма не все вершины были рассмотрены, то необходимо запустить алгоритм от одной из нерассмотренных вершин.

Давайте рассмотрим работу алгоритма на анимации ниже. Как видите, путь «вглубь» графа начинается с вершины A, затем проверяется вершина B, дальше вершины D и E.

Таким образом алгоритм проверяет все вершины данной ветви и «возвращается» для исследования другой ветви. Алгоритм заканчивает работу на вершине A, потому что вершина D уже была проверена раннее.

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

Алгоритм поиска в ширину

Поиск в ширину (BFS) работает путём просмотра отдельных уровней графа, начиная с узла-источника. Стоит отметить, что этот алгоритм использует метод полного перебора, в котором не используется дополнительная информация о состояниях, кроме той, которая представлена в определении задачи.

Примечание Вы можете экспериментировать с этим алгоритмом в специальном визуализаторе.

Примечание граф — это, говоря простыми словами, множество точек, называемых вершинами, соединенных какими-то линиями, называемыми рёбрами (необязательно все вершины соединены). Можно представлять себе как города, соединённые дорогами.

Вы сможете ознакомиться с исходным кодом и интерактивной презентацией алгоритма в источнике.

Алгоритм Дейкстры

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

Читайте также:  Как получить посетителей с youtube

Примечание Вы можете экспериментировать с этим алгоритмом в специальном визуализаторе.

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

Дополнительные материалы для практики

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

Евгений Туренко, кубанский переводчик

Источник: https://tproger.ru/digest/search-algorithms/

Поисковые алгоритмы

Поисковый алгоритм – это программная формула, которая использует ключевые слова пользователя как исходные данные, возвращая ему поисковую выдачу из релевантных сайтов в качестве результата. Именно поисковый алгоритм «решает», как выстраиваться сайтам по каждому запросу, какие сайты попадают в топ.

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

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

Алгоритмы поисковиков сразу после их появления были очень примитивными и учитывали только внутренние факторы, тобишь содержание сайта, МЕТА-теги.

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

Важно

Задача для оптимизаторов стала сложнее, но не надолго – научились «добывать» ссылки разными способами, появился рынок линкоторговли. Постепенно алгоритмы усложнялись все больше и больше, вводились различные дополнительные фактор и понижающие фильтры.

Отступление в тему….
Извращенец Яндекс с некоторых пор даже начал давать названия разным версиям своих алгоритмов. Первым «именованным» алго был “Родео” – летом 2007 года.

(точнее так его обозвали сами оптимизаторы из-за топика на форуме, созданного Садовским – Что наша жизнь? Родео!). После двух безымянных «паков», последовал в мае 2008 “Магадан”, а за ним в июле 2008 (практически через год после Родео) – “Магадан 2.0”.

В сентябре 2008 миру открылась “Находка”. До следующей остановки, “Анадыри”, еще не доехали.

Алгоритмы имеют свойство время-от-времени меняться. Многие оптимизаторы жалуются – только “раскусил” текущий алгоритм, как уже ввели новый.

Сейчас алгоритмы большинства развитых поисковиков анализируют и учитывают такие основные факторы:

Из внутренних – наличие (плотность) ключевых слов, оригинальность контента, внутренняя перелинковка, наличие слов в мета-тегах (тайты и кейвордсы), выделения html-атрибутами.

Из внешних – те же ссылки. НО не просто их количество, а также: качество доноров, анкоры и тошноту (читай – плотность) фразы в анкор-базе, темпы прироста ссылок.

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

Источник: http://optimizatorsha.ru/master-classes/algorytmus/

Алгоритмы поисковых систем — xBB.uz

Д.С. — Прочел статью Ильи Сегаловича «Как работают поисковые системы» («Мир Интернет», №10, 2002). Хоть и старая, но очень интересная. Выписал из нее самые интересные для себя моменты. Чтобы не потерять этот конспект, публикую его на своем сайте. Может и еще кому-нибудь пригодится.

Итак, на сегодняшний день существует четыре класса поисковых алгоритмов:

  1. прямой поиск;
  2. алгоритм инвертированных файлов;
  3. алгоритм суффиксных деревьев;
  4. алгоритм сигнатур.

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

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

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

  1. слова;
  2. номера документов, в которые входят эти слова;
  3. число употреблений данных слов в данных документах.

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

Математические модели классической теории информационного поиска принято делить на три семейства:

  1. теоретико-множественные модели. К ним относятся булевская модель, расширенная булевская модель и модель нечетких множеств;
  2. алгебраические модели. К ним относятся векторная модель, обобщенная векторная модель, латентно-семантическая и нейросетевая модели;
  3. вероятностные модели.

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

Векторная модель (TF*IDF) сопоставляет каждому документу определенный «вес» по отношению к искомому термину. Вес вычисляется как частота термина в данном документе (TF) умноженный на «редкость» этого термина в коллекции документов (IDF). Документы выдачи ранжируются согласно их весам по отношению к запросам.

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

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

Совет

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

Продвинутые (т.н. «альтернативные») модели каждого из семейств моделей поиска позволяют находить документы «по смыслу» даже когда они не содержат слов запроса.

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

Для оценки качества поиска применяются два параметра:

  • точность — доля релевантных документов в выдаче поисковой системы;
  • полнота — доля найденных релевантных документов в общем числе релевантных документов.

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

Помимо задачи собственно поиска поисковым системам приходится также решать смежные задачи:

  • классификация;
  • маршрутизация;
  • фильтрация;
  • аннотирование найденных документов;
  • кластеризация результатов;
  • расширение и сужение запросов;
  • обратная связь (отклик пользователей на полученный результат поиска);
  • «запросо-зависимое» аннотирование;
  • поисковый интерфейс;
  • языки запросов.

Кроме того, перед поисковиками стоит класс задач, решаемых лингвистическими методами. Это:

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

Поиск в Вебе имеет дополнительную специфику по сравнению с поиском по другим коллекциям документов. Помимо анализа собственно текстов при ранжировании приходится учитывать «внетекстовые» (off-page) факторы, такие как

  • положение документа на сайте;
  • посещаемость сайтов;
  • авторитетность источников;
  • частота обновления сайтов;
  • цитируемость страниц и авторов.

Некоторые специфические проблемы поиска в Вебе:

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

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

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

Источник: http://xbb.uz/SEO/Algoritmy-poiskovyh-sistem

Ссылка на основную публикацию