Page 85 - 4496
P. 85

виходить з вершини з меншим номером у вершину з більшим
                            номером і при цьому можлива послідовна нумерація вершин
                            від 1 до n=|A|.
                                   Будемо використовувати широко розповсюджений у
                            програмуванні      прийоми      для     скорочення      розв'язку
                            комбінаторних завдань - спочатку витрачаються додаткові
                            зусилля на попереднє впорядкування, потім в упорядкованій
                            множині більш просто знаходять розв'язок.
                                   1. Упорядкуємо множину вершин так, щоб будь-яка
                            дуга виходила з вершини з меншим номером і заходила у
                            вершину з більшим         номером. Це можна зробити так:
                            привласнимо початковій вершині номер 1. Усім вершинам A',
                            пов'язаним з початковою по вихідних дугах, зіставимо номера
                            від 2 до А'. Після цього перевіримо номери цих вершин на
                            виконання умови. Для будь-якої пари вершин, де умова не
                            виконується,     переставимо       номери     вершин.      Потім
                            розглядаються вершини, пов'язані по вихідних дугах з
                            множиною А' і т.д.
                                   2. Привласнимо всім вершинам ваги l(i)=0.
                                   3. Послідовно для вершин 1, 2, 3, ... проведемо
                            перерахування ваг за формулою

                                                    l(i) = max (l(i), l(j)+C ji ),

                            де максимум береться по всіх вершинах j, з яких є дуги у
                            вершину i. Це можна зробити, так як ваги всіх вершин j
                            обчислені раніше, тому що i>j. Скорочення обчислювальних
                            витрат у порівнянні з алгоритмом Дейкстри пов'язане з тим,
                            що відпадає необхідність на кожному кроці визначати чергову
                            вершину з мінімальною вагою для продовження розрахунків.
                                   4. Як і в алгоритмі Дейкстри, виділимо зворотним
                            ходом шуканий шлях.
                                   Приклад. Нехай вихідний граф має вигляд рис. 3.13. На
                            рисунку показана ситуація після виконання першого кроку,
                            коли зроблена перенумерація вершин. У табл. 3.2 зазначені
                            ваги вершин після виконання         другого й третього кроків
                            алгоритму.




                                                           82
   80   81   82   83   84   85   86   87   88   89   90