Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора комбінаторні методи (Питання).doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.42 Mб
Скачать

18. Алгоритми визначення мінімальних зв'язувальних дерев, їх обчислювальна та ємнісна складність. Алгоритм Прима

Алгоритм Прима - алгоритм побудови мінімального кістякового дерева зваженого зв'язного неорієнтованого графа.

Побудова починається з дерева, що включає в себе одну (довільну) вершину. Протягом роботи алгоритму дерево розростається, поки не охопить всі вершини вихідного графа. На кожному кроці алгоритму до поточного дереву приєднується найлегше з ребер, що з'єднують вершину з побудованого дерева і вершину, що не належить дереву.

Алгоритм:

  1. Спочатку ребра сортують за зростанням ваги.

  2. Додають найменше ребро в дерево.

  3. Зі списку ребер із найменшою вагою вибирають таке нове ребро, щоб одна з його вершин належала дереву, а інша — ні.

  4. Це ребро додають у дерево і знову переходять до кроку 3.

  5. Робота закінчується, коли всі вершини будуть у дереві.

Обчислювальна складність: O(n)..O(n3)

Ємнісна складність: O(E+V*log V)..O(V2), де E – ребра графу, V – його вершини.

Алгоритм Краскала (Крускала)

Спочатку поточна множина ребер встановлюється порожньою. Потім, поки це можливо, проводиться наступна операція: з усіх ребер, додавання яких до вже наявної множини не викличе появи в ньому циклу, вибирається ребро мінімальної ваги і додається до вже присутніх у множині. Коли таких ребер більше немає, алгоритм завершений. Підграф даного графа, що містить всі його вершини і знайдена множина ребер, і є його зв'язним деревом мінімальної ваги.

Обчислювальна складність алгоритму: O(E * log(E)), де E – ребра графу.

Ємнісна складність: O(M), де M – кількість вершин, які входять в дерево.

19. Алгоритми визначення оптимальних шляхів в графах, їх обчислювальна та ємнісна складність. Жадібний алгоритм (задача комівояжера)

Жадібний алгоритм для розв’язання задачі комівояжера (Greedy algorithm) належить до алгоритмів побудови маршруту. Алгоритми побудови маршруту належать до найпростіших методів знаходження розв’язків задачі комівояжера. За кожен крок виконання алгоритму до знайденої частини маршруту додається нове ребро. Алгоритм припиняє роботу, коли розв’язок знайдено і ніколи не намагається покращити його. До найвідоміших алгоритмів побудови маршруту належать:

Жадібний алгоритм будує маршрут поступово, на кожному кроці додаючи найкоротше ребро, яке ще не належить маршруту. Ребро додається при умові, що воно не створить циклу всередині маршруту. Алгоритм завершується, коли додано N ребер або кожна точка має степінь 2. Кожне ребро може бути додане лише один раз. Обчислювальна складність алгоритму - O(N2 log2(N)).

ЖАДІБНИЙ АЛГОРИТМ.

ВХІДНІ ДАНІ: множина точок V розмірністю N, множина ребер E.

ВИХІДНІ ДАНІ: маршрут T, що складається з вибраних ребер множини E.

ВІДСОРТУВАТИ усі ребра множини E;

ВИБРАТИ найкоротше ребро e та ВИЛУЧИТИ його з множини E;

ЯКЩО додавання ребра e до множини T не створить циклу при кількості ребер менше N, ТО ДОДАТИ це ребро до множини T;

ЯКЩО у маршруті T не міститься N ребер, ТО ВЕРНУТИСЬ на КРОК 2.

КІНЕЦЬ АЛГОРИТМУ.

Згідно проведених експериментів, жадібний алгоритм забезпечує якість отриманого маршруту, приблизно на 20% гіршу від оптимального. При декомпозиції задачі комівояжера у випадках, коли висока якість маршруту не є необхідною умовою, жадібний алгоритм може застосовуватись для розв’язування підзадач малих розмірностей.