24.09.2008Деревья1 Структуры и алгоритмы обработки данных, 1 Лекция 5 ДЕРЕВЬЯ 1.Определения дерева, леса, бинарного дерева. Скобочное представление 2.Спецификация.

Презентация:



Advertisements
Похожие презентации
Деревья1 Структуры и алгоритмы обработки данных, 1 Лекция 6 ДЕРЕВЬЯ (продолжение) 1.Нерекурсивные процедуры обхода бинарных деревьев 2.Представления.
Advertisements

Рекурсивная обработка списков1 Структуры и алгоритмы обработки данных, 1 Лекция 3 Рекурсивная обработка списков 1.Представление и реализация.
ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра ПО ЭВМ, ХНУРЭ Компьютерная.
1 БАЗЫ ДАННЫХ СТРУКТУРЫ ДАННЫХ. 2 МОДЕЛИ СТРУКТУР ДАННЫХ Линейная структура (списки и кольца) Линейная структура (списки и кольца) Иерархическая структура.
Дерево это связный ациклический граф. Связность означает наличие путей между любой парой вершин, ацикличность отсутствие циклов и то, что между парами.
Стек, очередь, дек1 Структуры и алгоритмы обработки данных, 1 Лекция 4 Линейные СД Стек, очередь, дек.
Лекция 8 Красно-черные деревья План лекции 1.Определение красно-черного дерева и его высота. 2.Вращения 3.Вставка элемента, восстановление структуры дерева.
Задание бинарных деревьев с помощью массивов Обходы деревьев.
Древовидная модель оказывается довольно эффективной для представления динамических данных с целью быстрого поиска информации. Деревья являются одними из.
Информатика ЕГЭ Уровень А5. Вариант 1 Определите значения переменных a, b, c после выполнения следующего фрагмента программы: a:=5; b:=1; a:=a+b; if a>10.
1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
Информатика ЕГЭ Уровень-А8. Вариант 1 Укажите логическое выражение, равносильное данному: (А^B) v ((¬B ^ ¬A) v A). 1) (A^ B) v (¬B) 2) (A ^ B) v (¬A)
Тренировочное тестирование-2008 Ответы к заданиям КИМ Часть I.
Деревья, преобразование выражений Лекция 11. Время, затрачиваемое алгоритмом, как функция от размера задачи, называется временной сложностью. Поведение.

Двоичные деревья поиска. Очередь с приоритетами Федор Царев Спецкурс «Олимпиадное программирование» Лекция , Санкт-Петербург, Гимназия.
1 Конечные и бесконечные множества Конечное множество- множество, состоящее из конечного числа элементов. Бесконечное множество – непустое множество, не.
Алгоритмы и структуры данных Зайцев Валентин Евгеньевич.
ХНУРЭ, кафедра ПО ЭВМ, Тел , Лекции Н.В. Белоус Факультет компьютерных наук Кафедра ПО ЭВМ, ХНУРЭ Компьютерная.
Маршрутный лист «Числа до 100» ? ? ?
Транксрипт:

Деревья1 Структуры и алгоритмы обработки данных, 1 Лекция 5 ДЕРЕВЬЯ 1.Определения дерева, леса, бинарного дерева. Скобочное представление 2.Спецификация дерева, леса, бинарного дерева 3.Естественное соответствие бинарного дерева и леса 4.Обходы бинарных деревьев и леса

Деревья2 В курсе «Дискретная математика»: Дерево – связный граф, не содержащий циклов. 1. Определения дерева, леса, бинарного дерева. Скобочное представление

Деревья3 a dbc hjfg k ei Дерево – конечное множество Т, состоящее из одного или более узлов, таких, что а) имеется один специально обозначенный узел, называемый корнем данного дерева; б) остальные узлы (исключая корень) содержатся в m 0 попарно не пересекающихся множествах Т 1, Т 2,..., Т m, каждое из которых, в свою очередь, является деревом. Деревья Т 1, Т 2,..., Т m называются поддеревьями данного дерева. Определение (рекурсивное)

Деревья4 Дерево T = (корень, T 1, T 2, …, T m ) Терминология: узел, лист, отец, сын, брат, предок, потомок Уровень узла (рекурсивно): 1)корень имеет уровень 1; 2)другие узлы имеют уровень, на единицу больший их уровня в содержащем их поддереве этого корня. где T i – поддерево корня дерева T, такое, что a T i. a dbc hjfg k ei

