Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗАВДАННЯ ТА МЕТОДИЧНІ ВКАЗІВКИ Економетрия.doc
Скачиваний:
5
Добавлен:
09.12.2018
Размер:
840.7 Кб
Скачать

Матричний метод

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

Для здобуття матриць (, ) треба вихідну матрицю вагів послідовно помножити на себе, піднести до ступеня

rmax = n – 1 (n – кількість вузлів мережі), змінивши процедуру перемножування матриць та запровадивши операцію «Δ»:

.

Кожен елемент сіj матриці визначається як мінімум з почленних сум елементів i-го рядка матриці та j-го стовпця матриці .

Для графа, зображеного на рис. 6, матриця довжин якого зведена до матриці 1, процедура формування елементів матриці здійснюється у відповідності з виразом:

1

2

3

4

5

1

0

50

20

2

50

0

40

30

1

(1)

;

(1)

0

3

40

0

60

4

20

30

0

100

5

10

60

100

0

0

50

20

Перший рядок

50

0

40

30

10

д

,

ругий стовпець

50

50

50

почленні суми

звідки = min (50, ) = 50.

Аналогічно визначаються всі елементи матриці , потім і, врешті, .

Цю процедуру використовують для діставання матриць шляхів мінімальної вартості , додавши елементам зміст вартості галузі .

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

Для графа (див. рис. 6) матриця записана у вигляді матриці (2).

Процедура піднесення матриці до ступеня rmax є аналогічна до процедури розглянутої для матриці .

1

2

3

4

5

1

0

1

1

2

1

0

1

1

1

(1)

;

(2)

3

1

0

1

4

1

1

0

1

5

1

1

1

0

0

1

1

(3)

перший рядок

1

0

1

1

1

,

другий стовпець

1

1

2

почленні суми

= min (1, 2, ) = 1.

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

Помітимо також, що при зведенні матриці R(1) у будь-який ступінь операцію (3) варто застосовувати лише до тих елементам матриці , що ще не визначені, тобто Як тільки при зведенні в черговий ступінь q матриці R(1) всі елементи

