- •17. Проаналізувати роботу алгоритму лінійного пошуку в одномірному масиві.
- •19. Проаналізувати роботу алгоритму сортування обмінами "бульбашки".
- •I,j : Integer;
- •X : Item;
- •I,j,k: integer;
- •X: Item;
- •22. Навести визначення та властивості евристичних алгоритмів.
- •23. Навести опис евристичних алгоритмів для рішення задачі про упакування.
- •25. Навести опис складної рекурсії.
- •24. Навести опис, рекурсивно-визначені процедури і функції.
- •28. Навести визначення та способи зображення дерев.
- •29. Навести опис впорядкованого та бінарного дерева.
- •30.Навести алгоритм прямого порядку (preorder) обходу дерева.
- •31.Навести алгоритм зворотного порядоку (postorder) обходу дерева.
- •32. Навести алгоритм обходу дерева в кінцевому порядку.
- •35. Розкрити алгоритм пошуку у глибину (dfs).
- •36. Розкрити алгоритм пошуку у ширину.
- •37. Навести визначення, кістякове дерево зв'язаного неорієнтованого графа.
- •38. Сформулювати завдання про знаходження мінімального кістякового дерева
- •39. Розкрити алгоритм Краскала.
- •40. Проаналізувати роботу алгоритму Дейкстри.
- •41.Розкрити алгоритм флойда.
- •42.Навести метод розгалужень і меж
35. Розкрити алгоритм пошуку у глибину (dfs).
Алгори́тм пошуку́ в глибину́ (англ. Depth-first search, DFS) — алгоритм для обходу дерева, структури подібної до дерева, або графа. Робота алгоритма починається з кореня дерева (або іншої обраної вершини в графі) і здійснюється обхід в максимально можливу глибину до переходу на наступну вершину.
-Усі вершини графа мітимо як "нова".
-Вибираємо вершину v0 початкового графа, яка буде коренем дерева. Замінюємо її мітку на "використана". Надаємо значення: v = v0.
- Якщо є вершини w, що суміжні (сполучені ребром) з вершиною v і мають мітку "нова", виконаємо такі дії:
вибираємо одну з такик вершин w і замінюємо її мітку на "використана";
надаємо значення v = w і знову починаємо виконання пункту 3.
-Якщо вершина v відмінна від v0, замінюємо поточну величину v на її безпосереднього предка і повторюємо виконання кроку 3.
-Зауваження 1. Для перебору всіх можливих дерев за допомогою викладених методів на кроці 3 обох алгоритмів маємо передбачити перебір усіх можливих множин вершин і відповідних ребер, які можливо долучити на цьому кроці.
36. Розкрити алгоритм пошуку у ширину.
По́шук у ширину́ — алгоритм пошуку на графі.
Якщо задано граф G = (V, E) та початкову вершину s, алгоритм пошуку в ширину систематично обходить всі досяжні із s вершини. На першому кроці вершина s позначається, як пройдена, а в список додаються всі вершини, досяжні з s без відвідування проміжних вершин. На кожному наступному кроці всі поточні вершини списку відмічаються, як пройдені, а новий список формується із вершин, котрі є ще не пройденими сусідами поточних вершин списку. Для реалізації списку вершин найчастіше використовується черга. Виконання алгоритму продовжується до досягнення шуканої вершини або до того часу, коли на певному кроці в список не включається жодна вершина. Другий випадок означає, що всі вершини, доступні з початкової, уже відмічені, як пройдені, а шлях до цільової вершини не знайдений.
Алгоритм має назву пошуку в ширину, оскільки «фронт» пошуку (між пройденими та непройденими вершинами) одноманітно розширюється вздовж всієї своєї ширини. Тобто, алгоритм проходить всі вершини на відстані k перед тим як пройти вершини на відстані k+1.
-Вибираємо вершину v0 початкового графа. Надаємо значень: L(v0) = 0; V T = {v0}; l = 0.
-Вибираємо вершину vl з множини V T, при якій L(vl) = l.
-Вибираємо вершину v з різниці множин V \ V T, що суміжна (тобто сполучена ребром) з vl долучаємо:
вершину v до множини V T;
ребро (vl; v) до множини E T
і надаємо значення: L(v) = l + 1.
-Крок 3 здійснюємо доти, поки не буде розглянуто всі вершини з V \ V T, що постійно змінюється.
-Кроки 2–4 здійснюємо доти, поки не переберемо всі вершни vl з множини V T, при яких L(vl) = l.
Збільшуємо величину l на 1.
-Кроки 2–6 здійснюємо до споравдження рівності V = V T.
Пошук у ширину передбачає у першу чергу пошук вершин, суміжних з даною, а потім здійснюється перехід на новий рівень. Пошук у глибину передбачає побудову як можна довшого шляху (маршруту) для дерева. Якщо такий шлях далі продовжити не можливо, формують листок і повертають до безпосереднього предка цього листка і намагаються побудувати новий шлях.
