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

11.2 Краткие теоретические сведения

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

Существует только достаточные условия существования гамильтоновых циклов на графе. Приведем несколько таких признаков.

Граф, обладающий гамильтоновым циклом, будем называть гамильтоновым.

Теорема Дирака. Граф гамильтонов, если степень любой его вершины удовлетворяет неравенству , где n — число вершин графа.

Теорема Оре. Граф гамильтонов, если степень любых двух его несмежных вершин и удовлетворяет неравенству .

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

Пусть граф G задан своей булевой матрицей смежности H. Заменим малоинформативные единицы в этой матрице на имена соответствующих вершин. Возведение в степень такой модифицированной матрицы даст уже больше информации о маршрутах. Введем, таким образом, модифицированную матрицу B следующим правилом: элемент матрицы B равен , если существует путь из вершины в вершину . Далее последовательно находим матрицы , где под произведением вершин понимается некоммутативная бинарная операция, заданная на множестве слов. Слово — это упорядоченная последовательность вершин (букв). Произведение слова и слова есть слово . Оператор , действующий на элементы матрицы, вычеркивает (обнуляет) те элементы, в которых содержатся вершины или . Такие элементы указывают на контуры, замыкающиеся на или . Для упрощения расчетов можно обнулять главную диагональ матрицы , кроме последней , т.к. ее диагональ и содержит все искомые гамильтоновы циклы, без начальной и конечной вершины, которые необходимо добавить.

11.3 Пример выполнения расчетов по поиску всех гамильтоновых циклов

на ориентированном графе

Пусть в результате удаления нескольких дуг на исходном графе (рис. 11.1) получен следующий граф G (рис. 11.2).

Определяем гамильтонов или негамильтонов граф G. Для этого рассчитываем степени его вершин и используем теорему Дирака (теорему Оре применить нельзя, так как все вершины графа попарно смежны друг другу). Результаты расчетов сведены в табл. 11.2.

Табл. 11.2 – Определение наличия гамильтоновых

циклов на графе G

Характеристика

графа G

Вершины графа G

a

b

c

d

g

4

2

3

3

2

2

5

3

3

3

+

6

7

3

6

5

да

да

да

да

да

Анализ данных из табл. 11.2 позволяет сделать вывод, что граф гамильтонов.

Находим все гамильтоновы циклы на графе G. Матрица H графа G показана на рис. 11.2. На рис. 11.3 показана модифицированная матрица смежности B графа G.

H

a

b

c

d

g

a

0

1

1

1

1

b

0

0

1

0

1

c

1

1

0

1

0

d

1

0

1

0

1

g

0

1

0

1

0

B

a

b

c

d

g

a

0

b

c

d

g

b

0

0

c

0

g

c

a

b

0

d

0

d

a

0

c

0

g

g

0

b

0

d

0

Рис. 11.2 — Матрица H смежности графа G

Рис. 11.3 — Модифицированная матрица B смежности графа G

Умножаем матрицу B на матрицу H = . Получаем матрицу (рис. 11.4, обозначения строк и столбцов удалены).

М

c+d

c+g

b+d

c+g

b+d

c

c+g

0

c+g

0

d

a

a+b+d 0

a

a+b+d 0

c

a+c+g

a

a+c+g

a

d

0

b+d

0

b+d

атрицы умножаются аналогично булевым матрицам (см. РГР №1), при этом конъюнкция заменяется на операцию умножения, а дизъюнкция — на операцию сложения.

Рис. 11.4 — Матрица

П

0

c+g

b+d

c+g

b+d

c

0

0

c+g

0

d

a

0

a

a+b+d 0

c

a+c+g

a

0

a

d

0

b+d

0

0

рименяем к матрице оператор . Получаем матрицу (рис. 11.5).

Рис. 11.5 — Матрица

Умножаем матрицу B на матрицу , получаем матрицу (рис. 11.6).

bc+cd+dc+gd

ca+da+dc+dg

da+gb+gd

bc+bg+ca

ca+cb+cd+da

cd+gd

ca

gb+gd

ca

ca +cb+cd

bc+dc

ac+ag+da+dc+dg

ab+ad+da

ac+ag+bc+bg

ab+ad+da

cd+gd

ac+ag+ca

ab+ad+gb+gd

ac+ag+ca

ab+ad+ca+cb+cd

bc+dc

da+dc+dg

da

bc+bg

da

Рис. 11.6 — Матрица

Применяем к матрице оператор . Получаем матрицу (рис. 11.7).

0

dc+dg

gb+gd

bc+bg

cb+cd

cd+gd

0

gd

ca

ca +cd

0

ag+da+dg

0

ag+bg

ab+ad+da

0

ac+ag+ca

ab+gb

0

ab+ca+cb

bc+dc

da+dc

da

bc

0

Рис. 11.7 — Матрица

Н

0

сdg+gbc

bgd+dgb

cbg+gbc

bcd+dcb

gdc

0

gda

cag

cad +cda

bgd

adg+dag

0

abg

dab

gbc

cag

agb

0

acb+cab

bcd

dac+dca

dab

bca

0

иже, на рис. 11.8 приводим матрицу , опуская промежуточные вычисления (при выполнении РГР №7 все расчеты приводятся полностью).

Рис. 11.8 — Матрица

М

bgdc+cbgd+

+dgbc+gbcd

0

0

0

0

0

cadg+cdag+

+gdac+gdca

0

0

0

0

0

abgd+adgb+

+bgda+dagb

0

0

0

0

0

acbg+agbc+

+cabg+gbca

0

0

0

0

0

bcad+bcda+

+dacb+dcab

атрица получается диагональной (рис. 11.9). Процесс вычисления матриц завершен.

Рис. 11.9 — Матрица

К полученным слагаемым в элементе матрицы добавляем в начале или в конце (в данном примере в начале) по вершине (рис. 11.10).

abgdc+acbgd+adgbc+agbcd

bcadg+bcdag+bgdac+bgdca

cabgd+cadgb+cbgda+cdagb

dacbg+dagbc+dcabg+dgbca

gbcad+gbcda+gdacb+gdcab

Рис. 11.10 — Диагональные элементы матрицы с добавленными в начале слагаемых вершинами

Выполним круговую перестановку в каждом слагаемом диагональных элементов матрицы с добавленными в начале вершинами (кроме первой строки на рис. 11.10). Правило круговой перестановки: «Фиксируем в слагаемом положение вершины а. Она должна стоять крайней слева. Берем в слагаемом первую слева вершину от а и переносим ее на место после последней вершины в слагаемом. Если вершина а все еще не крайняя слева, то берем в слагаемом первую вершину слева от а и переносим ее на место после последней вершины в слагаемом и т.д. до тех пор, пока вершина а не станет крайней слева в слагаемом». Получим список на рис. 11.11.

abgdc+acbgd+adgbc+agbcd

adgbc+agbcd+acbgd+abgdc

abgdc+adgbc+agbcd+agbcd

acbgd+agbcd+abgdc+adgbc

adgbc+agbcd+acbgd+abgdc

Рис. 11.11 — Диагональные элементы матрицы с добавленными в начале слагаемых вершинами

Удаляем из списка на рис. 11.11 одинаковые слагаемые. Получаем список гамильтоновых циклов графа G (рис. 11.12).

abgdс , adgbcc, agbcd, acbgd

Рис. 11.12 — Список гамильтоновых циклов графа G

На этом расчеты закончены.