Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_метод_вказівки_до_лаб_роб_2011.doc
Скачиваний:
7
Добавлен:
04.12.2018
Размер:
980.48 Кб
Скачать

Теоретичні відомості

Орієнтований граф(орграф) G=(V,E) складається з множини вершин V і множини дуг Е. Вершини також називаються вузлами, а дуги — орієнтованими ребрами. Дуги представляються у вигляді упорядкованої пари вершин (υ, ω), де вершина υ називається початком, а ω ― кінцем шляху. Кажуть, що вершина ω суміжна з вершиною υ.

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

Нехай задано орграф G=(V,E), у якого всі дуги мають додатні мітки (вартості дуг), а одна вершина визначена як джерело. Задача полягає в знаходженні вартості найкоротших шляхів від джерела до всіх інших вершин графу G (тут довжина шляху визначається як сума вартості дуг, що складають цей шлях). Ця задача часто називається задачею знаходження найкоротшого шляху з одним джерелом.

Припустимо, що в орграфі G вершини названі цілими числами, тобто множина вершин V={1, 2…, n}, причому вершина 1 є джерелом. Масив С – двохвимірний масив вартостей, де елемент С[i, j] рівний вартості дуги i→j.

Якщо дуги i→j не існує, тоді С[i, j] кладемо рівним ∞, тобто більшим за будь-яку фактичну вартість дуг. На кожному кроці D[i] містить довжину поточного найкоротшого особливого шляху до вершини і.

Для розв’язку поставленої задачі будемо використовувати “жадібний” алгоритм, який часто називається алгоритмом Дейкстри. Алгоритм будує множину S вершин, для яких найкоротші шляхи від джерела вже відомі. На кожному кроці до множини S додається та з решти вершин, відстань до якої від джерела менша, ніж для інших вершин, які залишилися. Якщо вартості всіх дуг додатні, то можна бути впевненими, що найкоротший шлях від джерела до конкретної вершини проходить тільки через вершини множини S. Назвемо такий шлях особливим. На кожному кроці алгоритму використовується також масив D, в який записуються довжини найкоротших особливих шляхів для кожної вершини. Коли множина S буде містити всі вершини орграфа, тобто для всіх вершин будуть знайдені “особливі” шляхи, тоді масив D міститиме довжини найкоротших шляхів від джерела до кожної вершини.

Індивідуальне завдання

Представити заданий орграф у вигляді матриці вартостей та списку суміжності (I); скласти програму знаходження найкоротшого шляху до однієї вершини в орграфі з виводом результатів на друк.

Варіанти індивідуальних завдань

1. джерело = 1 2. джерело = 2

20

100

50

30

40

40

10

50

10

60

100

20

60

30

80

3. джерело = 3 4. джерело = 4

10

50

30

60

80

80

40

60

20

30

100

10

70

100

20

5. джерело = 5 6. джерело = 1

20

120

40

30

80

40

40

10

70

120

80

50

20

50

7. джерело = 4 8. джерело = 5

20

100

50

30

40

40

10

50

10

60

100

20

60

30

80

9. джерело = 5 10. джерело = 3

10

50

30

60

80

80

40

60

20

30

100

10

70

100

20

11. джерело = 2 12. джерело = 4

120

20

40

30

80

40

40

10

70

120

80

50

20

50

13. джерело = 1 14. джерело = 2

20

50

120

30

40

40

100

10

50

60

10

20

60

30

80

15. джерело = 3 16. джерело = 4

80

120

50

60

40

80

40

60

20

30

100

30

70

100

20

17. джерело = 5 18. джерело = 2

20

120

40

30

80

50

40

100

70

10

20

60

20

50

19. джерело = 2 20. джерело = 5

20

100

50

30

40

40

10

50

10

60

100

120

60

30

80

21. джерело = 4 22. джерело = 3

10

50

30

60

80

80

40

60

20

30

100

10

30

100

20

23. джерело = 2 24. джерело = 4

50

120

40

40

80

40

30

10

70

120

60

80

50

20

100

25. джерело = 1 26. джерело = 2

80

50

100

30

40

40

80

10

50

20

100

20

60

30

80

27. джерело = 3 28. джерело = 4

80

120

50

60

40

80

40

60

20

30

100

30

70

100

20

29. джерело = 5 30. джерело = 2

20

120

40

30

50

70

80

50

40

10

70

100

120

60

20

50

Хід роботи

  1. Представити заданий орграф у вигляді матриці вартостей.

  2. Скласти список суміжності (I) для даного орграфа.

  3. Скласти програму знаходження найкоротшого шляху до однієї вершини в орграфі, використавши алгоритм Дейкстри.

  4. Ввести свої дані у створену програму.

  5. Результати вивести на друк.

  6. Висновок.