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