- •Часть 1. Применение алгоритма Литтла к задаче коммивояжера (Метод ветвей и границ). Подготовка исходных данных для использования алгоритма Литтла.
- •Получение границы для ветви всех маршрутов в транспортной сети. Первое действие приведения к d по строкам. (Из строки вычитается самое минимальное значение, найденное в строке).
- •Второе действие приведения к d по столбцам. (Из столбцов вычитается самое минимальное значение, найденное в столбце).
- •Выбираем дорогу 8,5 и перемещаемся от пункта 8 до пункта 5.
- •Действие приведения к d по строкам дает результат.
- •Действие приведения к d по столбцам дает результат.
- •Выбираем дорогу 6,7.
- •Приведенное по строкам и столбцам матрицы d.
- •Таким образом меньше чем общая длина циклов обхода всех пунктов в данной ветви уже увеличивается на 0.
- •Поиск третьей дороги. Оцениваются нули:
- •Выбираем дорогу 5,6.
- •Граф ветвей и границ в этот момент будет.
- •Поиск четвертой дороги. Оцениваются нули:
- •Выбираем дорогу 2,8.
- •Граф ветвей и границ в этот момент будет.
- •Поиск пятой дороги. Оцениваются нули:
- •Выбираем дорогу 7,4.
- •Часть2.
- •Пример доказательства секвенции: ф1˫ (((ф1 ф2)) (ф1 ф2)).
- •Правила вывода.
Выбираем дорогу 8,5 и перемещаемся от пункта 8 до пункта 5.
В матрице D удаляется строчка 8 и столбец 5.
В дороге 8,5 пройти в обратном направлении уже нельзя поэтому элемент D[5,8] = -.
Если мы не пойдем дорогой 8,5, то общая длина маршрутов в такой ветви увеличится на цену 2.
|
1 |
2 |
3 |
4 |
6 |
7 |
8 |
1 |
- |
0 |
0 |
0 |
- |
2 |
- |
2 |
0 |
- |
- |
0 |
- |
- |
1 |
3 |
0 |
- |
- |
0 |
- |
3 |
- |
4 |
0 |
0 |
0 |
- |
3 |
0 |
- |
5 |
- |
3 |
- |
1 |
1 |
- |
- |
6 |
- |
- |
- |
3 |
- |
0 |
3 |
7 |
2 |
- |
3 |
0 |
0 |
- |
1 |
Действие приведения к d по строкам дает результат.
|
1 |
2 |
3 |
4 |
6 |
7 |
8 |
|
|
1 |
- |
0 |
0 |
0 |
- |
2 |
- |
0 |
Вычитаемых чисел из строк |
2 |
0 |
- |
- |
0 |
- |
- |
1 |
0 |
|
3 |
0 |
- |
- |
0 |
- |
3 |
- |
0 |
|
4 |
0 |
0 |
0 |
- |
3 |
0 |
- |
0 |
|
5 |
- |
2 |
- |
0 |
0 |
- |
- |
1 |
|
6 |
- |
- |
- |
3 |
- |
0 |
3 |
0 |
|
7 |
2 |
- |
3 |
0 |
0 |
- |
1 |
0 |
Действие приведения к d по столбцам дает результат.
|
1 |
2 |
3 |
4 |
6 |
7 |
8 |
|
|
|
1 |
- |
0 |
0 |
0 |
- |
2 |
- |
0 |
Вычитаемых чисел из строк |
|
2 |
0 |
- |
- |
0 |
- |
- |
0 |
0 |
||
3 |
0 |
- |
- |
0 |
- |
3 |
- |
0 |
||
4 |
0 |
0 |
0 |
- |
3 |
0 |
- |
0 |
||
5 |
- |
2 |
- |
0 |
0 |
- |
- |
1 |
||
6 |
- |
- |
- |
3 |
- |
0 |
2 |
0 |
||
7 |
2 |
- |
3 |
0 |
0 |
- |
0 |
0 |
||
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|
||
|
Вычитаемых чисел из столбцов
|
|
||||||||
Общая сумма вычитаемых из строк и столбцов будет 1+1=2.
Таким образом меньше чем общая длина циклов обхода всех пунктов в данной ветви уже увеличивается на 2.
Граф ветвей и границ в этот момент будет.
В матрице далее нужно запретить дороги, которые могут создать более короткие циклы элемент матрицы D [I, J]=- полагается равным.
Поиск второй дороги.
Оцениваются нули
|
1 |
2 |
3 |
4 |
6 |
7 |
8 |
|||||||
1 |
- |
0 |
0 |
0 |
|
0 |
0 |
- |
2 |
- |
||||
2 |
0 |
0 |
- |
- |
0 |
0 |
- |
- |
0 |
0 |
||||
3 |
0 |
0 |
- |
- |
0 |
0 |
- |
3 |
- |
|||||
4 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
3 |
0 |
0 |
- |
|||
5 |
- |
2 |
- |
0 |
0 |
0 |
0 |
- |
- |
|||||
6 |
- |
- |
- |
3 |
- |
0 |
2 |
2 |
||||||
7 |
2 |
- |
3 |
0 |
0 |
0 |
0 |
- |
0 |
0 |
||||
Самый дорогой ноль D[6,7]=2.
