Page 45 - 4387
P. 45

проміжних  вершину  m,  оскільки  будь-який  контур  у  вихідному

            графі не має від'ємної довжини. Отже, такий найкоротший шлях з

            вершини i у вершину m повинен мати своєю першою частиною

            найкоротший  шлях  з  вершини  i  у  деяку  вершину  j  (j<m),  який

            допускає  використання  в  якості  проміжних  тільки  m-1  перших

            вершин графа, а другою частиною – найкоротшу дугу, що веде з

            вершини  j  у  вершину  m  (звичайно,  слід  розглядати  тільки  такі

            вершини  j,  для  яких  існує хоча б одна дуга, що веде з  j  у  m).

            Аналогічно,  найкоротший  шлях  з  вершини  m  у  вершину  i,  у

            якому  допускається  використання  в  якості  проміжних  тільки  m

            перших  вершин  графа,  повинен  мати  своєю  першою  частиною

            найкоротшу дугу, що веде з вершини m у деяку вершину j (j<m), а

            другою частиною – найкоротший шлях з вершини j в вершину i,

            який  допускає  використання  в  якості  проміжних  тільки  (m-1)

            перших вершин (звичайно, слід розглядати тільки такі вершини j,

            для  яких  існує  хоча  б  одна  дуга,  що  веде  з  m  у  j).  Нарешті,


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

            Данцига.

                   Крок  1.  Занумерувати  вершини  вихідного  графа  цілими

            числами від 1 до N. Сформувати матрицю  , (розмірністю N×N),
                                                                         0
            кожний елемент   якої визначає довжину найкоротшої дуги, що
                                     0
                                     ,
            веде  з  вершини  i  у  вершину  j.  При  відсутності  такої  дуги

                             0  = ∞.
            присвоїти 
                             ,
                   Крок 2. Через   позначається матриця розмірністю m×m з
                                          
            елементами   ,  m=1,  2,  ...,  N.  Послідовно  визначити  елементи
                                
                                ,
                                                                  −1   для  m,  що  приймає
            матриці     за  елементами  матриці  
            значення 1, 2, ..., N:




                                                        44
   40   41   42   43   44   45   46   47   48   49   50