Деревья5 Если в определении дерева существен порядок перечисления поддеревьев Т 1, Т 2,..., Т m, то дерево называют упорядоченным и говорят о «первом» (Т 1 ), «втором» (Т 2 ) и т. д. поддеревьях данного корня (старший брат и т.п.). В терминологии теории графов это «конечное ориентированное (корневое) упорядоченное дерево». Лес – это множество (обычно упорядоченное), состоящее из некоторого (быть может, равного нулю) числа непересекающихся деревьев. Тогда пункт б) определения дерева: б) узлы дерева, за исключением корня, образуют лес. Дерево T = (корень, лес поддеревьев)

Деревья6 Представление дерева: a а b i b i j j c ch h d de e f fk k g g а б а – в виде уступчатого списка; б – в виде «упрощенного» уступчатого списка

Деревья7 Скобочное представление дерева и леса: ::= пусто |, ::= ( ). ( 0 a ( 1 b ( 2 i 2 ) ( 2 j 2 ) 1 ) ( 1 c ( 2 h 2 ) 1 ) ( 1 d ( 2 e 2 ) ( 2 f ( 3 k 3 ) 2 ) ( 2 g 2 ) 1 ) 0 ) a dbc hjfg k ei

Деревья8 Бинарные деревья Бинарное дерево конечное множество узлов, которое либо пусто, либо состоит из корня и двух непересекающихся бинарных деревьев, называемых правым поддеревом и левым поддеревом. a b a b (a (b ) ) ( a (b )) Скобочное представление бинарного дерева (БД): ::= |, ::=, ::= ( ).

Деревья9 (a (b (d Λ (h Λ Λ)) (e Λ Λ)) (c (f (i Λ Λ) (j Λ Λ)) (g Λ (k (l Λ Λ) Λ)))) Правила упрощения скобочной записи БД : 1. ( ) ( ), 2. ( ) ( ) (a (b (d (h)) (e)) (c (f (i) (j)) (g (k (l))))) a cb fd h e j g ik l

Деревья10 2. Спецификация дерева, леса, бинарного дерева Tree of α = Tree (α) Tree (α) ::= ( Корень(α), Forest (α) ) Forest (α) ::= L_list (Tree (α)) Базовые операцииАксиомы 1) Root: Tree α; 2) Listing: Tree Forest; 3) ConsTree: α Forest Tree А 1 ) Root (ConsTree (u, f)) = u; А 2 ) Listing (ConsTree (u, f)) = f; А 3 ) ConsTree (Root (t), Listing (t)) = t, ( u: α; f: Forest (α); t: Tree (α))

Деревья11 Функциональная спецификация структуры данных бинарного дерева BinaryTree (α) BT (α) Базовые функцииАксиомы 1) Root: NonNullBT α; 2) Left: NonNullBT BT; 3) Right: NonNullBT BT; 4) ConsBT: α BT BT NonNullBT; 5) Null: BT Boolean; 6) : BT A 1 ) Null ( ) = true; A 1 ') Null (b) = false; A 2 ) Null (ConsBT (u, b1, b2)) = false; A 3 ) Root (ConsBT (u, b1, b2)) = u; A 4 ) Left (ConsBT (u, b1, b2)) = b1; A 5 ) Right (ConsBT (u, b1, b2)) = b2; A 6 ) ConsBT (Root (b), Left (b), Right (b)) = b ( u: α, b: NonNullBT (α), b1, b2: BT (α))

Деревья12 Естественное соответствие бинарного дерева и леса Представление леса бинарным деревом: Пусть лес F типа Forest задан как список деревьев T i типа Tree (для i 1..m): F = (Т 1 Т 2... Т m ). Head (F) = Т 1 Tail (F) = (Т 2... Т m ). Head (F) = (Root (Head (F)), Listing (Head (F)) Лес F = совокупность трех частей: 1) корня первого дерева Root (Head (F)), 2) леса поддеревьев первого дерева Listing (Head (F)), 3) леса остальных деревьев Tail (F).

Деревья13 … Т1Т1 Т2Т2 Т3Т3 ТmТm лес F = (Т 1 Т 2... Т m ). БД(F)

Деревья14 = B(F) B(T 1 \r 1 ) r1r1 B(T 2 \r 2 ) B(T 3 \r 3 ) B(T m \r m ) r2r2 r3r3 rmrm r i = Root(T i )

Деревья15 Бинарное дерево B (F), представляющее лес F: B (F) if Null (F) then else ConsBT (Root (Head (F)), B (Listing (Head (F))), B (Tail (F))).

