Эта статья входит в число добротных статей

Гамильтонов граф: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
мНет описания правки
м оформление, пунктуация
Строка 1: Строка 1:
[[Файл:Hamiltonian Dodecahedron Graph.gif|мини|Гамильтонова линия для додекаэдра, предложенная Гамильтоном для замены его игры «вокруг света» на додекаэдре на задачу для плоского графа.]]
[[Файл:Hamiltonian Dodecahedron Graph.gif|мини|Гамильтонова линия для додекаэдра, предложенная Гамильтоном для замены его игры «вокруг света» на додекаэдре на задачу для плоского графа.]]
'''Гамильто́нов граф''' — [[Граф (математика)|граф]], содержащий ''гамильтонов [[Цикл (теория графов)|цикл]]''<ref name=":2">{{Книга|автор = М. О. Асанов, В. А. Баранский, В. В. Расин|заглавие = Дискретная математика: графы, матроиды, алгоритмы|место = Ижевск|издательство = ННЦ "Регулярная и хаотическая динамика"|год = 2001|страницы = 41|isbn = 5-93972-076-5}}</ref>. При этом ''гамильтоновым циклом'' является такой цикл (замкнутый путь), который проходит через каждую вершину данного графа ровно по одному разу<ref>{{Книга|автор = М. Свами, К. Тхуласираман|заглавие = Графы, сети и алгоритмы|место = Москва|издательство = Мир|год = 1984|страницы = 55}}</ref>;
'''Гамильто́нов граф''' — [[Граф (математика)|граф]], содержащий ''гамильтонов [[Цикл (теория графов)|цикл]]''<ref name=":2">{{Книга|автор = М. О. Асанов, В. А. Баранский, В. В. Расин|заглавие = Дискретная математика: графы, матроиды, алгоритмы|место = Ижевск|издательство = Регулярная и хаотическая динамика|год = 2001|страницы = 41|isbn = 5-93972-076-5}}</ref>. При этом ''гамильтоновым циклом'' является такой цикл (замкнутый путь), который проходит через каждую вершину данного графа ровно по одному разу{{sfn|Свами, Тхуласираман|1984|страницы = 55}};
то есть цикл в который входят все вершины графа.
то есть цикл, в который входят все вершины графа.


