Скачать презентацию поиск Д Кнут Искусство программирования для ЭВМ Т Скачать презентацию поиск Д Кнут Искусство программирования для ЭВМ Т

Поиск одномерный, ver2.ppt

  • Количество слайдов: 58

поиск Д. Кнут Искусство программирования для ЭВМ Т. 3. Сортировка и поиск СПб, “Вильямс”, поиск Д. Кнут Искусство программирования для ЭВМ Т. 3. Сортировка и поиск СПб, “Вильямс”, 2000 1

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

Поиск данных, в свою очередь, можно разделить на поиск структурированных данных и поиск неструктурированных Поиск данных, в свою очередь, можно разделить на поиск структурированных данных и поиск неструктурированных данных • поиск структурированных данных это поиск по ключу • поиск неструктурированных данных это информационный поиск

информационный поиск • Интерне т — всемирная система объединённых компьютерных сетей для хранения и информационный поиск • Интерне т — всемирная система объединённых компьютерных сетей для хранения и передачи информации на базе протокола TCP/IP • WWW — системы гипертекста, которая cделала путешествие по сети Интернет быстрым и интуитивно понятным.

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

Структурированные данные • Это данные описанные с помощью той или иной структуры. • Это Структурированные данные • Это данные описанные с помощью той или иной структуры. • Это базы данных, базы знаний, хранилища данных • Это различные файловые системы • В дальнейшем мы будем рассматривать только структурированные данные и методы поиска в них 6

Классификация методов поиска в структурированных данных – одномерные методы поиска; – многомерные методы поиска; Классификация методов поиска в структурированных данных – одномерные методы поиска; – многомерные методы поиска; – метрические методы поиска; – методы поиска в больших объёмах данных; – пространственно-временные методы поиска. 7

одномерные методы поиска • Поиск осуществляется по одному ключу • Методы поиска будут рассмотрены одномерные методы поиска • Поиск осуществляется по одному ключу • Методы поиска будут рассмотрены в дальнейшем более подробно 8

многомерные методы поиска Многомерные деревья – k-d-деревья – Многомерные B-деревья – R-деревья Многомерное хеширование многомерные методы поиска Многомерные деревья – k-d-деревья – Многомерные B-деревья – R-деревья Многомерное хеширование – Схемы хеширования с каталогом – функция хеширования использует дополнительные данные, сохраненные на диске (Файл-решетка, EXCELL). – Схемы хеширования без каталога – функция хеширования основана только на математических вычислениях, без использования дополнительных данных (MOLHPE, PLOP). Кривые заполнения пространства для точечных данных – кривая Пеано, – N-деревья – Z-упорядочивание, – кривая Гильберта – кривая на основе кода Грея и т. д. 9

метрические методы поиска Применение матриц расстояния AESA LAESA SASH - Spatial Approximation Sample Hierarchy метрические методы поиска Применение матриц расстояния AESA LAESA SASH - Spatial Approximation Sample Hierarchy граф k. NN Сферическое разбиение пространства данных VP-дерево и его разновидности Гиперплоскостное разбиение пространства данных gh-дерево Дерево GNAT (Geometric Near-neighbor Access Tree) mm-GNAT (multi-modality GNAT) 10

методы поиска в больших объёмах данных могут быть использованы две стратегии: – рассмотреть только методы поиска в больших объёмах данных могут быть использованы две стратегии: – рассмотреть только часть базы данных, которая с большей вероятностью содержит результат. Как правило, это методы основаны на кластеризации баз данных. К некоторым из этих методов относятся: DBIN, CLINDEX, PCURE; – расщепление базы данных на несколько частей с меньшими размерами и поиска в каждой из них. Здесь можно выделить два основных подхода: 1. Случайное линейное отображение (представителем такого подхода является Med. Rank, которая использует B+-деревья для индексации каждого произвольного отображения базы данных, и Pv. S-индекс, который состоит из комбинации итерационных прогнозов и кластеризации); 2. Контекстно-зависимое хеширование, которое основано на множестве контекстно-зависимых функций хеширования. 11

Пространственно-временные методы поиска В зависимости от рассматриваемого временного интервала по отношению к настоящему моменту Пространственно-временные методы поиска В зависимости от рассматриваемого временного интервала по отношению к настоящему моменту пространственно-временные методы доступа делятся на: • индексирование прошлого, т. е. траектории изменения положения объекта; • индексирование настоящего, т. е. текущего положения с возможностью прогнозирования будущего; • индексирование прошлого и настоящего с возможностью прогнозирования будущего (обобщенные структуры данных). 12

