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

2.2 Задача определения гамильтоновых циклов.

Цикл, проходящий по всем вершинам графа G, называется гамильтоновым.

При решении задач САПР важное значение имеют графы специального вида — эйлеровы и гамильтоновы.

Связный граф G=(X,U) называется эйлеровым, если существует замкнутая цепь (цикл), проходящая через каждое его ребро только один

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

Конечный граф называется эйлеровым, если он связен и все его локальные степени четны.

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

Цикл, проходящий по всем вершинам графа G один раз, называется гамильтоновым, a G называется гамильтоновым графом.

1

8 1

4 3 2 10 4

5

7 3 2 5

7 6

8 9 6

Н еэйлеров граф (Имеет

G Гамильтонов цикл) Эйлеров граф

Полуэйлеров граф

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

Суть: имеется n-городов (вершин графа) и заданы расстояния между городами. Коммивояжер находится в городе X1. Ему необходимо посетить только по одному разу все остальные n-1 городов и вернуться в X1, чтобы общее пройденное расстояние было минимальным.

Рассмотрим алгоритм Хелда и Карпа.

1. Строятся все кратчайшие пути, соединяющие X1 с любой вершиной L(L=2,3,...n). Длина любого из них равна расстоянию d1,L от X1 до ХL.

2. Определяются путь минимальной длины, соединяющий X1 и ХL и проходящий через одну промежуточную вершину Хm.

Зная длину минимального пути из X1 в XL с одной промежуточной вершиной, можно определить длину пути минимальной длины между X1 и XL, проходящего через 2-е промежуточные вершины, через 3 и т.д. При известном числе промежуточных вершин обязательно будет построен путь минимальной длины из X1 в любую вершину, проходящий через все остальные вершины. Тогда можно определить минимальный путь с учетом возвращения в X1.

Пример 1. Пусть граф G задан матрицей расстояния.

10

1 8 5

2

20

1. Согласно алгоритму определяется пути ведущие из X1 в XL (L=2,3).

Длина пути определяется весом ребер.

Из матрицы D d1,2 = 10,

d1,3 = 8.

2. Находим пути минимальной длины, соединяющие X1 с Х2 и проходящие через промежуточные вершины.

d31,2 = d1,3 + d3,2 = 8 + 2 = 10,

d21,3 = d1,2 + d2,3 = 10 + 20 = 30.

3. Определим минимальную длину пути, включая возвращение в X1.

d31,2,1 = d31,2 + d2,1 = 10 + 5 = 15 — min X1 → Х3 → X2 → X1

d21,3,1 = d21,3 + d3,1 = 30 + l = 31.

П ример 2.

1. d1,2 = 8

d1,3 = 40

d1,4 = 32

2.

3. С возвращением в X1.

d1,4,2,3,1 = 53 + 14 = 67 d1,3,2,4,1 = 57 + 27 = 84

d1,4,3,2,1 = 53 + 5 = 58 d1,2,3,4,1 = 33 + 27 = 60

d1,2,4,3,1 = 26 + 14 = 40 d1,3,4,2,1 = 62 + 5 = 67