Также с гамильтоновым графом тесно связано понятие '''гамильтонова пути''', который является простым [[Словарь терминов теории графов#П|путём]] (путём без петель), проходящим через каждую вершину графа ровно один раз<ref name=":2" />. Гамильтонов путь отличается от цикла тем, что у пути начальные и конечные точки могут не совпадать, в отличие от цикла. Гамильтонов цикл является гамильтоновым путём.
Также с гамильтоновым графом тесно связано понятие '''гамильтонова пути''', который является простым [[Словарь терминов теории графов#П|путём]] (путём без петель), проходящим через каждую вершину графа ровно один раз<ref name=":2" />. Гамильтонов путь отличается от цикла тем, что у пути начальные и конечные точки могут не совпадать, в отличие от цикла. Гамильтонов цикл является гамильтоновым путём.


Гамильтоновы путь, цикл и граф названы в честь ирландского математика [[Гамильтон, Уильям Роуан|У. Гамильтона]], который впервые определил эти классы, исследовав задачу «кругосветного путешествия» по [[додекаэдр]]у. В этой задаче вершины додекаэдра символизировали известные города, такие как [[Брюссель]], [[Амстердам]], [[Эдинбург]], [[Пекин]], [[Прага]], [[Дели]], [[Франкфурт]] и др., а рёбра — соединяющие их дороги. Путешествующий должен пройти «вокруг света», найдя путь, который проходит через все вершины ровно один раз<ref>{{Книга|автор = Ф. Харари|заглавие = Теория графов|место = г. Москва, пр-т 60-летия Октября, 9|издательство = Едиториал УРСС|год = 2003|страницы = 16—17}}</ref>. Чтобы сделать задачу более интересной, порядок прохождения городов устанавливался заранее. А чтобы было легче запомнить, какие города уже соединены, в каждую вершину додекаэдра был вбит гвоздь, и проложенный путь отмечался небольшой верёвкой, которая могла обматываться вокруг гвоздя. Однако такая конструкция оказалась слишком громоздкой, и Гамильтон предложил новый вариант игры, заменив додекаэдр плоским графом, [[изоморфизм графов|изоморфным]] графу, построенному на рёбрах додекаэдра<ref>{{Книга|автор = О. Оре|заглавие = Графы и их применение|место = Москва|издательство = Мир|год = 1965|страницы = 40—41}}</ref>.
Гамильтоновы путь, цикл и граф названы в честь ирландского математика [[Гамильтон, Уильям Роуан|У. Гамильтона]], который впервые определил эти классы, исследовав задачу «кругосветного путешествия» по [[додекаэдр]]у. В этой задаче вершины додекаэдра символизировали известные города, такие как [[Брюссель]], [[Амстердам]], [[Эдинбург]], [[Пекин]], [[Прага]], [[Дели]], [[Франкфурт]] и др., а рёбра — соединяющие их дороги. Путешествующий должен пройти «вокруг света», найдя путь, который проходит через все вершины ровно один раз{{sfn|Харари|2003|страницы = 16—17}}. Чтобы сделать задачу более интересной, порядок прохождения городов устанавливался заранее. А чтобы было легче запомнить, какие города уже соединены, в каждую вершину додекаэдра был вбит гвоздь, и проложенный путь отмечался небольшой верёвкой, которая могла обматываться вокруг гвоздя. Однако такая конструкция оказалась слишком громоздкой, и Гамильтон предложил новый вариант игры, заменив додекаэдр плоским графом, [[изоморфизм графов|изоморфным]] графу, построенному на рёбрах додекаэдра<ref>{{Книга|автор = О. Оре|заглавие = Графы и их применение|место = Москва|издательство = Мир|год = 1965|страницы = 40—41}}</ref>.


== Условия существования ==
== Условия существования ==
Простое [[необходимое и достаточное условие]] существования гамильтонова цикла неизвестно.<ref name="NKJ2020_2">{{статья |автор=Дмитрий Максимов|заглавие=[https://www.nkj.ru/archive/articles/38054/ Пути и маршруты]|издание=[[Наука и жизнь]] |год=2020|номер=2|страницы=81—86}}</ref>
Простое [[необходимое и достаточное условие]] существования гамильтонова цикла неизвестно<ref name="NKJ2020_2">{{статья |автор=Дмитрий Максимов|заглавие=Пути и маршруты|ссылка=https://www.nkj.ru/archive/articles/38054/|издание=[[Наука и жизнь]] |год=2020|номер=2|страницы=81—86}}</ref>.


'''Необходимое условие существования гамильтонова цикла в неориентированном графе''': если неориентированный граф G содержит гамильтонов цикл, тогда в нём не существует ни одной вершины <math>x(i)</math> с локальной степенью <math>p(x(i)) < 2</math>. Доказательство следует из определения.
'''Необходимое условие существования гамильтонова цикла в неориентированном графе''': если неориентированный граф G содержит гамильтонов цикл, тогда в нём не существует ни одной вершины <math>x(i)</math> с локальной степенью <math>p(x(i)) < 2</math>. Доказательство следует из определения.


'''Условие Поша:''' Пусть граф G имеет <math>p>2</math> вершин. Если для всякого <math>n</math>, <math>0<n<(p-1)/2</math>, число вершин со степенями меньшими или равными n меньше, чем n, и для нечетного <math>p</math> число вершин со степенью <math>(p-1)/2</math> не превосходит <math>(p-1)/2</math>, то G — гамильтонов граф. Это достаточное условие не является необходимым<ref>{{Книга|автор = Ф. Харари|заглавие = Теория графов|ответственный = |издание = второе|место = Москва|издательство = УРСС|год = 2003|страницы = 86|страниц = |isbn = 5-354-00301-6}}</ref>.
'''Условие Поша:''' Пусть граф G имеет <math>p>2</math> вершин. Если для всякого <math>n</math>, <math>0<n<(p-1)/2</math>, число вершин со степенями меньшими или равными n меньше, чем n, и для нечетного <math>p</math> число вершин со степенью <math>(p-1)/2</math> не превосходит <math>(p-1)/2</math>, то G — гамильтонов граф. Это достаточное условие не является необходимым{{sfn|Харари|2003|страницы = 86}}.


Как следствие теоремы Поша, получаем более простые и менее сильные достаточные условия, найденные Дираком и Оре.
Как следствие теоремы Поша, получаем более простые и менее сильные достаточные условия, найденные Дираком и Оре.


В 1952 году было сформулировано '''условие Дирака''' '''существования гамильтонова пути''': пусть <math>p</math> — число вершин в данном графе и <math>p>3</math>; если [[Степень вершины (теория графов)|степень]] каждой вершины не меньше, чем <math>\frac{p}{2}</math>, то данный граф — гамильтонов<ref name=":1">{{Книга|автор = Ф. Харари|заглавие = Теория Графов|место = Москва|издательство = УРСС|год = 2003|страницы = 87|isbn = 5-354-00301-6}}</ref>.
В 1952 году было сформулировано '''условие Дирака''' '''существования гамильтонова пути''': пусть <math>p</math> — число вершин в данном графе и <math>p>3</math>; если [[Степень вершины (теория графов)|степень]] каждой вершины не меньше, чем <math>\frac{p}{2}</math>, то данный граф — гамильтонов{{sfn|Харари|2003|страницы = 87|name=:1}}.


{{main|Теорема Оре}}
{{main|Теорема Оре}}
Строка 23: Строка 23:
'''Теорема {{iw|Бонди, Джон|Бонди|en|John Adrian Bondy}} — {{iw|Хватал, Вацлав|Хватала|en|Václav Chvátal}}''' обобщает утверждения Дирака и Оре.
'''Теорема {{iw|Бонди, Джон|Бонди|en|John Adrian Bondy}} — {{iw|Хватал, Вацлав|Хватала|en|Václav Chvátal}}''' обобщает утверждения Дирака и Оре.
Граф является гамильтоновым тогда и только тогда, когда его замыкание — гамильтонов граф.
Граф является гамильтоновым тогда и только тогда, когда его замыкание — гамильтонов граф.
Для графа ''G'' с ''n'' вершинами замыкание строится добавлением в ''G'' ребра (''u'',''v'') для каждой пары несмежных вершин ''u'' и ''v'', сумма степеней которых не меньше ''n''<ref>{{Книга|автор = Свами М., Тхуласираман К.|заглавие = Графы, сети и алгоритмы.|ответственный = |издание = |место = Москва|издательство = Мир|год = 1984|страницы = 61|страниц = |isbn = }}</ref>
Для графа ''G'' с ''n'' вершинами замыкание строится добавлением в ''G'' ребра (''u'',''v'') для каждой пары несмежных вершин ''u'' и ''v'', сумма степеней которых не меньше ''n''{{sfn|Свами, Тхуласираман|1984|страницы = 61}}.


== Алгоритм поиска гамильтонова пути ==
== Алгоритм поиска гамильтонова пути ==
Строка 35: Строка 35:
Гамильтонов цикл используется в системе так называемых протоколов с [[Доказательство с нулевым разглашением|нулевым разглашением]]''. ''
Гамильтонов цикл используется в системе так называемых протоколов с [[Доказательство с нулевым разглашением|нулевым разглашением]]''. ''


Пусть Пегги и Виктор знают один и тот же гамильтонов граф G, причем Пегги знает в нём гамильтонов цикл. Она хочет доказать это Виктору, не раскрывая ему самого цикла. Существует алгоритм того, как он должен действовать<ref>{{Книга|автор = Брюс Шнайер|заглавие = Прикладная криптография|издательство = "Триумф"|год = 2002|страницы = 89—90}}</ref>:
Пусть Пегги и Виктор знают один и тот же гамильтонов граф G, причем Пегги знает в нём гамильтонов цикл. Она хочет доказать это Виктору, не раскрывая ему самого цикла. Существует алгоритм того, как он должен действовать{{sfn|Шнайер|2002|страницы = 89—90}}:


1. Пегги случайным образом преобразовывает граф G. Передвигая точки и изменяя их метки, он создает новый граф H, топологически изоморфный G. Тогда, зная гамильтонов цикл в G, она легко найдет его в H. Если он не сам создает H, то определение изоморфизма между графами является слишком сложной задачей, решение которой требует огромного количества времени. Затем она шифрует H и получает граф H<sup>/ </sup>.
1. Пегги случайным образом преобразовывает граф G. Передвигая точки и изменяя их метки, он создает новый граф H, топологически изоморфный G. Тогда, зная гамильтонов цикл в G, она легко найдет его в H. Если он не сам создает H, то определение изоморфизма между графами является слишком сложной задачей, решение которой требует огромного количества времени. Затем она шифрует H и получает граф H<sup>/ </sup>.
Строка 56: Строка 56:
{{main|Задача коммивояжёра}}
{{main|Задача коммивояжёра}}


Коммивояжёру необходимо посетить каждый город в пределах некоторой территории и возвратиться в пункт отправления. Требуется, чтобы путь был как можно короче. Таким образом, исходная задача преобразуется в задачу поиска минимальной протяженности (длительности или стоимости)<ref>{{Книга|автор = Э. Майника|заглавие = Алгоритмы оптимизации на сетях и графах|место = Москва|издательство = Мир|год = 1981|страницы = 241—264}}</ref>.
Коммивояжёру необходимо посетить каждый город в пределах некоторой территории и возвратиться в пункт отправления. Требуется, чтобы путь был как можно короче. Таким образом, исходная задача преобразуется в задачу поиска минимальной протяженности (длительности или стоимости){{sfn|Майника|1981|страницы = 241—264}}.


Задачу можно переформировать в терминах теории графов — построить такой граф G(X, A), вершины которого соответствуют городам, а ребра — коммуникации между городами. Решение этой задачи ищут среди гамильтоновых циклов построенного графа.
Задачу можно переформировать в терминах теории графов — построить такой граф G(X, A), вершины которого соответствуют городам, а ребра — коммуникации между городами. Решение этой задачи ищут среди гамильтоновых циклов построенного графа.


Известно много способов решения этой задачи. Можно выделить методы, разработанные Беллмором и Немхаузером<ref>{{Книга|автор = Bellmore M., Nemhuser G. L.|заглавие = The Travelling Salesman Problem: A. Survey|издательство = ORSA vol. 16|год = 1968|страницы = pp 538-558}}</ref>, Гарфинкелем и Немхаузером<ref>{{Книга|автор = Garfinkel R., Namhauser G. L.|заглавие = Integer Programming|место = New York|издательство = John Wiley, Inc.,|год = 1972|страницы = pp 354-360}}</ref>, Хелдом и Карпом<ref>{{Книга|автор = Held M., Karp R.|заглавие = The Travelling-Salesman Problem and Minimum Spanning Trees, Part II|издательство = Math. Programming, vol. 1, No.|год = 1971|страницы = pp. 6-25}}</ref>, Стекханом<ref>{{Книга|автор = Steckhan H. A.|заглавие = Theorem on Symmetric Travelling Salesman Problems|издательство = ORSA, vol. 18|год = 1970|страницы = pp. 1163-1167}}</ref>. Также известными решениями задачи коммивояжёра являются [[метод ветвей и границ]] и метод последовательного улучшения решения<ref>{{Книга|автор = Э. Майника|заглавие = Алгоритмы оптимизации на сетях и графах|место = Москва|издательство = "Мир"|год = 1981|страницы = 255—264}}</ref>.
Известно много способов решения этой задачи. Можно выделить методы, разработанные Беллмором и Немхаузером<ref>{{Книга|автор = Bellmore M., Nemhuser G. L.|заглавие = The Travelling Salesman Problem: A. Survey|издательство = ORSA vol. 16|год = 1968|страницы = 538-558}}</ref>, Гарфинкелем и Немхаузером<ref>{{Книга|автор = Garfinkel R., Namhauser G. L.|заглавие = Integer Programming|место = New York|издательство = John Wiley, Inc.|год = 1972|страницы = 354-360}}</ref>, Хелдом и Карпом<ref>{{статья|автор = Held M., Karp R.|заглавие = The Travelling-Salesman Problem and Minimum Spanning Trees, Part II|издание= Math. Programming|volume=1|год = 1971|pages= 6-25|doi=10.1007/BF01584070}}</ref>, Стекханом<ref>{{Книга|автор = Steckhan H. A.|заглавие = Theorem on Symmetric Travelling Salesman Problems|издательство = ORSA, vol. 18|год = 1970|страницы = 1163-1167}}</ref>. Также известными решениями задачи коммивояжёра являются [[метод ветвей и границ]] и метод последовательного улучшения решения{{sfn|Майника|1981|страницы = 255—264}}.


== Связанные термины ==
== Связанные термины ==
'''Полугамильтоновым<ref>{{Книга|автор = Уилсон И.Р., Эддиман А.М.|заглавие = Практическое введение в Паскаль|место = Москва|издательство = Радио и связь|год = 1983|страницы = 143}}</ref> графом''' называется граф, содержащий [[Глоссарий теории графов|простую цепь]], проходящую через каждую его вершину ровно один раз. При этом, всякий гамильтонов граф является полугамильтоновым. Гамильтонов цикл является простым [[Глоссарий теории графов#О|остовным]] циклом<ref>{{Книга|автор = У. Татт|заглавие = Теория графов|место = Москва|издательство = Мир|год = 1988|страницы = 26|isbn = 5-03-001001-7}}</ref>.
'''Полугамильтоновым<ref>{{Книга|автор = Уилсон И. Р., Эддиман А. М.|заглавие = Практическое введение в Паскаль|место = Москва|издательство = Радио и связь|год = 1983|страницы = 143}}</ref> графом''' называется граф, содержащий [[Глоссарий теории графов|простую цепь]], проходящую через каждую его вершину ровно один раз. При этом, всякий гамильтонов граф является полугамильтоновым. Гамильтонов цикл является простым [[Глоссарий теории графов#О|остовным]] циклом{{sfn|Татт|1988}}.


Суть '''задачи о гамильтоновом цикле''' — выяснить, имеет ли заданный граф <var>G</var> гамильтонов цикл. Данная задача является [[NP-полная задача|NP-полной]]<ref>{{Книга|автор = Т. Кормен, Ч. Лейзерсон, Р. Ривест|заглавие = Алгоритмы. Построение и анализ|место = Москва|издательство = МЦНМО|год = 2002|страницы = 845—846}}</ref>.
Суть '''задачи о гамильтоновом цикле''' — выяснить, имеет ли заданный граф <var>G</var> гамильтонов цикл. Данная задача является [[NP-полная задача|NP-полной]]<ref>{{Книга|автор = Т. Кормен, Ч. Лейзерсон, Р. Ривест|заглавие = Алгоритмы. Построение и анализ|место = Москва|издательство = МЦНМО|год = 2002|страницы = 845—846}}</ref>.


'''Гамильтонова [[Глоссарий теории графов|орцепь]]''' [[Ориентированный граф|орграфа]]<ref name=":0">{{Книга|автор = Б. А. Долгих,А. А. Петренко|заглавие = Дискретная математика|место = Москва|издательство = |год = 2007|страницы = 126|isbn = 978-5-276-01103-5}}</ref> — простая цепь, проходящая через каждую вершину орграфа ровно один раз.
'''Гамильтонова [[Глоссарий теории графов|орцепь]]''' [[Ориентированный граф|орграфа]]{{sfn|Долгих, Петренко|2007|name=:0}} — простая цепь, проходящая через каждую вершину орграфа ровно один раз.


'''Гамильтоновым орциклом'''<ref name=":0" /> называется орцикл<ref name=":0" /> орграфа, который проходит через каждую его вершину''. ''
'''Гамильтоновым орциклом'''<ref name=":0" /> называется орцикл<ref name=":0" /> орграфа, который проходит через каждую его вершину''. ''
Строка 82: Строка 82:


== Примечания ==
== Примечания ==
{{примечания|2}}
{{примечания}}


== Литература ==
== Литература ==
* {{Книга|автор = Ф. Харари|заглавие = Теория графов|ответственный = |издание = |место = М.|издательство = УРСС|год = 2003|страницы = |страниц = |isbn = 5-354-00301-6|ref=Харари}}
* {{книга
* {{книга
|автор = Б. Шнайер|часть = |заглавие = Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке C|оригинал = |ссылка = |ответственный = |место = |издательство = Триумф|год = 2002|том = |pages = |allpages = |isbn = |ref = }}
|автор = Б. Шнайер|часть = |заглавие = Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке C|оригинал = |ссылка = |ответственный = |место = |издательство = Триумф|год = 2002|том = |pages = |allpages = |isbn = |ref = Шнайер}}
* {{книга
* {{книга
|автор = К. Берж|часть = |заглавие = Теория графов и её применение|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Иностранной литературы|год = 1962|том = |pages = |allpages = |isbn = |ref = }}
|автор = К. Берж|часть = |заглавие = Теория графов и её применение|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Издательство иностранной литературы|год = 1962|том = |pages = |allpages = |isbn = |ref = }}
* {{книга
* {{книга
|автор = Р. Уилсон|часть = |заглавие = Введение в теорию графов|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Мир|год = 1977|том = |pages = |allpages = |isbn = |ref = }}
|автор = Р. Уилсон|часть = |заглавие = Введение в теорию графов|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Мир|год = 1977|том = |pages = |allpages = |isbn = |ref = }}
* {{книга |автор = У. Татт|часть = |заглавие = Теория графов|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Мир|год = 1988|pages = |allpages = |isbn = 5-03-001001-7|ref = Татт}}
* {{книга
|автор = У. Татт|часть = |заглавие = Теория графов|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Мир|год = |том = 1988|pages = |allpages = |isbn = |ref = }}
* {{книга
* {{книга
|автор = Н. Кристофидес|часть = |заглавие = Теория Графов|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Мир|год = 1978|том = |pages = |allpages = |isbn = |ref = }}
|автор = Н. Кристофидес|часть = |заглавие = Теория Графов|оригинал = |ссылка = |ответственный = |место = Москва|издательство = Мир|год = 1978|том = |pages = |allpages = |isbn = |ref = }}
* {{Книга|автор = Б. А. Долгих,А. А. Петренко|заглавие = Дискретная математика|место = Москва|издательство = |год = 2007|страницы = 126|isbn = 978-5-276-01103-5}}
* {{Книга|автор = Б. А. Долгих, А. А. Петренко|заглавие = Дискретная математика|место = Москва|издательство = МГИУ|год = 2007|страницы = 126—127|isbn = 978-5-276-01103-5|ref= Долгих, Петренко}}
* {{Книга|автор = М. Свами, К. Тхуласираман|заглавие = Графы, сети и алгоритмы|место = Москва|издательство = Мир|год = 1984|страницы = |ref=Свами, Тхуласираман}}
* {{Книга|автор = Э. Майника|заглавие = Алгоритмы оптимизации на сетях и графах|место = Москва|издательство = Мир|год = 1981|страницы = |ref=Майника}}


== Ссылки ==
== Ссылки ==

Версия от 15:15, 11 марта 2020

Гамильтонова линия для додекаэдра, предложенная Гамильтоном для замены его игры «вокруг света» на додекаэдре на задачу для плоского графа.

Гамильто́нов граф — граф, содержащий гамильтонов цикл[1]. При этом гамильтоновым циклом является такой цикл (замкнутый путь), который проходит через каждую вершину данного графа ровно по одному разу[2]; то есть цикл, в который входят все вершины графа.

Также с гамильтоновым графом тесно связано понятие гамильтонова пути, который является простым путём (путём без петель), проходящим через каждую вершину графа ровно один раз[1]. Гамильтонов путь отличается от цикла тем, что у пути начальные и конечные точки могут не совпадать, в отличие от цикла. Гамильтонов цикл является гамильтоновым путём.

Гамильтоновы путь, цикл и граф названы в честь ирландского математика У. Гамильтона, который впервые определил эти классы, исследовав задачу «кругосветного путешествия» по додекаэдру. В этой задаче вершины додекаэдра символизировали известные города, такие как Брюссель, Амстердам, Эдинбург, Пекин, Прага, Дели, Франкфурт и др., а рёбра — соединяющие их дороги. Путешествующий должен пройти «вокруг света», найдя путь, который проходит через все вершины ровно один раз[3]. Чтобы сделать задачу более интересной, порядок прохождения городов устанавливался заранее. А чтобы было легче запомнить, какие города уже соединены, в каждую вершину додекаэдра был вбит гвоздь, и проложенный путь отмечался небольшой верёвкой, которая могла обматываться вокруг гвоздя. Однако такая конструкция оказалась слишком громоздкой, и Гамильтон предложил новый вариант игры, заменив додекаэдр плоским графом, изоморфным графу, построенному на рёбрах додекаэдра[4].

Условия существования

Простое необходимое и достаточное условие существования гамильтонова цикла неизвестно[5].

Необходимое условие существования гамильтонова цикла в неориентированном графе: если неориентированный граф G содержит гамильтонов цикл, тогда в нём не существует ни одной вершины с локальной степенью . Доказательство следует из определения.

Условие Поша: Пусть граф G имеет вершин. Если для всякого , , число вершин со степенями меньшими или равными n меньше, чем n, и для нечетного число вершин со степенью не превосходит , то G — гамильтонов граф. Это достаточное условие не является необходимым[6].

Как следствие теоремы Поша, получаем более простые и менее сильные достаточные условия, найденные Дираком и Оре.

В 1952 году было сформулировано условие Дирака существования гамильтонова пути: пусть  — число вершин в данном графе и ; если степень каждой вершины не меньше, чем , то данный граф — гамильтонов[7].

Условие Оре: пусть  — количество вершин в данном графе и . Если для любой пары несмежных вершин выполнено неравенство , то данный граф — гамильтонов (другими словами: сумма степеней любых двух несмежных вершин не меньше общего числа вершин в графе)[7].

Теорема Бонди[англ.] — Хватала?! обобщает утверждения Дирака и Оре. Граф является гамильтоновым тогда и только тогда, когда его замыкание — гамильтонов граф. Для графа G с n вершинами замыкание строится добавлением в G ребра (u,v) для каждой пары несмежных вершин u и v, сумма степеней которых не меньше n[8].

Алгоритм поиска гамильтонова пути

Эвристические оптимизации

При прямом переборе вариантов вершин возможно значительное увеличение средней сложности поиска гамильтонова пути на случайных графах (если гарантируется наличие гамильтонова пути в графе). Для улучшения данного способа можно на каждом шаге перебора при некоторой построенной части цепи проверять, образуют ли оставшиеся вершины связный граф (если не образуют, то цепь не может являться началом гамильтоновой цепи); на каждом шаге перебора при выборе следующей вершины пробовать сначала вершины с наименьшей остаточной степенью (количеством рёбер, ведущих в ещё не посещённые вершины). Кроме того, если это дерево является цепью, то гамильтонов цикл в нём возможен. Иначе (если в дереве есть вершины со степенью не меньше, чем 3) построение гамильтонова цикла невозможно[9].

Примеры использования

Криптография

Гамильтонов цикл используется в системе так называемых протоколов с нулевым разглашением.

Пусть Пегги и Виктор знают один и тот же гамильтонов граф G, причем Пегги знает в нём гамильтонов цикл. Она хочет доказать это Виктору, не раскрывая ему самого цикла. Существует алгоритм того, как он должен действовать[10]:

1. Пегги случайным образом преобразовывает граф G. Передвигая точки и изменяя их метки, он создает новый граф H, топологически изоморфный G. Тогда, зная гамильтонов цикл в G, она легко найдет его в H. Если он не сам создает H, то определение изоморфизма между графами является слишком сложной задачей, решение которой требует огромного количества времени. Затем она шифрует H и получает граф H/ .

2. Пегги передает Виктору H/ .

3. Виктор просит Пегги либо:

  1. Доказать, что H/- зашифрованная изоморфная копия G, либо
  2. Показать гамильтонов цикл для H.

4. Пегги выполняет его просьбу. Она либо:

  1. Доказывает, что H/- зашифрованная изоморфная копия G, раскрывая преобразования и все расшифровывая, не показывая гамильтонов цикл для G или H, либо
  2. Показывает гамильтонов цикл для H, расшифровывая только то, что образует гамильтонов цикл, не доказывая, что H и G топологически изоморфны.

5. Пегги и Виктор повторяют этапы 1 — 4 n раз.

Если Пегги не обманывает, то она сможет рассказать Виктору одно из доказательств на этапе 3. Однако, если гамильтонов цикл для G ему самому неизвестен, он не сможет создать H/, удовлетворяющий обоим доказательствам. Правда, Пегги может создать или граф изоморфный G, или граф с таким же числом вершин и ребер и правильным гамильтоновым циклом. И, хотя с вероятностью 50 % она может угадать, какое доказательство попросит Виктор на этапе 3, Виктор может повторить протокол достаточное число раз, пока не убедится, что Пегги знает гамильтонов цикл в G.

Экстремальные задачи теории графов: Задача коммивояжёра

Коммивояжёру необходимо посетить каждый город в пределах некоторой территории и возвратиться в пункт отправления. Требуется, чтобы путь был как можно короче. Таким образом, исходная задача преобразуется в задачу поиска минимальной протяженности (длительности или стоимости)[11].

Задачу можно переформировать в терминах теории графов — построить такой граф G(X, A), вершины которого соответствуют городам, а ребра — коммуникации между городами. Решение этой задачи ищут среди гамильтоновых циклов построенного графа.

Известно много способов решения этой задачи. Можно выделить методы, разработанные Беллмором и Немхаузером[12], Гарфинкелем и Немхаузером[13], Хелдом и Карпом[14], Стекханом[15]. Также известными решениями задачи коммивояжёра являются метод ветвей и границ и метод последовательного улучшения решения[16].

Связанные термины

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

Суть задачи о гамильтоновом цикле — выяснить, имеет ли заданный граф G гамильтонов цикл. Данная задача является NP-полной[19].

Гамильтонова орцепь орграфа[20] — простая цепь, проходящая через каждую вершину орграфа ровно один раз.

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

Орграф называется полугамильтоновым[20], если он имеет гамильтонову орцепь, и гамильтоновым[20], если обладает гамильтоновым орциклом.

См. также

Примечания

  1. 1 2 М. О. Асанов, В. А. Баранский, В. В. Расин. Дискретная математика: графы, матроиды, алгоритмы. — Ижевск: Регулярная и хаотическая динамика, 2001. — С. 41. — ISBN 5-93972-076-5.
  2. Свами, Тхуласираман, 1984, с. 55.
  3. Харари, 2003, с. 16—17.
  4. О. Оре. Графы и их применение. — Москва: Мир, 1965. — С. 40—41.
  5. Дмитрий Максимов. Пути и маршруты // Наука и жизнь. — 2020. — № 2. — С. 81—86.
  6. Харари, 2003, с. 86.
  7. 1 2 Харари, 2003, с. 87.
  8. Свами, Тхуласираман, 1984, с. 61.
  9. Графы и алгоритмы: Лекция 8: Эйлеровы и гамильтоновы циклы. НОУ Интуит.
  10. Шнайер, 2002, с. 89—90.
  11. Майника, 1981, с. 241—264.
  12. Bellmore M., Nemhuser G. L. The Travelling Salesman Problem: A. Survey. — ORSA vol. 16, 1968. — С. 538-558.
  13. Garfinkel R., Namhauser G. L. Integer Programming. — New York: John Wiley, Inc., 1972. — С. 354-360.
  14. Held M., Karp R. The Travelling-Salesman Problem and Minimum Spanning Trees, Part II // Math. Programming. — 1971. — Vol. 1. — P. 6-25. — doi:10.1007/BF01584070.
  15. Steckhan H. A. Theorem on Symmetric Travelling Salesman Problems. — ORSA, vol. 18, 1970. — С. 1163-1167.
  16. Майника, 1981, с. 255—264.
  17. Уилсон И. Р., Эддиман А. М. Практическое введение в Паскаль. — Москва: Радио и связь, 1983. — С. 143.
  18. Татт, 1988.
  19. Т. Кормен, Ч. Лейзерсон, Р. Ривест. Алгоритмы. Построение и анализ. — Москва: МЦНМО, 2002. — С. 845—846.
  20. 1 2 3 4 5 Долгих, Петренко, 2007.

Литература

  • Ф. Харари. Теория графов. — М.: УРСС, 2003. — ISBN 5-354-00301-6.
  • Б. Шнайер. Прикладная криптография. Протоколы, алгоритмы и исходные тексты на языке C. — Триумф, 2002.
  • К. Берж. Теория графов и её применение. — Москва: Издательство иностранной литературы, 1962.
  • Р. Уилсон. Введение в теорию графов. — Москва: Мир, 1977.
  • У. Татт. Теория графов. — Москва: Мир, 1988. — ISBN 5-03-001001-7.
  • Н. Кристофидес. Теория Графов. — Москва: Мир, 1978.
  • Б. А. Долгих, А. А. Петренко. Дискретная математика. — Москва: МГИУ, 2007. — С. 126—127. — ISBN 978-5-276-01103-5.
  • М. Свами, К. Тхуласираман. Графы, сети и алгоритмы. — Москва: Мир, 1984.
  • Э. Майника. Алгоритмы оптимизации на сетях и графах. — Москва: Мир, 1981.

Ссылки