- •Содержание
- •Глава 1. Задача китайского почтальона
- •Глава 2. Решение прикладных задач о коммивояжере
- •Глава 1. Задача китайского почтальона
- •Историческая справка.
- •1.2. Основные термины и теоремы теории графов.
- •1.3.Постановка задачи
- •1.4. Формулировка задачи на графе
- •1.5. Этапы решение задачи о почтальоне.
- •1.6. Алгоритмы.
- •1.6.1 Прямой алгоритм
- •1.6.3. Алгоритм Дейкстры.
- •Глава 2. Решение прикладных задач коммивояжера
- •2.1. Задача-сказка про колобка.
- •2.1.1. Прямой алгоритм
- •2.2.. Оптимизация процесса работы механической мастерской
- •2.2.1. Прямой алгоритм
- •2.2.2. Метод Литтла
- •Заключение
Глава 2. Решение прикладных задач коммивояжера
2.1. Задача-сказка про колобка.
Испекла бабка колобок и поставила его остывать на окошко. И решил колобок, что пока он остывает, он вполне может обежать лес, посмотреть на лесных жителей и снова вернуться к деду и бабке. Сказано – сделано. Спрыгнул колобок из окошка и покатился в лес. Помогите колобку найти кратчайший маршрут его движения по лесу, если расстояния между норами лесных жителей, а также домом деда и бабки даны в таблице 2.1. Для удобства присвоим сказочным персонажам номера:
Деду с бабкой – 1; Зайцу – 2; Волку – 3; Медведю – 4; Лисе – 5.
Таблица 2.1
|
Дед и бабка |
Заяц |
Волк |
Медведь |
Лиса |
Дед и бабка |
|
6 |
4 |
5 |
7 |
Заяц |
6 |
|
3 |
2 |
10 |
Волк |
4 |
3 |
|
9 |
11 |
Медведь |
5 |
2 |
9 |
|
8 |
Лиса |
7 |
10 |
11 |
8 |
|
Рис. 2.1. Граф-условие
2.1.1. Прямой алгоритм
;
;
;
;
;
;
;
;
;
;
;
.
Ответ: длина
маршрута колобка 24, порядок обхода
лесных жителей
Потраченное время: 10 минут
Сложность: низкая
Точность: метод дает хорошие результаты только в случае небольшого кол-ва вершин, если же вершин много, то решение может быть далеко не оптимальным, так как отсутствует возможность просчитывать шаги.
Алгоритм Литтла.
Таблица 2.2. Исходная
|
1 |
2 |
3 |
4 |
5 |
1 |
|
6 |
4 |
5 |
7 |
2 |
6 |
|
3 |
2 |
10 |
3 |
4 |
3 |
|
9 |
11 |
4 |
5 |
2 |
9 |
|
8 |
5 |
7 |
10 |
11 |
8 |
|
Шаг 1. Выполним зануление матрицы по строкам и по столбцам (табл. 2.3 - 2.4). Для этого находим наименьший элемент в строке (столбце) и вычитаем его из всех элементов строки (столбца). После зануления матрицы ее элементы должны содержать или положительные, или нулевые значения.
Таблица 2.3. Зануление по строкам
|
1 |
2 |
3 |
4 |
5 |
1 |
|
2 |
0 |
1 |
3 |
2 |
4 |
|
1 |
0 |
8 |
3 |
1 |
0 |
|
6 |
8 |
4 |
3 |
0 |
7 |
|
6 |
5 |
0 |
3 |
4 |
1 |
|
Сумма вычтенных значений по строкам равна: 4+2+3+2+7=18.
Таблица 2.4. Зануление по столбцам
|
1 |
2 |
3 |
4 |
5 |
1 |
|
2 |
0 |
1 |
0 |
2 |
4 |
|
1 |
0 |
5 |
3 |
1 |
0 |
|
6 |
5 |
4 |
3 |
0 |
7 |
|
3 |
5 |
0 |
3 |
4 |
1 |
|
Сумма вычтенных значений по столбцам равна: 3.
Общая сумма всех вычитаний: 18+3=21. Это и есть нижняя оценка.
Далее для каждой клетки матрицы, содержащей ноль, надо вычислить оценку клетки. Оценки клеток представлены в виде верхнего индекса в таблице 2.5.
Таблица 2.5. Расчет оценок клеток
|
1 |
2 |
3 |
4 |
5 |
1 |
|
2 |
|
1 |
|
2 |
4 |
|
1 |
|
5 |
3 |
1 |
|
|
6 |
5 |
4 |
3 |
|
7 |
|
3 |
5 |
|
3 |
4 |
1 |
|
Максимальная оценка 3 принадлежит двум клеткам 1-5 и 4-2. Поэтому за нулевое ребро принимается или ребро 1-5, или 4-2. Возьмем ребро 4-2.Из дальнейшего рассмотрения исключим четвертую строку и второй столбец.
Шаг 2.
Таблица 2.6. Исключение ребра.
|
1 |
3 |
4 |
5 |
1 |
|
|
1 |
|
3 |
1 |
|
6 |
5 |
2 |
4 |
1 |
|
5 |
5 |
|
4 |
1 |
|
Таблица 2.7. Зануление
|
1 |
3 |
4 |
5 |
1 |
|
|
0 |
|
3 |
0 |
|
4 |
4 |
2 |
3 |
0 |
|
4 |
5 |
|
4 |
0 |
|
Общая сумма зануления равна трем.
Таблица 2.8. Расчет оценок
|
1 |
3 |
4 |
5 |
1 |
|
|
|
|
3 |
|
|
4 |
4 |
2 |
3 |
|
|
4 |
5 |
|
4 |
|
|
Максимальная оценка 4 принадлежит 3-1 и 1-5. Выбираем ребро 3-1.
Шаг 3.
Таблица 2.9. Исключение ребер
|
3 |
4 |
5 |
1 |
|
|
|
2 |
|
|
4 |
5 |
4 |
|
|
Зануление невозможно. Максимальная оценка 4 принадлежит ребру 1-5.
Шаг 4.
Таблица 2.10. Исключение ребер
|
3 |
4 |
2 |
|
|
5 |
4 |
|
Оставшиеся не запрещенные ребра – 2-4 и 5-3.
Шаг 5.
Составим дерево ветвления алгоритма (Рис.2.2)
Рис.2.2. Дерево ветвления алгоритма
Построение оптимального маршрута выполним, используя рис. 2.2. На последнем шаге остались два свободных не запрещенных ребра 2-4 и 5-3.Оба ребра включаем в маршрут и добавляем ребра из левой ветви дерева.
Оптимальный маршрут будет состоять из ребер 2-4, 5-3, 1-5, 3-1, 4-2. После упорядочения получим: .
Ответ: длина оптимального маршрута колобка не менее 52, порядок объезда городов: .
Сложность: высокая
Затраченное время: 40 минут.
Точность: наиболее высока при большом кол-ве вершин