Поиск данных по ключу в структурированной информации Поиск осуществляется путём сравнения заданного ключа с Поиск данных по ключу в структурированной информации Поиск осуществляется путём сравнения заданного ключа с ключом в записи таблиц 13

Что мы ищем? • В качестве объекта поиска могут быть записи, таблицы, файлы, связанный Что мы ищем? • В качестве объекта поиска могут быть записи, таблицы, файлы, связанный список, дерево или даже граф. • С каждой записью ассоциируется некоторый ключ, который используется для того, чтобы отличить одну запись от другой. • Соответствие между записью и ключом может быть простым или сложным 14

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

 • Никакие две записи в файле не имеют одинакового значения ключа. Такой ключ • Никакие две записи в файле не имеют одинакового значения ключа. Такой ключ называется первичным ключом. Например, если файл хранится как некоторый массив, то индекс некоторого элемента в этом массиве является уникальным внешним ключом для этого элемента. • Любое поле записи может служить в качестве ключа в каком - либо конкретном приложении. Поэтому ключи не всегда должны быть уникальными. Такой ключ называется вторичным ключом. – Например, если в некотором файле с фамилиями и адресами название города используется как ключ для некоторого поиска, то он, возможно, не будет уникальным, так как в файле могут содержатся две записи с названием одного и того же города. • Некоторые из алгоритмов поиска предполагают наличие уникальных ключей, а другие позволяют использовать повторяющиеся ключи. При программировании это надо учитывать. 16

Запросы • В общем случае полагается, что в каждой записи содержится несколько ключей, и Запросы • В общем случае полагается, что в каждой записи содержится несколько ключей, и необходимо найти все записи с некоторыми значениями этих ключей. • Определение требуемых записей называется запросом (query). Обычно запросы подразделяются на следующие три типа: 17

Виды запросов • Простой запрос, определяющий конкретное значение некоторого ключа, – • например Виды запросов • Простой запрос, определяющий конкретное значение некоторого ключа, – • например "СПЕЦИАЛИЗАЦИЯ=МАТЕМАТИКА" или "МЕСТОЖИТЕЛЬСТВО. ГОРОД=БРЯНСК” Запрос диапазона, запрашивающий определенный диапазон значений некоторого ключа, – • например "ЦЕНА < $18. 00" или "21 < ВОЗРАСТ < 23". Логический запрос, состоящий из запросов предыдущих типов, скомбинированных при помощи логических операций AND, OR, NOT, – например "(КУРС = ВТОРОКУРСНИК) AND (МЕСТОЖИТЕЛЬСТВО. ГОРОД=БРЯНСК)AND NOT ((СПЕЦИАЛИЗАЦИЯ=МАТЕМАТИКА) OR (СПЕЦИАЛИЗАЦИЯ = СТАТИСТИКА)) ". 18

Три типа алгоритмов поиска • Алгоритм поиска воспринимает некоторый ключ “а” и пытается идентифицировать Три типа алгоритмов поиска • Алгоритм поиска воспринимает некоторый ключ “а” и пытается идентифицировать некоторую запись, ключ которой равен “а”. • алгоритмом поиска и вставки новую запись с некоторым аргументом в качестве ключа • алгоритм вставки вставить некоторую запись с первичным ключом key в некоторый файл без первоначального поиска другой записи с этим же самым ключом 19

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

Классификация методов поиска по ключу ПП в массиве ИПП с помощью индексов первого и Классификация методов поиска по ключу ПП в массиве ИПП с помощью индексов первого и второго уровней Индексно-последовательный поиск (ИПП) Хеширование ПП в связной структуре Splay trees Последовательный • поиск (ПП) методы поиска по ключу Поиск по вторичным ключам Поиск во внешней памяти Интерполяционный поиск Бинарный поиск Логарифмический поиск в статических таблица Цифровой поиск Trieдеревья Patricia -деревья Логарифмический поиск в динамических таблицах AVLдеревья ВВдеревья RBдеревья 21

Последовательный поиск • Простейшей формой поиска является последовательный поиск. • Этот поиск применяется к Последовательный поиск • Простейшей формой поиска является последовательный поиск. • Этот поиск применяется к структурам типа – массива, – связанного списка – или расширяющихся деревьев (splay trees). • Как правило, последовательный поиск используется для неупорядоченных структур данных. 22

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

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

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

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

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

