Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
80_95.doc
Скачиваний:
17
Добавлен:
17.09.2019
Размер:
698.88 Кб
Скачать

Гамильтоновы графы и задача коммивояжера

Устроители больших выставок часто должны решать одну и ту же проблему: как организовать осмотр так, чтобы дать возможность в отведенное время ознакомиться со всей экспозицией наибольшему числу желающих.

Чтобы решить эту задачу, необходимо разместить указатели таким образом, чтобы перемещаясь в указанном направлении, осмотреть каждый экспонат ровно один раз. Если перевести решение задачи на язык графов, то необходимо найти такой цикл, чтобы каждая вершина графа проходилась ровно один раз. Такой цикл называется гамильтоновым циклом, а граф, в котором существует гамильтонов цикл – гамильтоновым графом.

Название гамильтонов граф связано с именем математика У. Гамильтона, который в 1859 году предложил игру «Кругосветное путешествие»:

Каждой из 20 вершин додекаэдра приписано название одного из крупнейших городов мира. Требуется, переходя от одного города к другому по ребрам додекаэдра, посетить каждый город ровно один раз и вернуться в исходный город (рис. 6)

На первый взгляд кажется, что раз между эйлеровым и гамильтоновым графами просматривается прямая аналогия (какая?), то задача построения гамильтонова цикла должна решаться так же просто, как задача построения эйлерова цикла. Однако, до настоящего времени не найден общий критерий, позволяющий установить, является ли данный граф гамильтоновым, а также не найден универсальный алгоритм построения гамильтонова цикла.

Практическим применением гамильтоновых графов является «задача коммивояжера», которая формулируется следующим образом.

К

Рис.6.

оммивояжеру требуется выбрать кратчайший маршрут, посетив только по одному разу каждый из заданных пунктов, расстояния между которыми известны, и возвратиться в исходный пункт.

Задачу коммивояжера можно решить методом перебора: составить все возможные маршруты, найти их длину и выбрать кратчайший маршрут. Например: на рис. 7 представлена схема маршрутов, известны расстояния между городами

АВ=7, АС=5, АД=4, ВС=6, ВД=1, СД=8

Всего возможных циклов шесть –АВСДА, АСВДА, АВДСА, АСДВА, АДВСА, АДСВА. Их длины, соответственно, равны 25, 16, 21, 21,16, 25. Кратчайшими являются маршруты АСВДА и АДВСА.

Существует еще один метод решения задачи коммивояжера - метод ветвей и границ.

Сети

В теории принятия решений граф интерпретируется как сеть, вершины графа называют узлами сети.

Рассмотрим несколько задач.

    1. Задача минимизации дерева расстояний

Иногда эта задача называется задачей о соединении городов. Имеется n городов , которые нужно соединить между собой сетью дорог. Известна стоимость сооружения каждой дороги . Какой должна быть сеть дорог, связывающая все города, чтобы стоимость ее сооружения была минимальна?

Алгоритм.

1.Выбираем любой узел сети и находим ребро с минимальной величиной . Соединяем два узла (i, j) ребром.

2. Выбираем следующий узел с минимальным значением до уже выбранных узлов. В случае равенства значений выбираем произвольно один из узлов.

3. Если все узлы сети соединены ребрами, то задача решена. В противном случае переходим к шагу 1.

Пример. Пусть необходимо соединить города А, В, С, Д сетью дорог минимальной стоимости, если известна стоимость сооружения каждой дороги.

Решение. В качестве начального узла выбираем узел А. Дорога с минимальной стоимостью связывает узел А с узлом В (с=10). Рассматриваем узла А и В. Из них выходят дороги АС (с=48), АД (с=45), ВС (с=18) и ВД (с=21). Дорога минимальной стоимости 18 есть дорога ВС. Присоединяем узел С к узлам А и В. Осталось присоединить узел Дорога с минимальной стоимостью с=14 есть дорога СД. Таким образом, соединили все узлы сети дорогами (рис. 8). При этом минимальная стоимость составит minC=10+18+14=42.