Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2260.doc
Скачиваний:
71
Добавлен:
24.09.2019
Размер:
3.71 Mб
Скачать

8. Гамильтоновы графы

8.1. Гамильтоновы маршруты. Задача коммивояжера

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

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

1. Задача Гамильтона. Каждой из двадцати вершин додекаэдра приписывается название одной из столиц государства. Требуется, проходя по ребрам додекаэдра, вернуться в исходный город, посетив каждую столицу ровно один раз. Эта задача приводит к отысканию в графе додекаэдра гамильтонова цикла.

2. Задача о шахматном коне. Требуется обойти конем все клетки шахматной доски, побывав в каждой клетке по одному разу и последним (64-м) ходом вернуться в начальную клетку. Задача сводится к нахождению гамильтонова цикла симметричного графа. Решение Эйлера представлено в таблице:

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

Рассмотрим граф, вершинами которого являются населенные пункты, а ребрами (дугами) – дороги. Каждому ребру (дуге) припишем вес – длину соответствующей дороги. Тогда требуется найти на этом графе гамильтонов маршрут наименьшей длины.

Задача коммивояжера является классической задачей дискретной оптимизации и имеет многочисленные приложения: транспортные задачи, задачи соединения пунктов линиями электропередач, водопроводами, газо- и нефтепроводами.

4. Задача планирования. В ряде отраслей промышленности, например, в химической и фармацевтической, возникает следующая задача планирования. На автоматической линии последовательно производится продукция различного наименования. Допустим, что эта продукция производится в непрерывном цикле: после производства -го продукта возобновляется производство первого продукта в том же фиксированном цикле. Для каждой пары продукции известна стоимость перенастройки автоматической линии для перехода от производства продукта к производству продукта и – стоимость перенастройки на обратный переход. Возникает вопрос: можно ли найти такую циклическую последовательность производства продуктов, при которой суммарная стоимость затрат на перенастройку была бы наименьшей?

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

Задача распознавания гамильтоновых маршрутов имеет внешнее сходство с задачей распознавания эйлеровых маршрутов. Однако решение первой задачи наталкивается на значительные трудности. Сложность решения задач нахождения гамильтоновых маршрутов проявляется, во-первых, в отсутствии достаточно общих критериев их существования, и, во-вторых, в отсутствии эффективных алгоритмов их отыскания. Интуитивно понятно, что если граф содержит много ребер и эти ребра к тому же достаточно равномерно распределены, то граф, вероятно, является гамильтоновым. Так, например, в полном графе с вершинами существует гамильтоновых циклов. Гамильтоновы циклы наименьшей длины в полном графе можно найти по следующей простой схеме. Действительно, зафиксируем любую вершину. Из нее способами можно перейти в другую вершину. Из второй вершины способами возможен переход в третью вершину и т.д. В результате получим гамильтоновых циклов, из которых выбирается минимальный. Поскольку с ростом растет быстрее, чем любой полином от (при ), и время решения задачи пропорционально числу возможных циклов, то нахождение гамильтоновых циклов методом полного перебора оказывается практически невозможным даже для сравнительно небольших . Например, при число возможных вариантов равно 51 090 942 171 709 400 000.

Известно [4], что задача нахождения гамильтоновых маршрутов принадлежит к классу -полных задач (см. пункт 2.2).

Сформулируем задачу коммивояжера. Пусть орграф с вершинами задан матрицей расстояний , где – длина дуги . Если переход из i-ой вершины в j-ую запрещен, то полагаем .

Пусть – множество гамильтоновых контуров на орграфе и

– длина гамильтонова контура . Рассмотрим комбинаторную оптимизационную задачу: требуется найти гамильтонов контур наименьшей длины

.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]