Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К2_Допматериалы_15апр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.99 Mб
Скачать

Оценка затрат на поиск элемента

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

  • НЕУПОРЯДОЧЕННЫЙ СПИСОК (N узлов)

рис. 17. Неупорядоченный список

Длина пути

Минимальная

Максимальная

Средняя

Удачный поиск

Неудачный поиск

  • УПОРЯДОЧЕННЫЙ СПИСОК (N узлов)

рис. 18. Упорядоченный список

Длина пути

Минимальная

Максимальная

Средняя

Удачный поиск

Неудачный поиск

КАК УСКОРИТЬ ПОИСК?

  1. Разбить список на несколько подсписков (см. тему “Хеширование”)

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

рис. 19. Упорядоченный двусвязный список

рис. 20. Узлы списка с измененными полями-ссылками

рис. 21. Бинарное дерево

Полученная структура называется деревом (рис. 21). Данное дерево является бинарным (каждый узел содержит 2 поддерева), идеально сбалансированным и деревом поиска (см. тему “Деревья”).

Пусть N - число узлов дерева, d - степень дерева (максимальное число поддеревьев для узлов дерева, в примере d=2), h – его высота (максимальное число ссылок, которое надо пройти, двигаясь к наиболее удаленному элементу). Тогда максимальное число узлов N, содержащихся в дереве, высотой h и степени d будет равно:

Для бинарного дерева (d=2): , отсюда

В данном случае высота вершины h соответствует числу просмотренных ключей. Отсюда:

  • Минимальная длина пути при поиске в дереве = 1 (значение в корне)

  • Максимальная длина пути при поиске в дереве находится в диапазоне от (дерево идеально сбалансировано, рис. 21) до N (дерево вырождается в линейный список)

  • Средняя длина пути: (вывод формулы - факультативно)

(см. 681.3 К53 Кнут Д. Искусство Программирования. Т.3. Сортировка и поиск. - М. Вильямс, 2003, стр. 446)