Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

586 Глава 12. Последовательности и динамическое программирование

12.5.4 Поисковые системы

Всемирная паутина содержит огромную коллекцию текстовых документов (веб-страницы).

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

Инвертированные файлы

Основной информацией, хранившей поисковой системой, является словарь, названный перевернутым

индекс или инвертированный файл, храня пары значения ключа (w, L), где w - слово и L, являются коллекцией страниц, содержащих Word w. Ключи (слова) в этом словаре называют индексными терминами и должны быть рядом записей словаря и имен собственных как можно больше. Элементы в этом словаре называют списками возникновения и должны покрыть как можно больше веб-страниц.

Мы можем эффективно осуществить перевернутый индекс со структурой данных, состоящей из:

1. Множество, хранящее списки возникновения условий (без определенного порядка) 2. Сжатый trie для набора индексных терминов, где каждый внешний узел хранит

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

С нашей структурой данных вопрос для единственного ключевого слова подобен матчу слова - вопрос луга (Раздел 12.5.1). А именно, мы находим ключевое слово в trie, и мы возвращаем связанный список возникновения.

Когда многократные ключевые слова даны, и желаемая продукция довод «против» страниц - taining все данные ключевые слова, мы восстанавливаем список возникновения каждого ключевого слова, используя trie и возвращаем их пересечение. Чтобы облегчить пересечение computa-tion, каждый список возникновения должен быть осуществлен с последовательностью, сортированной адресом или со словарем (см., например, универсальное вычисление слияния, обсужденное в Разделе 11.4).

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

12.6. Упражнения

12.6 Упражнения

Для помощи с упражнениями, пожалуйста, посетите веб-сайт, www.wiley.com/college/goodrich. <www.wiley.com/college/goodrich>

Укрепление

587

R-12.1 Что является лучшим способом умножить цепь матриц с размерами это

10 5, 5 2, 2 20, 20 12, 12 4 и 4 60? Покажите свою работу.

R-12.2 Проектируйте эффективный алгоритм для матричной проблемы умножения цепи

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

R-12.3 Перечислите префиксы последовательности P = «aaabbaaa», которые являются также суффиксами P. R-12.4 Привлеките число, иллюстрирующее сравнения, сделанные грубой силой образец

соответствие для текста «aaabaadaabaaa» и образца «aabaaa».

R-12.5 Повторите предыдущую проблему для алгоритма соответствия образца BM, нет

подсчет сравнений, сделанных вычислить последнее (c) функция.

R-12.6 Повторите предыдущую проблему для алгоритма соответствия образца KMP, нет

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

R-12.7 Вычислите стол, представляющий последнюю функцию, используемую в образце BM

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

«быстрая коричневая лиса перепрыгнула через ленивую кошку»

принятие следующего алфавита (который начинается с символа пробела):

S = {,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z.

R-12.8 Предположение, что знаки валфавите S могут быть перечислены и могут быть

используемый, чтобы внести множества в указатель, дайте O (m +|S )-time метод для строительства

последняя функция от образца m-длины натягивает P.

R-12.9 Вычислите стол, представляющий функцию неудачи KMP для образца

последовательность «cgtacgttcgtac». R-12.10 Потяните стандарт trie для следующего набора последовательностей:

abab, ромовая баба, ccccc, bbaaaa, caa, bbaacc, cbcc, cbca.

R-12.11 Потяните сжатый trie для набора последовательностей, данных в Упражнении R-12.10.

588