Page 30 - 4387
P. 30

2. Якщо  для  деякої  позначеної  вершини  х  відбувається

                  зменшення  величини  d(x),  то  із  цієї  вершини  та  інцидентної  їй

                  позначеної дуги позначення знімається.

                         3. Процедура  алгоритму  закінчується  тільки  тоді,  коли  усі

                  вершини  позначені  та  коли  після  виконання  кроку  2  жодне  із

                  чисел d(x) не змінюється.


                         Приклад  4.1.  Використовуючи  алгоритм  Белмана-Форда,
                  знайти у графі, зображеному на рис. 4.1, найкоротший шлях між


                  вершинами a та е.















                                                       Рисунок 4.1.


                         Розв'язок.


                         Крок  1.  Позначаємо  вершину  a.  Вважаємо,  що  d(a)=0,
                  d(x)=∞, для всіх вершин х, які не збігаються з a. Присвоюємо у=a.


                         Крок  2.  (y=a).  Розраховуємо  величину  d(x)  для  кожної  з
                  вершини (крім вершини а) за формулою (3.1):


                         d (b ) =  min{d   (b );d (a ) + c (a ,b )} =  min{∞   0 ; +  } 3 = 3;

                         d (c ) =  min{d   (c );d (a ) + c (a ,c )} =  min{∞   0 ; +  } 4 = 4;

                         d (d  )  = min{d  (d );d (a ) + ( dac  ,  )} = min{ ∞ 0 ;  + ∞} =  ∞;


                         d (e )  = min{d   (e );d (a ) + (ac  ,e )} = min{ ∞ 0;  + ∞}  =  ∞ .

                         Оскільки величина d(b)=3 є мінімальною з величин d(x), то

                  позначаємо вершину  b.  Так само позначаємо і дугу (a, b), яка і

                  визначає  величину  d(b).  Присвоюємо  у=b.  Поточне  дерево

                  найкоротших шляхів складайся з дуги (a, b) (рис. 4.2 а).

                                                              29
   25   26   27   28   29   30   31   32   33   34   35