Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab5_descreet_math.doc.doc
Скачиваний:
9
Добавлен:
18.03.2016
Размер:
4.2 Mб
Скачать

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

Як видно з останнього прикладу ваги вершин Vi перераховувались неодноразово і з'являлись декілька раз в масиві М, будучи джерелом нових хвиль розповсюдження ваг. Цей недолік може бути усунений за допомо­гою алгоритму Дейкстри, відмінність якого полягають в тому, що на кожному кроці обирається для розповсюдження ваги вершина, яка має найменшу вагу, яка не розповсюдила його на другі вершини. Таким чином, в алгоритмі Дейкстри потрібно відмітити вершини, які вже розповсюдили свою вагу, а з інших вибрати чергову з найменшою вагою.

Формулювання алгоритму.

l. VH=0, x1(iH)(Vi=). Всі вершини не відмічені.

2. Серед невідмічених вершин вибираємо х1 з найменшою вагою Vі, вершину відмічаємо, якщо Vі=, то робимо висновок, що маршрутів з ве­ршини хн до вершини хк нема, інакше, якщо вибрана вершина хік, то виконуємо п.3, інакше перераховуємо ваги вершин, які належать G(xi): Vj=min(Vj,Vi+lij). Виконуємо п.4.

3. Аналогічний п.3 хвильового алгоритму.

Як бачимо, процес розв'язання для обох прикладів трохи скоротився, хоча на кожному кроці необхідно вибирати вершину меншої ваги.

X1

X2

X3

X4

X5

X6

0

1

4

5

6

5

7

6

9

8

X1

X2

X3

X4

X5

X6

0

5

2

4

5

7

5

6

9

8

Примітка про найдовші маршрути

В багатьох додатках поряд з найкоротшими маршрутами постає за­дача побудови найдовших маршрутів. Наприклад, в програмі необхідно знати не тільки найменший, але й найбільший час реалізації. При побудові графіка робіт найбільший час виконання робіт має суттєве значення і т.д. Якщо в алгоритмах пошуку найкоротшого маршруту замінити процедуру розрахунку ваг вершин

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

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

Приклад.

X1

X2

X3

X4

X5

X6

M

Рисунок 4

0

0

0

0

0

0

1

0

1

4

0

0

0

2,3

0

1

4

6

0

0

3,4

0

1

4

6

8

0

4,5

0

1

4

6

8

10

5,6

0

1

4

6

8

10

6

0

1

4

6

8

10

Побудовані три найдовші маршрути

Всі вони мають довжину 10.

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