Алгоритм Данцига

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

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

Алгоритм

Крок 1

Пронумерувати вершини вихідного графа цілими числами від 1 до N. Сформувати матрицю D0 (розмірністю NxN), кожен елемент i, j якої dij0 визначає довжину найкоротшої дуги яка веде з вершини i у вершину j. В разі відсутності такої дуги покласти dij0=.

Крок 2

Тут через Dm позначається матриця розмірністю mxm з елементами dijm,m=1,2,...,N. Послідовно визначити елементи матриці Dm з елементів матриці Dm1 для m що приймають значення 1,2,...N:

dmjm=mini=1,2,...m1(dmi0+dijm1)(j=1,2,...,m1)
dimm=minj=1,2,...m1(dijm1+djm0)(i=1,2,...,m1)
dijm=min(dimm+dmjm,dijm1)(i,j=1,2,...,m1)

Крім того, для всіх і і m покласти diim=0.

Див. також

Алгоритм Флойда — Воршала

Джерело

Російська Вікіпедія — Алгоритм Данцига