Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭ_У_Студентам / ГЭ-У2_Распечатки.doc
Скачиваний:
38
Добавлен:
05.06.2015
Размер:
2.59 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)

  • ТЕМА. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ. ДЕРЕВЬЯ. ВОПРОСЫ 4,5

  • Дословное цитирование распечатки на ГОСах не приветствуется

Следующими цветами помечено:

  • То, что не требуется к ГОСам

  • То, что пригодится при ответе

  • Комментарии и ссылки на книгу Н.Вирт "Алгоритмы и структуры данных"- СПб "Невский диалект", 2001 г.

CМ. ТАКЖЕ:

681.3 В52 Вирт Н. Алгоритмы и структуры данных.

004 М27 Марковский М.В., Панферов В.В. Структуры данных (деревья): Конспект лекций. М.:МИФИ, 2003.

Деревья

  • Дерево - пустая структура либо узел типа T, с которым связано конечное число древовидных структур (поддеревьев) с базовым типом T.

или

  • Дерево- конечное множествоS, состоящее из одного или более узлов, которое обладает следующими свойствами:

  • в множестве содержится один помеченный узел - корень (Root);

  • все остальные узлы множества содержатся в mнепересекающихся подмножествах, ,... (m>=0), каждое из которых также является деревом.

a)

b)

c)

(a(b,c(d,e(g,h,k),f)))

Рис. 1. Формы представления деревьев:

a) в виде графа,

b) с помощью вложенных множеств,

c) с помощью вложенных скобок.

  • ОПИСАНИЕ

TYPE

Tree=^Node

Node=record

Key: Char; {информационное поле записи - любого типа}

t1[,t2[,…[,tm]…]]: Tree; {поля-ссылки на поддеревья}

End;

  • ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ:

  • [Непосредственный] Потомок

Узел Y, находящийся непосредственно под узлом X (рис.1: узлы b, c - потомки узла a)

  • [Непосредственный] Предок

Узел X, находящийся непосредственно над узлом Y (рис.1: узел a - предок узлов b и c)

  • Степень узла

Число непосредственных потомков (поддеревьев) для данного узла

(рис.1: степень узла a равна 2, узла b - 0, узла c - 3).

  • Степень дерева

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

  • Лист

Узел дерева, не имеющий потомков (узел со степенью = 0) (рис.1- листья b, d, f, g, h, k)

  • Внутренний узел (развилка дерева)

Узел дерева, имеющий потомков (узел, степень которого больше 0) (рис.1- внутренние узлы a, c, e).

  • Длина пути к вершине X

Число ветвей (ребер), которые нужно пройти, двигаясь к вершине X (длина пути до корня равна 0 [Н. Вирт, 1989] или 1 [Н. Вирт, 1985]).

  • Уровень вершины X

Длина пути до вершины X (узел на уровне i имеет длину пути i), (рис. 1a: вершина a - на уровне 0 (корень); b, c - на уровне 1; d, e, f - на уровне 2; g, h, k - на уровне 3).

  • Высота (глубина) дерева

Максимальный уровень элемента дерева / удаленность от корня вершины с максимальным уровнем (высота дерева на рис. 1a равна 3).

  • Длина пути дерева

Сумма длин путей до всех узлов дерева (рис. 1а: длина [внутреннего] пути: 0*1+1*2+2*3+3*3=17, корень на уровне 0). Различия между длиной внутреннего и внешнего пути дерева см. в книге Н. Вирта.

  • Ориентированное дерево

Дерево, в котором порядок поддеревьев не существенен. На рис. 2 ориентированное дерево a)эквивалентно деревуb).

  • Упорядоченное дерево

Дерево, расположение ветвей в котором упорядочено для каждого узла (на рис. 2 показаны два различных упорядоченных дерева).

Рис. 2. Примеры бинарных деревьев

  • Линейный список можно представить в виде древовидной структуры, каждый узел которой имеет не более 1 поддерева.