- •Лекція 1
- •Основні визначення та поняття
- •1.1.Термінологія
- •1.2. Класифікація структур данях
- •1.3. Основні операції над структурами даних
- •Контрольні запитання
- •Лекція 2 алгоритми. Складність алгоритмів
- •1. Зображення алгоритмів
- •2 Складність алгоритмів
- •3. Класи алгоритмів
- •Контрольні запитання
- •Лекція 3 методи сортування
- •Лекція 4 методи сортування (продовження)
- •4. Сортування включенням
- •5. Сортування розподілом
- •6. Сортування злиттям або об’єднанням
- •Лекція 5 Дерева
- •1. Основні визначення та поняття
- •2. Бінарні дерева
- •3. Зображення в пам‘яті комп‘ютера графоподібних структур
- •Контрольні запитання
- •Лекція 6 дерева (продовження)
- •4. Сортування на деревах
- •4.2. Пірамідальне сортування.
- •Контрольні запитання
- •Лекція 7 лінійні структури даних
- •1. Стеки, черги, деки
- •1.1. Стеки
- •1.2. Черги
- •1.3. Деки
- •1.4. Організація стеків, черг і деків
- •Контрольні запитання та вправи
- •3. Множини I кортежі
- •4. Зберігання множин і масивів
- •4.1 Зберігання розріджених матриць
- •Контрольні запитання
- •Лекція 9 Лінійні списки
- •1. Основні визначення та поняття
- •2. Однонаправлені списки
- •3. Двонаправлені списки
- •4. Циклічні списки
- •Контрольні запитання та вправи
- •Лекція 11 нелінійні структури даних
- •1. Таблиці
- •2. Зображення таблиць
- •Контрольні питання
- •Лекція 13 Пошук даних
- •1. Послідовний або лінійний пошук
- •2. Двійковий пошук
- •1. Дерева порівнянь на векторній пам‘яті.
- •3.Пошук у таблиці
- •4. Прямий пошук стрічки
- •5. Алгоритм Кнута, Моріса і Прата пошуку в стрічці.
- •7. Алгоритми з поверненням
- •Лекція 14 Пошук у таблиці
- •1. Пошук у таблицях з обчислюваними адресами
- •2. Пошук у таблицях з прямим доступом
- •3. Пошук у Хеш-таблицях.
- •Контрольні питання
3. Зображення в пам‘яті комп‘ютера графоподібних структур
Ознайомимось із загальною задачею зображення графа G=(N,E) у вигляді спискової структури, тобто запам'ятовування його на зчепленій пам'яті. Розглянемо орієнтовані графи. Для кожної вершини n існує множина вершин E(n), з якими вона з’єднана ребрами. Тоді один із способів зображення такого графа полягає в тому, щоб кожній вершині співставити одну ділянку списку, в якій одне поле відвести під мітку вершини, якщо така існує, і щонайменше |Е(п)| полів – під множину вказівників, тобто ребер. Якщо задано ваги ребер, то потрібно ще додатково |Е (п)| полів для зберігання цих ваг. Це один із способів зберігання графів у зчепленій пам`яті.
Але інформацію про ребра можна відділити від інформації про вершини, для чого потрібно ввести два типи ділянок (одну для вершини, другу для ребер) і зв‘язати ці ділянки в один ланцюг. Крім того, всі ребра можна зберігати окремо, по одній ділянці на кожне ребро, і зв‘язувати ці ділянки в один ланцюг.
Таким способом зображення графів можна користуватися також для графів з двосторонньою орієнтацією, тоді кожний напрямок треба зображувати незалежно, що створює дублювання інформації, і при зміні графа під час роботи потрібно було б змінювати його в двох місцях. Цю незручність можна ліквідувати за допомогою петель. В цьому випадку для кожного ребра (а, b) потрібна буде зв‘язуюча ділянка, в якій зберігався б вказівник, що веде через інші вершини у вершину а , і вказівник, що веде через інші вершини у вершину b , а також додаткові поля для зберігання ваг і міток.
Отже, для зображення в пам‘яті графів існує декілька способів:
1) використовується матриця (або матриця суміжності, або матриця інцедентності), яка зберігається стандартним способом у векторній пам‘яті;
2) використовується спискова структура у вигляді черги, в якій вказівники відповідають ребрам графа;
3) використовується спискова динамічна структура, де для кожної нової підмножини пам‘ять виділяється в процесі побудови фрагмента графа.
Кожний з цих способів має свої позитивні і негативні сторони. Який із них більше підходить для зображення графа, залежить від кількості ребер.
Для зображення дерев, як різновиду графів, можна застосовувати ті ж способи, що і для зображення графів взагалі. Однак матриці суміжності, як правило, не використовуються, оскільки вони дуже розріджені. Майже завжди для зображення дерев застосовують списки, в яких вказівники зображують ребра.
Дерева можна зберігати в пам‘яті також у послідовному вигляді, але при цьому вибирається певний напрямок обходу дерева. Тоді зберігаються тільки вершини дерева, а зв‘язки (ребра) опускаються, оскільки порядок розташування вузлів вказує на зв‘язок між ними.
Контрольні запитання
1. Яке дерево називається кореневим?
2. Що називають степеню вершини?
3. Чому дорівнює степінь листка?
4. Що таке довжина шляху?
5. Що таке рівень вершини дерева?
6. Який ранг має корінь зображеного дерева?
7. Що таке висота дерева?
8. Яка висота зображених дерев?
9. Як описується вершина-"син"у позиційному дереві?
10. Які існують алгоритми обходу дерев?
11. Що таке бінарне дерево?
12. Яке дерево називають збалансованим?
13. Які відомі способи зображення графів в пам‘яті комп‘ютера?
14. Які способи зображення дерев в пам‘яті комп‘ютера є оптимальними?