- •Національний університет водного господарства та природокористування Кафедра прикладної математики
- •Рекомендовані до видання ме-тодичною комісією факультету землевпорядкування та геоінформатики
- •Вступ…………………………………………………….........…………… 3
- •Тема 13 Перехід від регулярної моделі рельєфу до моделі горизонталей
- •13.2. Теоретичні відомості
- •13.3. Хід розрахунків
- •Для розрахунків використати формулу
- •Стовпець 1
- •Для розрахунків використати формулу
- •13.4. Побудова діаграми ухилів
- •Тема 14 Тріангуляція Делоне. Діаграма Вороного
- •14.1. Загальні відомості
- •14.2. Виконання тріангуляції Делоне
- •14.3. Побудова діаграми Вороного
- •14.4. Обчислення площі полігонів
- •Площу полігонів обчислюють за формулою
- •14.5. Завдання
- •Тема 15 Найкоротший шлях у мережі. Алгоритм Дейкстри
- •15.2. Розв’язування. Матриця відстаней матиме вигляд:
- •15.3.Відповідь.
- •Тема 16 Задача про найдешевшу дорожну мережу
- •16.1. Завдання.
- •16.2. Приклад розв’язування (завдання 1).
- •16.3. Приклад розв’язування (завдання 2).
- •Тема17. Задача про розміщення школи
- •17.3. Відповідь. Найвигідніше розмістити школу у четвертому населеному пункті. Сума відстаней, пройдених всіма учнями при цьому буде мінімальною і становитиме 9650 кілометрів.
- •Тема 18 Задача про розміщення пожежної частини
- •18.2. Приклад розв’язування
- •18.2.3. Алгоритм Хакімі.
- •18.3. Висновок.
Тема 15 Найкоротший шлях у мережі. Алгоритм Дейкстри
15.1. Завдання. Задана дорожна мережа, яка складається з дев’яти вершин (населених пунктів), з’єднаних ребрами (дорогами) так, як це показано на Рис.5. Необхідно знайти найкоротші шляхи від вузла 1 до інших пунктів мережі, використовуючи алгоритм Дейкстри. Елементи матриці відстаней Dik (один з варіантів, у кілометрах) задані наступною таблицею 4. Всі інші, не вказані у таблиці, відстані дорівнюють M (“машинна нескінченність”).
Таблиця 4. Значення відстаней для Рис.5.
D12 |
D14 |
D23 |
D26 |
D34 |
D35 |
D47 |
D48 |
D56 |
D57 |
D69 |
D78 |
D89 |
31 |
38 |
24 |
27 |
31 |
22 |
14 |
11 |
11 |
10 |
22 |
27 |
11 |
15.2. Розв’язування. Матриця відстаней матиме вигляд:
Таблиця 5. Матриця відстаней для Рис.5.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 |
0 |
31 |
М |
38 |
М |
М |
М |
М |
М |
2 |
31 |
0 |
24 |
М |
М |
27 |
М |
М |
М |
3 |
М |
24 |
0 |
31 |
22 |
М |
М |
М |
М |
4 |
38 |
М |
31 |
0 |
М |
М |
14 |
11 |
М |
5 |
М |
М |
22 |
М |
0 |
11 |
10 |
М |
М |
6 |
М |
27 |
М |
М |
11 |
0 |
М |
М |
22 |
7 |
М |
М |
М |
14 |
10 |
М |
0 |
27 |
М |
8 |
М |
М |
М |
11 |
М |
М |
27 |
0 |
11 |
9 |
М |
М |
М |
М |
М |
22 |
М |
11 |
0 |
Алгоритм задачі використовує три масиви з n (n - кількість вершин) чисел кожний.
Перший масив а містить мітки з двома значеннями: 0 (вершина ще не розглянута) і 1 (вершина уже розглянута).
Другий масив b містить відстані - біжучі найкоротші відстані від початкової вершини Vi до іншої вершини Vk.
Третій масив с містить номери вершин - k-ий елемент ck є номером передостанньої вершини на біжучому найкоротшому шляху з Vi до Vk. Матриця відстаней Dik задає довжини ребер dik; якщо такого ребра немає, то dik присвоюється значення дуже великого числа М, яке дорівнює “машинній нескінченності”.
Вміст масивів a,b,c після виконання першого кроку (ініціалізація) буде таким, як це показано в наступній таблиці.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
min
bk
= 31 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
b |
0 |
31 |
М |
38 |
М |
М |
М |
М |
М |
c |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
min bk = 31 (найменше значення серед непомічених вершин). Отже розглядаємо вершину 2. Через неї пролягає два маршрути 1 – 2 – 3 і 1 - 2 - 6. Довжина їх становить відповідно: 55 км і 58 км, що є меншим від машинної нескінченності M. Отже заміняємо у векторі b третю і шосту координату числами 55 і 58, а у векторі c третю і шосту координату - числом 2 (номер передостанньої вершини в маршруті). Всі інші координати масивів a, b, c не зміняться.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
min
bk
= 38 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
b |
0 |
31 |
55 |
38 |
М |
58 |
М |
М |
М |
c |
0 |
1 |
2 |
1 |
1 |
2 |
1 |
1 |
1 |
Наступний крок. min bk = 38 (четверта вершина). Через неї проходять маршрути 1 – 4 – 3, 1 – 4 – 7 і 1 – 4 – 8. Довжина їх становить відповідно: 69 км, 52 км і 49 км. Оскільки 69 > 55, маршрут 1 – 4 – 3 є невигідним і ми залишаємо старий маршрут 1 - 2 - 3. Що стосується двох інших маршрутів, то їх довжина є меншою від відповідних відстаней, записаних у другому рядку таблиці. Отже заміняємо у векторі b сьому і восьму координату числами 52 і 49, а у векторі c сьому і восьму координату - числом 4 (номер передостанньої вершини в маршруті). Всі інші координати масивів a, b, c не зміняться.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
min
bk
= 49 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
b |
0 |
31 |
55 |
38 |
М |
58 |
52 |
49 |
М |
c |
0 |
1 |
2 |
1 |
1 |
2 |
4 |
4 |
1 |
Вміст масивів a, b, c змінюється по мірі виконання алгоритму так, як це показано нижче.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
min
bk
= 52 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
b |
0 |
31 |
55 |
38 |
М |
58 |
52 |
49 |
60 |
c |
0 |
1 |
2 |
1 |
1 |
2 |
4 |
4 |
8 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
min
bk
= 55 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
b |
0 |
31 |
55 |
38 |
62 |
58 |
52 |
49 |
60 |
c |
0 |
1 |
2 |
1 |
7 |
2 |
4 |
4 |
8 |
min
bk
= 58 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
b |
0 |
31 |
55 |
38 |
62 |
58 |
52 |
49 |
60 |
c |
0 |
1 |
2 |
1 |
7 |
2 |
4 |
4 |
8 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
min
bk
= 60 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
b |
0 |
31 |
55 |
38 |
62 |
58 |
52 |
49 |
60 |
c |
0 |
1 |
2 |
1 |
7 |
2 |
4 |
4 |
8 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
b |
0 |
31 |
55 |
38 |
62 |
58 |
52 |
49 |
60 |
c |
0 |
1 |
2 |
1 |
7 |
2 |
4 |
4 |
8 |
Виконання другого кроку алгоритму Дейкстри завершено. Використовуючи вміст масивів a, b, c на останньому кроці, ми можемо вказати найкоротші шляхи з пункту 1 до інших пунктів мережі.