- •2. Орієнтована дуга.
- •3 . Біорієнтована дуга.
- •Класи задач мережної оптимізації.
- •Засоби представлення мереж.
- •Задача про найкоротший шлях для орієнтованих мереж.
- •Задача керування проектами (кп).
- •З адача про найкоротшу відстань для біорієнтованих мереж.
- •Рішення розбивається на 3 етапи (Дейкстра-2).
- •Моделювання й обчислення найкоротшого шляху.
- •П риклад:
- •Задача про найкоротшу відстань для багатополюсних мереж. Алгоритм Флойда.
- •Опис алгоритму.
- •Задача про максимальний потік.
- •Задача про мінімальний остов.
Задача про найкоротший шлях для орієнтованих мереж.
1. Алгоритм Дейкстра.
Задана мережа вузлів (міст).
Потрібно за найкоротший час добратися з пункту 1 в пункт 6 (за умови рівномірного прямування).
cij
1
4
cij
– відстань
1, 3 2 xij X xij - бере участь або не бере
1, 4 2
2
,
3
1 Для
кожного вузла повинна здійснюватися
умова Кірхгофа:
2, 5 3 I
3,
4
2
3, 5 | 1 |
3,
6
3 IV
4,
6
4
5, 6 1
Для кожного вузла і -того повинна виконуватися умова : сума на вході повинна бути рівній сумі на виході і дорівнювати нулю:
j
= 2, 3, ... , T-1
T = 6 i = 2 2 = {3, 5} 2 = {1}
1 - (1,2); (1,3); (1,4)
2 (1,2) (2,3); (2,5)
3 (1,3); (2,3) (3,4); (3,5); (3,6)
4 |(1,4); (3,4) | (4,6) |
5 (2,5); (3,5) (5,6)
6 (3,6);(4,6);(5,6) -
xij {0, 1}; (V*,D*) = ланцюг .
Алгоритм заснований на обчисленні потенціалів і складається з трьох етапів:
обчислення потенціалів
у
прямому порядку
1)
2)
-
= 0
1
0
0 -
,
j =
2 2 1
3 2 2 2) розрахунок потенціалів в оберненому порядку
4
2
0
5
3
3
6
4
4
3) обчислення найкоротшого шляху (критичного шляху)
відзначати ті вузли, у котрих =
1
)
2)
1 0 0
2 2 1 І на основі імітаційного моделювання
3 2 2 по критичних вузлах складаємо ланцюг
4 2 0 1356
5 3 3
6 4 4
Написання програми.
Alfa, Beta
Array [1. .6, 1. .3] of word
C: array [1. .6] of real відстань
S: array [1. .2, 1. .6] of word ланцюг подій
Задача керування проектами (кп).
Ця задача вирішується аналогічно Дейкстра - I
Етапи:
minmax;
maxmin.
З адача про найкоротшу відстань для біорієнтованих мереж.
Модель аналогічна Дейкстра -1 (запис матриці суміжності).
Рішення розбивається на 3 етапи (Дейкстра-2).
перебування потенціалів у прямому порядку використовуючи
,
перебування оберненого, використовуючи
перебування , для
,
використовуючи
Моделювання й обчислення найкоротшого шляху.
1256 найкоротший шлях
13256
П риклад:
14325
найкоротший шлях
С: array [1. .2, 1. .5] of word
S: array [1. .2, 1. .5] of byte
Alfa, Beta [1. .3, 1. .5]
U1, U2: array [1. .5] of
Задача про найкоротшу відстань для багатополюсних мереж. Алгоритм Флойда.
За існуючим алгоритмом Флойда, на вході моделі, одержуємо матрицю DD (матрицю відстаней) і R (матрицю маршрутів).
12
DD1,2 = 7
1432
41
DD4,1 = 3
41
51
DD5,1 = 13
41
53
DD5,3 = 11
523
15
DD1,5 =
Не можна
Опис алгоритму.
Математична модель аналогічна моделі в задачі Дейкстра. Ця модель розглядається для кожної пари полюсів.
Задано
граф
=V,D,
Cij - довжина або інший кількісний
параметр.
Необхідно знайти найкоротшу відстань між усіма парами вузлів. В основі алгоритму лежить обчислення для кожної пари полюсів, де відбувається порівняння (для кожного ланцюжка).
А
лгоритм
побудований на такому принципі, що
містить L кроків, де
dij>dik+dkj ijk
143
341 l dij>dik+dkj
l=4 241
=
142
інакше
543
345
...... ...... .
l - кількість кроків.
Опорне рішення або вихідний стан матриці DD – це матриця суміжності опису мережі:
Вихідна
матриця DD=D
rij=j ij
У
початковий момент матриця R дорівнює
№ колонків
Алгоритм Флойда.
Вибираємо перший по порядку вузол L=1.
Визначаємо елементи цього стовпчика і цього рядка, що на даному кроку L будуть базовими.
Для кожного елемента матриці
(jl),
що не належить базовому стовпчику і
базовому рядку виконується порівняння
сум
і
.
Якщо умова істинна (dij>),
тоді виконується тіло циклу
(dij=dik+dkj, dij=l).
Збільшуємо l і переходимо до пункту 2.
Пам'ять, що виділяється для програмування:
DD: array [1. .N, 1. .N] of word
R: array [1. .N, 1. .N] of byte
Рішення.
l=1 викреслюємо ті елементи, що не беруть участь в обчисленні, всі інші елементи ми будемо порівнювати.
2>+9 не істинно; >3+9 істинно - матрицю DD перемальовуємо
2) l = 2 викреслюємо діагональ (завжди), та II-й стовпчик і другий рядок.
>9+2 істинно
3) l = 3
4) l = 4
5) l = 5
DD(5) = див. етап 4
V етап відповідає IV, тому що V рядок і стовпчик рівні (всі елементи < ).
Алгоритм Флойда.
For l=1 to 5 do
For i=1 to 5 do
For j=1 to 5 do
If (i<>j) and (i<>l) and (j<>l) and (d[i,j]>d[l,j]+d[i,l]) then
Begin
d[i,j] := d[l,j]+d[i,l];
r[i,j] := l;
End.
Алгоритм для обчислення матриці R.
Procedure Poisk(K,L: byte);
Var i. m: byte;
Begin
Write(K); i := k;
Repeat
m := R[i,l]; i := m;
write(‘’,m);
until R[i,l] = l;
End.
Задано мережу:
Н
еобхідно:
- скласти модель.
- скласти карту альтернативних найкоротших станів між адресами 1-6 і пояснити водію, як нею користуватися.
(V*,D*)
= ланцюг
Xij
{0,1}
i
= 1. .6 j = 1. .6
j
= 2. .5
l = 1
l = 2
l = 3
l = 4
DD4 = DD5 = DD6 R4 = R5 = R6
5-6: 546
1-6: 1246
6-1: 6431
Задача про мінімальний остов.
В університеті між дисплейними класами необхідно провести телефонну лінію з використанням накладення кабелю мінімальної довжини.
Необхідно:
у в'язати всі вузли мінімальним кабелем;
не повинно бути короткого замикання (циклу);
сума
всіх дуг дорівнює кількості вузлів -1
Xij {0,1} i j
(V, D*) = остов
Алгоритм заснований на методі гілок і границь.
В якості опорного рішення приймається остов, що дорівнює порожній множині. На кожній ітерації вибирається такий вузол, що має мінімальну довжину до одного з вузлів остова.
Кількість ітерацій N-1.
{ }
{1}
{1,2}
{1,2,3}
{1,2,3,6}
{1,2,3,6,4}
{1,2,3,5,6,4}