(i, j = 1, n, граф G - зв'язний), процес обчислення Rопт слід припинити. Здобута матриця R(q) = Rопт.

До задачі 3

Параметри мережних графіків (МГ):

тривалість роботи tij ; ранній термін (дата) здійснення події i – Тр(i);

пізній термін здійснення події i – Тп(i); ранній початок роботи (i, j) – Тр.п(i, j); пізній початок роботи (i, j) – Тп.п(i, j); раннє закінчення роботи (i, j) – Тр.з(i, j); пізнє закінчення роботи (i, j) – Тп.з(i, j); резерв часу події i – Ri ;

повний резерв часу роботи (i, j) – Rij; окремий (вільний) резерв часу роботи (i, j) – rij; повний резерв часу по шляху – RL.

Тр(i)термін, в який відбувається подія за умови, що будуть виконані всі попередні роботи, дорівнює максимальній довжині шляху від вихідної до i-тої події:

Тр(i) = max{Lп,i},

де п – початкова подія.

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

Тп(i) = Lкрmax{Li, k},

де k – завершальна подія; Lкрдовжина критичного шляху.

Для всіх подій критичного шляху Тп(i) = Тр(i).

Знаючи Тр(i) та Тп(i)для всіх подій мережі й тривалість робіт t(i, j), можна для кожної роботи визначити Тр.п(i, j) = Тр(i) – найранній з можливих термінів початку роботи (i, j) ;

Тп.п(i, j) = Тп(j) – t(i, j) – найпізніший з припустимих термінів початку роботи (i, j) ;

Тр.з(i, j) = Тр(i) + t(i, j)найранній з припустимих термінів завершення роботи (i, j) ;

Тп.з(i, j) = Тп(i)найпізніший з припустимих термінів завершення роботи

(i, j) .

Для всіх робіт критичного шляху збігаються ранні й пізні терміни початку робіт та ранні й пізні терміни завершення робіт.

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

Резерв часу i-тої події Ri – інтервал часу, в межах якого можна змінити термін здійснення події без зміни терміну завершення проекту:

Rі = Тп(і) – Тр(і).

Повним резервом роботи (i, j) Rіj називається найбільший час, на який можна збільшити тривалість чи затримати виконання роботи без зміни терміну завершення проекту:

Rіj = Тп.з(i, j) – Тр.з(i, j) = Тп(j)(Тр(і) + t(i, j)).

Окремий (вільний) резерв rij роботи (i, j) найбільший час, на який можна збільшити тривалість чи затримати початок роботи (i, j) без зміни раннього початку подальшої роботи:

rij = Тр(j) – Тр.з(i, j) = Тр(j)(Тр(і) + t(i, j)).

Повним резервом шляху RL називається відміна його довжини від довжини критичного шляху:

RL=Lкр – L.

Події й роботи, котрі лежать на критичному шляху, не мають резервів.

Розрахунок параметрів МГ провадять або графічним, або табличним способом.

Наведемо, наприклад, розрахунок МГ, поданого на рис. 7, на якому біля кожної роботи зазначення її тривалість.

8

4

6

5

7

4

8

4

7

10

3

Рисунок 7 – Мережний графік

Робота (3 – 4) – фіктивна, t(3 – 4) = 0. Для даного МГ подія “1” є початкова, подія “7” – завершальна.

Визначимо Тр(i) та Тп(i). Для цього передусім треба віднайти критичний шлях (див. рис.7)

Lкр = L 1,3,4,5.6,7 = 30.

Для події “1”:

Тр(1) = 0, Тп(1) = 0.

Для події “2”:

Тр(2) = max{L1,2} = 4;

Tп(2) = Lкр – max{L2,7} = 30 – max{L2,6,7; L2,4,6,7; L2,4,5,6,7; L2,4,5,7} =

= 30 – max{15,18,21,20} = 9.

Аналогічно обчислимо Тр(i) та Тп(i) для інших подій, а також резерви часу для всіх подій. Дані обчислень зведемо в табл. 4.

Таблиця 4 – Параметри подій мережного графіка

№ події

Тр(i)

Тп(i)

Ri

1

0

0

0

2

4

9

5

3

8

8

0

4

15

15

0

5

19

19

0

6

23

23

0

7

30

30

0

З табл. 4 видно, що для подій Тр(1, 3, 4, 5, 6, 7) = Тп(1, 3, 4, 5, 6, 7) та Ri = 0, оскільки ці події лежать на критичному шляху.

Обчислимо параметри МГ, стосовні робіт:

Для роботи 1-2:

Тр.н(1, 2) = Тр(1) = 0;

Тп.н(1, 2) = Тп(2) – t(1, 2) = 9 – 4 = 5;

Тр.з(1, 2) = Тр(1) + t(1, 2) = 0 + 4 = 4;

Тп.з(1, 2) = Тп(2) = 9;

R(1, 2) = Тп.з(1, 2) – Тр.з(1, 2) = 9 – 4 = 5;

r(1, 2) = Тр(2) – Тр.з(1, 2) = 9 – 4 = 5.

Аналогічно обчислимо решту параметрів. Дані всіх розрахунків зведено в табл. 5.

Таблиця 5 – Параметри робіт мережного графіка

Роботи

Тривалість

роботи

Тр.п(ij)

Тр.з(ij)

Тп.п(ij)

Тп.з(ij)

R(ij)

r(ij)

1 – 2

4

0

4

5

9

5

0

1 – 3

8

0

8

0

8

0

0

2 – 4

6

4

10

9

15

5

5

2 – 6

8

4

12

15

23

11

11

3 – 4

7

8

15

8

15

0

0

3 – 5

3

8

11

16

19

8

8

4 – 5

4

15

19

15

19

0

0

4 – 6

5

15

20

18

23

3

3

5 – 6

4

19

23

20

23

0

0

5 – 7

10

19

29

19

30

1

1

6 – 7

7

23

30

23

30

0

0

З табл. 5 видно, що для всіх робіт, належних критичному шляхові, Тр.п(ij) = Tп.п(ij), Тр.з(ij) = Тп.з(ij), а також Rij = 0 та rij = 0.

Алгоритм Флойда надає можливість здобути як матрицю довжин найкоротших відстаней Lопт = D, так і маршрутну матрицю, котра визначає вершини (гілки) графа, які складають шляхи.

Алгоритм Флойда працює в такий спосіб. Спочатку за довжину найкоротшого шляху поміж довільними вершинами i та j приймається довжина гілки lij , яка сполучує ці вершини. Потім послідовно перевіряються всілякі проміжні вершини, розташовані поміж i та j. Якщо довжина шляху, котра проходить через певну проміжну вершину k, є менше за попереднє (поточне) значення, котре було позначено, наприклад dij, то змінній dij привласнюється нове значення. Зауважимо, що вихідне значення dij = lij. Дана процедура повторюється для всіляких пар вершин, поки не буде здобуто всі значення матриці Lопт = D.

Для будь-яких трьох різних вершин - i, k та j - сформульовані умови може бути записано у вигляді нерівності, оскільки в противному разі

dik + dkj dij (i k j), (4)

найкоротший шлях з вершини і до вершини j повинен містити вершину k і тоді величина dij не дорівнювала довжині найкоротшого шляху. Рис. 8 ілюструє виконання процедури порівняння (4) для пари вершин і та j.

dik dkj

dij

Рисунок 8

Позначимо символом оцінку довжини найкоротшого шляху з і до j, отриману на q-тій ітерації.

Алгоритм Флойда дозволяє розв’язувати задачу здобування найкоротших шляхів поміж усіма вершинами графа для графа з n вершин за n ітерацій.

Спосіб здобування на q-ті ітерації величини може бути описано за допомогою такої тримісної операції (операції трикутника):

(5)

Якщо операцію (4) виконувати з даною парою вершин i та j й усіма вершинами k (i k j) у порядку зростання номерів k, то значення здобуте на останній ітерації, дорівнюватиме довжині найкоротшого шляху з вершини i до вершини j.

На кожній ітерації алгоритму будується дві матриці.

Перша з них, називана матрицею довжин найкоротших шляхів, містить поточні оцінки довжин найкоротших шляхів, тобто на q-ті ітерації дана матриця визначається як . Алгоритм починає роботу при . Потім, виконуючи тримісну операцію (5) із всіма елементами матриці D0, дістаємо D1 і то що, доти, допоки для кожної пари вершин не буде виконано критерій оптимальності (4).

Друга матриця, називана матрицею маршрутів (позначимо її Г), слугує для відшукування проміжних вершин (якщо такі є) найкоротших шляхів. На q-ті ітерації вона визначається як , де — перша проміжна вершина найкоротшого шляху з i до j, обирана з вершин множини {1, 2, ..., k} (i k j). Алгоритм розпочинає роботу, за , де . На q-ті ітерації вершину може бути здобуто зі співвідношення

Після побудови матриць D0 та Г0 треба для кожного k = 1, 2, .. п, використовуючи для обчислень елементи матриці здобутої на

(q-1)-ті ітерації, виконати подану нижче процедуру.

Крок 1 Викреслити елементи k-го рядка та k-го стовпця. Назвемо ці множені елементів базовим рядком та базовим стовпцем.

Крок 2 Для кожного елемента (i k) матриці , розпочинаючи з першого, розташованого в лівому верхньому куті матриці, перевірити виконання нерівності

(6)

Якщо нерівність (5) виконується, то слід обрати нові значення i та j і знову виконати крок 2. Якщо нерівність (5) не виконується, то елементові , матриці Dq слід привласнити значення , а елементові матриці Гq - привласнити значення .

Після перевірки нерівності (5) для всіх елементів (i, j) треба знову перейти до виконання кроку 1 за q = q + 1 до q = n.

7

9 2 4 10 9

8 12

3 2 6 7 10

5

Рисунок 9.

Відповідно до (5), при одержанні D q з D q-1 тримісну операцію, котра дозволяє установити факт приналежності базового вузла k до найкоротшого шляху, слід виконувати лише з елементами матриці D q-1, не приналежними ані базовому рядкові, ані базовому стовпцеві.

Для ілюстрації роботи алгоритму Флойда визначимо найкоротші шляхи поміж усіма парами вершин графа, зображеного на рис. 9

Початкові значення елементів матриці D0 додано в табл. 6 матриці Г0 – у табл. 7.

Таблиця 6

Таблиця 7

Ітерація 1 Вершина k = 1 визначається як базова, отже, у матриці D0 викреслюємо перший рядок і перший стовпець. Оскільки в базовому рядку в стовпцях 3, 5, 6, 7, 8 утримуються елементи, дорівнювані , то елементи цих стовпців можна не досліджувати відповідно до виразу (5).

1

2

3

4

5

6

7

8

1

9

3

Базовий рядок

2

9

0

3

4

3

0

5

6

7

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

Базовий стовпець

Рисунок 10

У базовому першому стовпці в рядках 3, 5, 6, 7, 8 утримуються елементи, дорівнювані , тому, відповідно до (5), елементи цих рядків можна не досліджувати. Для того щоби визначити, чи призведе використання вершини 1 до більш коротких шляхів, аніж ті, котрі записано до D0, слід досліджувати за допомогою тримісної операції (5) лише елементи матриці D0, зображені на рис. 10, а саме елементи . Але оскільки елементи головної діагоналі (i= j) можна не розглядати, застосування операції (4) дає такі результати:

Оскільки

й

о зазначені елементи розміщують в матриці D1, решта елементів матриці D0 переносяться в D1 без зміни. Елементи матриці Г1 при цьому: та ,решта елементів Г1 дорівнюють відповідним елементам матриці Г0.

Матриці D1 та Г1 подано в таблицях 8 та 9 відповідно.

Таблиця 8.

Таблиця 9.

Ітерація 2 Визначаємо вершину 2 як базову і викреслюємо в матриці D1 другий рядок та другий стовпець. Оскільки в другому рядку в стовпцях 6, 7 і 8 є , відповідні рядки не розглядаються. Окрім того, не розглядаються елементи головної діагоналі. Остаточно необхідно досліджувати елементи

Нових оцінок набувають лише такі елементи:

Отже .

Матриці D2 и Г2 представлені в таблицях 10 и 11.

Таблиця 10

Таблиця 11

Виконуючи аналогічні обчислення на ітераціях 3, 4, 5, 6, 7, 8, одержимо результат – матриці D та Г. Розв’язок, здобутий на ітерації 5, не оптимізується на наступних ітераціях. Отже, оптимальний розв’язок:

D = D5, Г = Г5.

Таблиця 12

Таблиця 13

Матриці D та Г наведено в таблицях 12 и 13.

Нехай треба визначити найкоротший шлях d15. Довжина шляху . Для віднайдення відповідної послідовності вершин, які складають шлях, звернемося до матриці Г5. Оскільки , то вершина 4 є першою проміжною в найкоротшому шляху з вершини 1 до вершини 5. Потім віднаходимо наступну вершину на шляху до вершини 5, звертаючись до елемента γ45 = 3, далі γ35 = 5, отже, послідовність вершин шляху μ15 визначена:

μ15 = {1, 4, 3, 5}.

Аналогічно визначаються інші найкоротші шляхи. Наприклад, довжина шляху μ82 = d82 = 15, шлях складається з вершин:

μ15 = {1, 4, 3, 5}.

Аналогічно визначаються інші найкоротші шляхи. Наприклад, довжина шляху μ82 = d82 = 15, шлях складається з вершин:

μ82 = {8, 5, 3, 2}.