Особенности поиска в упорядоченной структуре. • для обнаружения записи с заданным ключом в не Особенности поиска в упорядоченной структуре. • для обнаружения записи с заданным ключом в не отсортированном списке надо n сравнений, а в отсортированном (n+1)/2 сравнений. • Если структура данных упорядочена, то существуют несколько методов увеличения эффективности поиска. • Например, если и структура данных и список запросов отсортированы, то может быть выполнен последовательный поиск с одновременным продвижением и по структуре, и по списку запросов. Причем каждый последующий поиск начинается с конца предыдущего поиска. 28

Индексно - последовательный поиск ключ запись 8 kindex pindex 14 0 26 100 … Индексно - последовательный поиск ключ запись 8 kindex pindex 14 0 26 100 … 200 121 300 157 400 178 500 … 600 Суть метода - в дополнение к отсортированному файлу формируется некоторая вспомогательная таблица, называемая индексом. 257 277 289 … 485 Если индекс имеет размер составляющий одну десятую от размера файла, то каждая десятая запись представлена первоначально в индексе. 489 498 … 601 605 633 … 29

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

Индекс второго уровня ключ запись 8 kindex pindex 14 0 26 0 100 … Индекс второго уровня ключ запись 8 kindex pindex 14 0 26 0 100 … 200 121 400 300 157 400 178 500 … 600 Если структура данных является такой большой, что даже использование индекса не дает достаточной эффективности, то может быть использован индекс 2 го уровня. 257 277 289 … 485 489 498 … Индекс второго уровня действует как индекс для первичного индекса, который указывает на элементы в последовательной структуре данных. 601 605 633 … 31

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

Логарифмический поиск в статических структурах • Почему логарифмический поиск? – Потому что этот поиск Логарифмический поиск в статических структурах • Почему логарифмический поиск? – Потому что этот поиск использует древовидные структуры, а алгоритмы на основе этих структур, имеют логарифмическую сложность О(logn) • Почему в статических структурах? – Потому что используемые структуры не изменяются в процессе поиска 33

Логарифмический поиск в статических структурах Здесь приводятся основные методы и используемые структуры: Бинарный поиск Логарифмический поиск в статических структурах Здесь приводятся основные методы и используемые структуры: Бинарный поиск Оптимальные деревья бинарного поиска Почти оптимальные деревья бинарного поиска Цифровой поиск Trie-деревья Patricia-деревья Многопутевые Trie-деревья и другие 34

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

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

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

Особенности использования бинарного поиска Каждое сравнение в бинарном поиске уменьшает число возможных кандидатов в Особенности использования бинарного поиска Каждое сравнение в бинарном поиске уменьшает число возможных кандидатов в два раза. Следовательно максимальное число сравнений ключа равно log 2 n. • Бинарный поиск может быть использован совместно с индексно- последовательной структурой данных. • К сожалению, алгоритм бинарного поиска может быть использован только для упорядоченного массива. 38

Сравнение бинарного поиска с методом деления пополам • Затраты времени на поиск по бинарному Сравнение бинарного поиска с методом деления пополам • Затраты времени на поиск по бинарному дереву поиска такие же, как и затраты времени на поиск методом деления пополам. • Если данные статичны, более выгодным можно считать метод поиска делением таблицы пополам, поскольку программа при этом оказывается сравнительно простой; • в представлении такой структуры данных также особой сложности нет. 39

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

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

