1

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

В двоичном дереве поиск одних элементов может происходить чаще, чем других, то есть существуют вероятности pk поиска k

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

Пусть дано 2n + 1 вероятностей p1, p2, …, pn, q0, q1, …, qn, где pi – вероятность того, что аргументом поиска является ki элемент; pi – вероятность того, что аргумент поиска лежит между вершинами ki и ki + 1; q0 – вероятность того, что аргумент поиска меньше, чем значение элемента k1; qn – вероятность того, что аргумент поиска больше, чем kn

. Тогда цена дерева поиска C будет определяться следующим образом:

C=∑j=1npj([уровень узла]j+1)+∑k=1nqk([уровень листа]k).

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

Существует подход построения оптимальных деревьев поиска, при котором элементы вставляются в порядке уменьшения частоты обращений к ним, что дает в среднем неплохие деревья поиска. Однако этот подход может дать вырожденное дерево поиска, которое будет далеко не оптимальным. Еще один подход состоит в выборе корня k таким образом, чтобы максимальная сумма вероятностей для вершин левого или правого поддерева была настолько мала, насколько это возможно. Такой подход также может оказаться плохим в случае выбора в качестве корня элемента с малым значением pk

.

Существуют алгоритмы, которые позволяют построить оптимальное дерево поиска. К ним относится, например, алгоритм Гарсия – Воча. Однако такие алгоритмы имеют временную сложность порядка O(n2). Таким образом, создание оптимальных деревьев поиска требует больших накладных затрат, что не всегда оправдывает выигрыш при быстром поиске.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *