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

          

Логарифмический поиск в статических таблицах


Мы говорим о логарифмическом времени поиска, как только возникает возможность за время

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

имен, к задаче поиска в таблице, содержащей не более

Логарифмический поиск в статических таблицах
имен, где
Логарифмический поиск в статических таблицах
- константа. В этом случае время
Логарифмический поиск в статических таблицах
, требующееся для поиска в таблице с
Логарифмический поиск в статических таблицах
именами, удовлетворяет рекуррентному соотношению

Логарифмический поиск в статических таблицах

решение, которого имеет вид

Логарифмический поиск в статических таблицах

где

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

до

Логарифмический поиск в статических таблицах
.

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

Логарифмический поиск в статических таблицах
до
Логарифмический поиск в статических таблицах

за время, не зависящее от

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

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



Содержание раздела