при выполнении итерации поиска между элементами А [l] (крайним слева) и А [r] (крайним при выполнении итерации поиска между элементами А [l] (крайним слева) и А [r] (крайним справа), алгоритм предполагает, что значения в массиве растут линейно (отличие от линейности может влиять на эффективность, но не на корректность данного алгоритма). В соответствии с этим предположением, значение v ключа поиска сравнивается с элементом, индекс которого вычисляется (с округлением) как координата х точки на прямой, проходящей через (l, А [l]) и (r, А [r]), координата у которой равна значению v (см. рис). 42

Суть интерполяционного поиска Логика, лежащая в основе этого метода, проста. Мы знаем, что значения Суть интерполяционного поиска Логика, лежащая в основе этого метода, проста. Мы знаем, что значения массива возрастают (точнее говоря, не убывают) от А [l] до А [r], но не знаем, как именно. Пусть это возрастание — линейное (простейшая из возможных функциональных зависимостей); в таком случае вычисленное по формуле значение индекса — ожидаемая позиция элемента со значением, равным v. 43

Математическая интерпретация • Записав стандартное уравнение для прямой, проходящей через две точки (l, А Математическая интерпретация • Записав стандартное уравнение для прямой, проходящей через две точки (l, А [l]) и (r, А [r]), заменив в нем у на v и решая его относительно х, получим формулу. После сравнения v с А[x] алгоритм либо прекращает работу (если они равны), либо продолжает поиск тем же способом среди элементов с индексами либо от l до x -1, либо от х + 1 до r, в зависимости от того, меньше ли v значения А [х] или больше. 44

Пример Если взять последовательность с линейным возрастанием • 1, 2, 3, 4, 5, 6, Пример Если взять последовательность с линейным возрастанием • 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, • то для поиска заданного ключа методом бинарного поиска необходимо четыре сравнения, а методом интерполяционного поиска одно сравнение. • Если взять случайно возрастающую последовательность • 9, 17, 25, 33, 34, 35, 49, 67, 69, 85, 86, 94, 96, 105, 106, 108, • то для поиска заданного ключа (например Х=33) методом бинарного поиска требуется 4 сравнения, а методом интерполяционного поиска 3 сравнения. 45

Эффективность интерполяционного поиска • Анализ показывает, что интерполяционный поиск в среднем требует менее log Эффективность интерполяционного поиска • Анализ показывает, что интерполяционный поиск в среднем требует менее log 2 n+1 сравнений ключей при поиске в списке из n случайных значений. • Эта функция растет настолько медленно, что для всех реальных практических значений n ее можно считать константой. • Однако в наихудшем случае интерполяционный поиск вырождается в последовательный, который рассматривается как наихудший из возможных (почему? ). 46

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

Цифровой поиск • Деревья цифрового поиска (digital search trees - DST) представляют собой nарные Цифровой поиск • Деревья цифрового поиска (digital search trees - DST) представляют собой nарные деревья, ветвление в которых выполняется не в соответствии с результатом сравнения полных ключей, а в соответствии с выбранными разрядами ключа. 48

Пример 180, 195, 1867, 768, 207, 2174, 21749, 27, 307, 368; Если ключи состоят Пример 180, 195, 1867, 768, 207, 2174, 21749, 27, 307, 368; Если ключи состоят из символов алфавита, то каждая буква определяет некоторую ветвь дерева. Специальный символ в конце каждого листа должен содержать указатель на запись 49

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

Trie-деревья (нагруженные деревья) • Обычно в узлах дерева поиска хранятся значения ключей, но в Trie-деревья (нагруженные деревья) • Обычно в узлах дерева поиска хранятся значения ключей, но в случае, когда ключами являются достаточно короткие слова, можно рассматривать каждый ключ как список букв, а все списки вместе—как дерево поиска, структура которого несколько отличается от рассмотренных ранее. • В этой структуре узлу (i+1)-го уровня ставится в соответствие i-я буква слова, так что каждый узел содержит только один символ. • Методы поиска по такому дереву часто весьма экономичны как по памяти, так и по времени 51

Пример Trie-дерева • triе-деревья представляют собой структуры данных, применение которых не уступает по эффективности Пример Trie-дерева • triе-деревья представляют собой структуры данных, применение которых не уступает по эффективности методам хеширования. 52

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

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

Patricia – деревья • Основанный на trie-деревьях поиск обладает двумя недостатками: – однонаправленное ветвление Patricia – деревья • Основанный на trie-деревьях поиск обладает двумя недостатками: – однонаправленное ветвление приводит к созданию дополнительных узлов в trie-дереве, что кажется необязательным; – в trie-дереве присутствуют два различных типа узлов, что приводит к усложнениям. • В 1968 г. Моррисон (Morrison) изобрел способ ликвидации обоих проблем путем применения метода, который назвал patricia (practical algorithm to retrieve information coded in alphanumeric - практический алгоритм получения информации, закодированной алфавитно - цифровыми символами). • Точный анализ среднего случая patricia-дерева сложен; из него следует, что в среднем в patricia-дереве требуется на одно сравнение меньше, чем в стандартном trieдереве 55

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

 • Логарифмический поиск в динамических таблицах Случайные деревья бинарного поиска AVL-деревья ВВ-деревья RB-деревья • Логарифмический поиск в динамических таблицах Случайные деревья бинарного поиска AVL-деревья ВВ-деревья RB-деревья В-деревья • Поиск осуществляется по алгоритмам 57

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