Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка2011.doc
Скачиваний:
2
Добавлен:
28.04.2019
Размер:
327.17 Кб
Скачать

Зразок оформлення розділу „Аналізу завдання”

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

Подібні задачі виникають при виборі маршрутів в обчислювальних мережах і транспортних системах. У обчислювальних мережах рішення подібних задач визначає склад і структуру мережевих протоколів для обслуговування руху пакетів інформації. За даними про завантаження каналів обчислюється найбільш оптимальний маршрут проходження пакету інформації. При знаходженні такого шляху до пакету додається заголовок, в якому указують перелік вузлів для переходу від вершини хi до вершини хj або чергову вершину переходу. У транспортних системах рішення подібних задач визначає найекономніший по вартості або за часом маршрут руху транспортної одиниці.

Кожна вершина в такому графі використовується тільки один раз, а довжина найкоротшого шляху визначиться сумою вартостей ребер для переходу i,j=(хi;...хk;...хj):

Li,j=m,n lm,n, где im, nj, mn.

Для пошуку найкоротших шляхів є декілька алгоритмів. Алгоритми Форда-Беллмана і Дейкстри дозволяють знайти найкоротші шляхи від заданої вершини графа до будь-якої іншою. В результаті цих обчислень формується граф типу “дерево” з коренем в заданій вершині. Алгоритми Флойда і Данцига дозволяють шукати найкоротші шляхи між будь-якою парою вершин графа типу мережа.

У основі всіх алгоритмів лежить операція порівняння двох простих маршрутів. На мал. 30 показані два прості маршрути, що сполучають вершини хi і хj. Вибір найкоротшого шляху між вершинами хi і хj є результат порівняння довжин двох маршрутів, тобто Li,j=min{li,j; (li,p + lp,j)}. Якщо існує декілька вершин, суміжних з вершинами хi і хj слід виконувати процедуру послідовно, порівнюючи довжини двох (див.Мал.)

Алгоритм Флойда. Для того, щоб вибирати найкоротші шлях і переходи між вершинами xi і xj, необхідно використовувати дві матриці: матрицю найкоротших шляхів ||l(n;n)|| і матрицю найкоротших переходів ||(n;n)||, які дозволяють обчислювати і порівнювати різні маршрути через базову вершину графа.

lp

x0

..

xi

xp

xj

..

xn

x0

0

..

l0i

l0j

..

l0n

..

..

0

..

..

..

..

..

xi

li0

..

0

lip

lij

..

lin

xp

..

lpi

0

lpj

..

lpn

xj

lj0

..

lji

ljp

0

..

ljn

..

..

..

..

..

..

0

..

xn

ln0

..

lni

lnp

lnj

..

0nn

Вершина хp в матриці найкоротших шляхів називається базовою, а рядок і стовпець матриці ||lp|| - базовими (виділені в матриці заливкою), якщо вона дозволяє порівнювати найкоротші шляхи між будь-якою парою вершин xi і xj, суміжних з вершиною хp. Базова вершина дозволяє знайти шлях з вершини xi у вершину xj через вершину xp по формулі lij=(lip+ lpj), представити цей результат для порівняння з наявним значенням lij і вибрати найкоротший шлях. Якщо як базова, використовувати послідовно всі вершини, починаючи з вершини х0, то за p=(n-1) кроків ітерації можна знайти найкоротші шляхи між будь-якою парою вершин. Для p=0 матриця ||l0|| є матриця вартостей графа.

p

x0

..

xi

xp

xj

..

xn

x0

x0

..

xi

xp

xj

..

xn

..

x0

..

xi

xp

xj

..

xn

xi

x0

..

xi

xp

xj

..

xn

xp

x0

..

xi

xp

xj

..

xn

xj

x0

..

xi

xp

xj

..

xn

..

x0

..

xi

xp

xj

..

xn

xn

x0

..

xi

xp

xj

..

xn

Матриця переходів p є похідною матриці найкоротших шляхів. Для p=0 елементи матриці 0 є кінцеві вершини переходу з хi в хj. Тому в кожному стовпці хj матриці 0 вказана вершина хj. На p-му кроці ітерації відбувається заміна вершини переходу вершиною найкоротшого переходу по формулах:

а) якщо (li,p+ lp,j)pli,jp, то i,j (p+1)= i,j pj;

б) якщо (li,p+ lp,j)p<li,jp, то i,j (p+1)p.

Отже, для аналізу n-вершинного графа необхідно послідовно побудувати n матриць найкоротших шляхів і найкоротших переходів.

Додаток Є