- •0Міністерство освіти і науки, молоді та спорту україни
- •«Теорія алгоритмів» Методичні вказівки
- •2.1 Види алгоритмів
- •2.2 Організація лінійних алгоритмів .
- •2.3 Організація розгалужень в са
- •2.4 Організація циклів.
- •Розділ 3. Моделі обчислень
- •3.1 Скінченний автомат, як модель перетворювача дискретної інформації
- •3.2 Визначення та властивості скінченого автомату
- •3.3 Автомат Мілі
- •3.4 Автомат Мура
- •3.5 Машина Тюрінга.
- •3.5.1 Історія
- •3.5.2 Визначення машини т.
- •3.5.3 Можливості машини Тюрінга
- •3.5.4 Приклади
- •4.1 Необхідність структурування даних. Поняття Структури даних
- •4.2 Послідовне і зв’язне розподілення даних в пам’яті еом.
- •4.2.2 Зв'язаний розподіл в пам'яті.
- •4.3 Лінійні та нелінійні структури даних.
- •4.3.1 Лінійні струтури даних
- •Однозв'язні списки
- •Двохзв'язні списки
- •4.3.2 Нелінійні структури даних
- •4.4 Статичні структури даних.
- •4.5 Уявлення в пам’яті машини множин; операції над множинами. Уявлення графів. Дерева і бінарні дерева. Характеристики дерев. Ліс. Уявлення бінарних дерев. Перехід від дерева до бінарного дерева.
- •4.5.1 Множини. Опис множин, операції над множинами.
- •4.5.2 Поняття графа як структури даних.
- •Застосування графів
- •4.5.3 Поняття дерева як структури даних
- •4.5.4 Бінарне дерево
- •Перехід від дерева до бінарного дерева
- •4.6 Порядок обходу вузлів дерева: обернений і внутрішній. Властивості обходу вузлів дерева: прямий, обернений і внутрішній. Властивості обходу дерев. Порядок та властивості обходу дерева.
- •5.1 Предмет теорії комбінаторних алгоритмів (обчислювань)
- •5.2 Правила множення і суми для знаходження
- •5.3 Види задач підрахунку числа елементів множин
- •1. Метод рекурентних співвідношень.
- •2. Метод включення і виключення.
- •5.4 Елементи комбінаторики. Набори: набори з повторюванням; специфікація набору
- •Розділ 6 Ефективність алгоритмів
- •6.1. Характеристики алгоритмів.
- •6.2 Ємна та часова складність. Поліноміальна зв’язність.
- •6.3 Класи p та np
4.6 Порядок обходу вузлів дерева: обернений і внутрішній. Властивості обходу вузлів дерева: прямий, обернений і внутрішній. Властивості обходу дерев. Порядок та властивості обходу дерева.
Обхід бінарного дерева передбачає відвідування усіх вершин бінарного дерева, при цьому кожна з вершин відвідується тільки один раз.
Існують три види таких обходів, кожний з яких визначається рекурсивно:
прямий порядок (англ. preorder) наступної послідовності:
відвідати корінь;
відвідати ліве піддерево;
відвідати праве піддерево.
Тобто, в такому порядку обходу кожна вершина відвідується до того, як будуть відвідані її діти.
зворотний порядок (англ. postorder) наступної послідовності:
відвідати ліве піддерево;
відвідати праве піддерево;
відвідати корінь.
Тобто, в такому порядку кожна вершина відвідується лише після того, як будуть відвідані її діти.
центрований (центральний) порядок (англ. inorder) наступної послідовності:
відвідати ліве піддерево;
відвідати корінь;
відвідати праве піддерево.
В такому порядку кожна вершина відвідується між відвіданням лівої та правої дитини. Такий порядок особливо часто застосовується в бінарних деревах пошуку, тому що дає можливість обходу вершин у порядку збільшення їхніх порядкових номерів.
Приклад
Для цього бінарного дерева,
Прямий порядок: 2, 7, 2, 6, 5, 11, 5, 9, 4.
Зворотній порядок: 2, 5, 11, 6, 7, 4, 9, 5, 2.
Центрований (центральний) порядок: 2, 7, 5, 6, 11, 2, 5, 4, 9.
Порядок та властивості обходу вузлів дерева.
Є три операції обходу вузлів дерева, що відрізняються порядком обходу вузлів.
Перша операція – INFIX_TRAVERSE – дозволяє обійти всі вузли дерева в порядку зростання ключів і застосувати до кожного вузла задану користувачем функцію call_back_function. Ця функція працює тільки з парою (K,V), яка зберігається у вузлі. Операція INFIX_TRAVERSE реалізується рекурсивно: спочатку вона запускає себе для лівого піддерева, потім запускає дану функцію для корення , далі запускає себе для правого піддерева.
Infix_traverse ( call_back_function ) - обійти все дерево, слідуючи порядку (ліве піддерево, корінь, праве піддерево).
Prefix_traverse ( call_back_function ) - обійти все дерево, слідуючи порядку (корінь, ліве піддерево, праве піддерево).
Postfix_traverse ( call_back_function ) - обійти все дерево, слідуючи порядку (ліве піддерево, праве піддерево, корінь).
Infix_traverse:
Дано: дерево Т і функція f
Задача: застосувати f до всіх вузлів дерева Т в порядку зростання ключів
Алгоритм:
Якщо дерево порожнє, зупинитися.
Інакше
Рекурсивно обійти праве піддерево Т.
Застосувати функцію f до кореневого вузла.
Рекурсивно обійти ліве піддерево Т.
У простому випадку, функція f може виводити значення пари (K,v). При використанні операції Infix_traverse будуть виведені всі пари в порядку зростання ключів. Якщо ж використовувати Prefix_traverse, то пари будуть виведені в порядку, відповідним опису дерева.
Розділ 5. Комбінаторні обчислювання на скінчених множинах.
