Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

АЛГЕБРАИЧЕСКИЙ МЕТОД НАХОЖДЕНИЯ ГАМИЛЬТОНОВА ЦИКЛА В ГРАФАХ (80

..pdf
Скачиваний:
8
Добавлен:
15.11.2022
Размер:
338.89 Кб
Скачать

УДК 517.6 Д 73

К.А. Дридгер

Оренбургский государственный педагогический университет

АЛГЕБРАИЧЕСКИЙ МЕТОД НАХОЖДЕНИЯ ГАМИЛЬТОНОВА ЦИКЛА В ГРАФАХ

Современные компьютерные технологии позволяют находить все новые методы решения задач, связанных с представлением программ на основе теоретико-графовых алгоритмов. Широкое применение графов связано с тем, что они являются естественным средством объяснения сложных ситуаций на интуитивном уровне, что в настоящее время, очевидно, обусловливает возрастающий научный интерес к методам обработки графов. Многие программные системы (системы принятия решения, системы автоматизации проектирования), как отмечают В.Н. Касьянов и В.А. Евстигнеев, включают элементы обработки графовых объектов и теоретико-графовых моделей.

Сегодня теория графов располагает достаточно обширным кругом методов нахождения гамильтонова цикла в графах (алгебраический метод, метод перебора, мультицепной метод). Задачи, в которых требуется определить содержит ли граф гамильтонов цикл или нет, в основном относятся к проблеме упорядочения и планирования операций. Наиболее яркими представителями класса задач теории графов по нахождению гамильтонова цикла являются следующие: 1) в данном ориентированном графе G требуется найти гамильтонов цикл (или все циклы), если существует хотя бы один такой цикл; 2) в данном полном ориентированном графе G, дугам которого приписаны произвольные веса, найти такой гамильтонов цикл, который имеет наименьший общий вес (задача коммивояжера).

В современной науке алгебраический метод, позволяющий ответить на вопрос, существует или нет в графе гамильтонов цикл, больше представляет теоретический интерес, чем практический. Так, алгебраические критерии НэшаУильямса, Оре, Поша слишком общие и не могут быть применены на практике для произвольных графов. Имеющиеся на данный момент алгебраические методы определения гамильтонова цикла не пригодны в задачах с несколькими десятками вершин, так как они требуют слишком большого времени работы и большой памяти компьютера.

Рассмотрим суть алгебраического метода нахождения гамильтонова цикла в графах (Йоу, Даниэльсон, Дхаван), который включает в себя построение всех простых цепей с помощью последовательного перемножения матриц.

Под внутренним произведением вершин цепи x1, x2, … , xk-1, xk понимается выражение вида x2 x3 ... xk 1 , не содержащее две концевые вершины x1 и xk.

Модифицированная матрица смежности B=[β(i, j)] – матрица размера (n×n), в которой β(i, j)=xj, если существует дуга из xi в xj, и β(i,j)=0 в противном случае.

Предположим, что дана матрица PL=[pL(i, j)], где pL(i, j) есть сумма внутренних произведений всех простых цепей длины L (L ≥ 1) между вершинами xi и xj для xi≠xj. Пусть pL(i, i)=0 для всех i.

Применяя определение алгебраического произведения матриц, получим:

 

B

P

 

 

'

[ p

'

(s, t)] (s, k) p (k,t)

(1)

 

 

 

 

L

L 1

 

 

 

 

 

P

 

L 1

k

L

 

 

 

 

 

 

 

 

 

 

 

 

Тогда p'

(s,t) является суммой внутренних произведений всех цепей из xs в xt

L 1

 

 

 

 

 

 

 

 

 

 

 

длины (L+1).

Так как

все

цепи

из

xk в xt, представленные

внутренними

произведениями из pL(k, t), являются простыми, то среди цепей, получающихся из указанного выражения, не являются простыми лишь те, внутренние произведения

которых в pL(k, t) содержат вершину xs. Получаем, что если из p'

(s,t) исключить

L 1

 

все слагаемые, содержащие xs, путем простой проверки, то будем иметь pL+1(s, t). Таким образом, матрица PL+1=[pL+1(s, t)], все диагональные элементы которой равны 0, является матрицей всех простых цепей длины (L+1).

Вычисляя B PL 1 , находим PL+2 и т. д., пока не будет построена матрица Pn-1, содержащая все гамильтоновы цепи, имеющие длину (n-1) между всеми парами вершин. Гамильтоновы циклы получаются тогда из цепей в Pn-1 и тех дуг графа G, которые соединяют начальную и конечную вершины каждой цепи. Также гамильтоновы циклы получаются из членов внутреннего произведения вершин, стоящих в любой диагональной ячейке матрицы B Pn 1 (все диагональные элементы в этой матрице одинаковые). Отметим, что в качестве начального значения матрицы P (т.е. P1) следует взять матрицу смежности A графа G, положив все ее диагональные элементы равными нулю.

Данный метод имеет серьезный недостаток. В процессе умножения матриц (т.е. когда L увеличивается) каждый элемент матрицы PL будет состоять из все большего числа членов вплоть до некоторого критического значения L, после которого число членов снова начнет уменьшаться. Это происходит вследствие того, что для малых значений L и для графов, обычно встречающихся на практике, число цепей длины (L+1), как правило, больше, чем число цепей длины L, а для больших значений L имеет место обратный процесс. Кроме того, так как

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

Однако существует вариант приведенного метода, который позволяет во много раз уменьшить необходимый объем памяти и время вычислений. Так как гамильтоновы циклы могут быть получены из членов внутреннего произведения любой диагональной ячейки матрицы B Pn 1 , то необходимо знать только элемент pn-1(1, 1). При этом на каждом этапе не обязательно вычислять и хранить всю матрицу PL, достаточно лишь найти первый столбец из РL. Этот способ уменьшает необходимый объем памяти и время вычислений в n раз.

Но даже при использовании этой модификации, как указывает Н. Кристофидес, программа для ЭВМ, написанная на языке PL/1, позволяющем построковую обработку литер и переменное распределение памяти, не была способна найти все гамильтоновы циклы в неориентированных графах с более чем 20 вершинами и средним значением степени вершины, большим 4. Использовалась вычислительная машина ИВМ 360/65 с памятью 120 000 байтов. Более того, даже для графа с вышеуказанными параметрами данный метод использовал фактически весь объем памяти, и время вычислений равнялось 1,8 минуты – довольно большое время для такого небольшого графа.

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Касьянов, В.Н. Графы в программировании: обработка, визуализация и применение [Текст] / В.Н. Касьянов, В.А. Евстигнеев. - СПб.: БХВ-Петербург, 2003. - 1104 с.

2.Кристофидес, Н. Теория графов. Алгоритмический подход [Текст] / Н. Кристофидес. -

М.: Мир, 1978. - 432 с.

3.Новиков, Ф.А. Дискретная математика для программистов [Текст]: учебник для вузов / Ф.А. Новиков. - 2-е изд. - СПб.: Питер, 2007. - 364 с.

4.Оре, О. Теория графов [Текст] / О. Оре. - 2-е изд. - М.: Наука, 1980. 336 с.

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