Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



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

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

 

Розглянемо наступну задачу: заданий скінченний орієнтований граф G, кожному ребру якого приписана його числова характеристика („довжина”). Необхідно знайти найкоротший шлях від заданої вершини (позначимо її через s) до всіх решта вершин графу.

Для розв’язання цієї задачі найбільшого розповсюдження набув алгоритм Декстри, згідно з яким всі вершини графу G(V) необхідно впорядкувати по зростанню їх відстані від вершини s:

d(s, u0) £ d(s, u1) £ … £ d(s, un) і V = { u0, u1, …, un}.

Ця послідовність будується інтеративно. Перша вершина в ній відома:

u0 = s; d(s, u0) = 0.

Нехай відомі перші (l + 1) вершини цієї послідовності:

{u0 = s, u1, …, ul},

які ми будемо надалі називати фіксованими. Це означає, що вершина u1 ближча від s, ніж всі решта (тобто нефіксовані) вершини.

Для кожної нефіксованої вершини у графу модифікуємо її відстань від s: якщо існує e(ui, v) і d(s, ui) + d(ui, v) £ d(s, v) , то d(s, v) = d(s, ui) + d(ui, v) і передостанньою вершиною в найкоротшому (на даний час) шляху, який з’єднує s з v, буде вершина ui. Після цього серед всіх нефіксованих вершин знаходимо ту, відстань до якої від s є найменшою. Ця вершина і буде наступною в послідовності (тобто ui + 1).

 

Масиви, що використовуються:

VID: VID(i) – найкоротша на даний момент відстань від s до i -ї вершини графу;

FIX: FIX(i) = 1, якщо i-та вершина графу є фіксованою;

PRED: PRED(i) містить передостанню вершину в найкоротшому з усіх відомих на даний момент шляхів від s до і-ї вершини графу.

1) Початкові установки.

Для початкової вершини: VID(s) = 0, FIX(s) = 0, PRED(s) = s.

Для всіх інших вершин графу: VID(v) = ¥, FIX(v) = 0, PRED(v) = v.

Біжуча вершина: u = s, i = 1.

2) Цикл по тих вершинах графу G, для яких FIX(v) = 0

якщо існує e = (u, v) і VID(u) + d(u, v) £ VID(v)

то VID(v) = VID(u) + d(u, v), PRED(v) = u.

3) Серед вершин графу G, для яких FIX(v) = 0, знаходимо ту вершину v0, для якої

.

4) FIX(v0) = 1, u = v0.

5) i = i + 1.

якщо i £ n,

то йти на 2).

6) Кінець.

 

В результаті масив VID містить найкоротші відстані від s до всіх вершин графу; по масиву PRED можна отримати найкоротший шлях від s до довільної вершини графу.

Приклад.

 

 

Рис.7

 

Робота алгоритму проілюстрована в табл. 5, в якій кожний рядок відповідає одному циклу роботи алгоритму. Фіксовані вершини підкреслені, а біля вершини „u” на кожному кроці стоїть зірочка.

 

Таблиця 5

i VID PRED
A B C D E F A B C D E F
0* A B C D E F
6* A A C A E A
7* A A C A E A
8* A A C A E A
16* A A C A D A
A A C A D A

 

Найкоротший шлях від A, наприклад, до E будується, використовуючи масив PRED, таким чином: E ¬ D ¬ A.

 


Читайте також:

  1. Rete-алгоритм
  2. Алгоритм
  3. Алгоритм
  4. Алгоритм 1.
  5. Алгоритм RLE
  6. Алгоритм безпосередньої заміни
  7. Алгоритм Берлекемпа-Мессі
  8. Алгоритм відшукання оптимального плану.
  9. Алгоритм Деккера.
  10. Алгоритм Деккера.
  11. Алгоритм діагностики при травмах живота.




Переглядів: 1787

<== попередня сторінка | наступна сторінка ==>
Відстань, діаметр, радіус і центр графу | Гамільтонові цикли

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.014 сек.