Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
часть3.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
346.62 Кб
Скачать

Задача про найкоротший шлях для орієнтованих мереж.

1. Алгоритм Дейкстра.

Задана мережа вузлів (міст).

Потрібно за найкоротший час добратися з пункту 1 в пункт 6 (за умови рівномірного прямування).

cij

1

4

, 2  2 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. обчислення потенціалів

у прямому порядку

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 1356

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

Етапи:

  1. minmax;

  2. maxmin.

З адача про найкоротшу відстань для біорієнтованих мереж.

Модель аналогічна Дейкстра -1 (запис матриці суміжності).

Рішення розбивається на 3 етапи (Дейкстра-2).

  1. перебування потенціалів у прямому порядку використовуючи ,

  2. перебування оберненого, використовуючи

  3. перебування , для , використовуючи

Моделювання й обчислення найкоротшого шляху.

1256 найкоротший шлях

13256

П риклад:

14325 найкоротший шлях

С: 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 (матрицю маршрутів).

12

  1. DD1,2 = 7

  2. 1432

41

  1. DD4,1 = 3

  2. 41

51

  1. DD5,1 = 13

  2. 41

53

  1. DD5,3 = 11

  2. 523

15

  1. DD1,5 = 

  2. Не можна

Опис алгоритму.

Математична модель аналогічна моделі в задачі Дейкстра. Ця модель розглядається для кожної пари полюсів.

Задано граф =V,D, Cij - довжина або інший кількісний параметр.

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

А лгоритм побудований на такому принципі, що містить L кроків, де

dij>dik+dkj ijk

143 

341   l dij>dik+dkj

l=4 241  = 

142   інакше

543 

345

...... ...... .

l - кількість кроків.

Опорне рішення або вихідний стан матриці DD – це матриця суміжності опису мережі:

Вихідна матриця DD=D rij=j ij

У початковий момент матриця R дорівнює № колонків

Алгоритм Флойда.

  1. Вибираємо перший по порядку вузол L=1.

  2. Визначаємо елементи цього стовпчика і цього рядка, що на даному кроку L будуть базовими.

  3. Для кожного елемента матриці (jl), що не належить базовому стовпчику і базовому рядку виконується порівняння сум і . Якщо умова істинна (dij>), тоді виконується тіло циклу (dij=dik+dkj, dij=l).

  4. Збільшуємо l і переходимо до пункту 2.

Пам'ять, що виділяється для програмування:

DD: array [1. .N, 1. .N] of word

R: array [1. .N, 1. .N] of byte

Рішення.

  1. 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: 546

1-6: 1246

6-1: 6431

Задача про мінімальний остов.

В університеті між дисплейними класами необхідно провести телефонну лінію з використанням накладення кабелю мінімальної довжини.

Необхідно:

  • у в'язати всі вузли мінімальним кабелем;

  • не повинно бути короткого замикання (циклу);

сума всіх дуг дорівнює кількості вузлів -1

Xij  {0,1} ij

(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}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]