Деревья16 «Геометрическая» интерпретация a b e c d k i f g j a b e c d k i fg j a be c d ki f g j

Деревья17 Преобразование БД лес F (B) if Null (B) then Nil else Cons (ConsTree (Root (B), F (Left (B))), F (Right (B))). Самостоятельно дать «геометрическую» интерпретацию и графическое изображение преобразования БД лес в общем случае

Деревья18 procedure обходКЛП (b: BTree); {прямой} begin if not Null (b) then begin посетить (Root (b)); обходКЛП (Left (b)); обходКЛП (Right (b)); end end {обходКЛП}; 4. Обходы бинарных деревьев и леса Обходы БД

Деревья19 procedure обходЛКП (b: BTree);procedure обходЛПК (b: BTree); {обратный}{концевой} begin if not Null (b) then begin обходЛКП (Left (b)); обходЛПК (Left (b)); посетить (Root (b)); обходЛПК (Right (b)); обходЛКП (Right (b)); посетить ( Root (b)); end end{обходЛКП};end{обходЛПК}

Деревья20 Варианты терминологии 1) КЛП, ЛКП, ЛПК [14]; 2) прямой, обратный, концевой [10]; 3) прямой, симметричный, обратный [13]; 4) сверху вниз, слева направо, снизу вверх [5], [6]; 5) префиксный (PreOrder), инфиксный (InOrder), постфиксный (PostOrder) [5], [6].

Деревья21 Обход бинарного дерева, представляющего арифметическое выражение с бинарными операциями Арифметическое выражение (a + b) * c d / (e + f * g) – */ +c ba d+ *e fg 1) КЛП префиксная запись: * + a b c / d + e * f g ; 2) ЛКП инфиксная запись (без скобок): a + b * c d / e + f * g ; 3) ЛПК постфиксная запись: a b + c * d e f g * + /.

Деревья22 Обходы леса Прямой порядок: а) посетить корень первого дерева; б) пройти поддеревья первого дерева (в прямом порядке); в) пройти оставшиеся деревья леса (в прямом порядке). procedure PreOrder (F: Forest); {прямой} begin if not Null (F) then begin посетить (Root (Head (F)); PreOrder (Listing (Head (F))); PreOrder (Tail (F)); end end{PreOrder}

Деревья23 … Т1Т1 Т2Т2 Т3Т3 ТmТm лес F = (Т 1 Т 2... Т m ). БД(F) Соответствие обходов леса и бинарного дерева

Деревья24 Обратный порядок: а) пройти поддеревья первого дерева (в обратном порядке) Listing (Head (F)) ; б) посетить корень первого дерева Root (Head (F)) ; в) пройти оставшиеся деревья (в обратном порядке) Tail (F). Концевой порядок: а) пройти поддеревья первого дерева (в концевом порядке) Listing (Head (F)) ; б) пройти оставшиеся деревья (в концевом порядке) Tail (F) ; в) посетить корень первого дерева Root (Head (F)).

Деревья25 Примеры a b c d e f g h i j k l m n a d b e g c j c f j c h i k i l m n Лес: БД:

Деревья26 КЛП a b c d e f g h i j k l m n a d b e g c j f c h i k l m n (a (d) (e (j) (k)) (f (l))) (b (g) (h)) (c (i (m) (n))) КЛП: a d e j k f l b g h c i m n (a (d (e (j (k)) (f (l)) (b (g (h)) (c (i (m (n))))))

Деревья27 Замечания 1.Обход в глубину 2.Порядок престолонаследования (см. также - Агата Кристи)

Деревья28 ЛКП a b c d e f g h i j k l m n a d b e g c j f c h i k l m n (a (d) (e (j) (k)) (f (l))) (b (g) (h)) (c (i (m) (n))) ЛКП: d j k e l f a g h b m n i c (a (d (e (j (k)) (f (l)) (b (g (h)) (c (i (m (n))))))

Деревья29 Замечания 1.Обход БД слева направо 2.Обход в лесу – снизу вверх

Деревья30 ЛПК a b c d e f g h i j k l m n a d b e g c j f c h i k l m n (a (d) (e (j) (k)) (f (l))) (b (g) (h)) (c (i (m) (n))) ЛПК: k j l f e d h g n m i c b a (a (d (e (j (k)) (f (l)) (b (g (h)) (c (i (m (n))))))

Деревья31 КОНЕЦ ЛЕКЦИИ