Гамильтоновы графы — различия между версиями
| Строка 72: | Строка 72: | ||
Пусть граф G имеет <tex>p \geq 3</tex> вершин. Если для всякого <tex>n,\, 1 \leq n < (p-1)/2</tex> число вершин состепенями, не превосходящими <tex>n</tex>, меньше чем <tex>n</tex>, и для нечетного <tex>p</tex> число вершин степени <tex>(p-1)/2</tex> не превосходит <tex>(p-1)/2</tex>, то G - гамильтонов граф | Пусть граф G имеет <tex>p \geq 3</tex> вершин. Если для всякого <tex>n,\, 1 \leq n < (p-1)/2</tex> число вершин состепенями, не превосходящими <tex>n</tex>, меньше чем <tex>n</tex>, и для нечетного <tex>p</tex> число вершин степени <tex>(p-1)/2</tex> не превосходит <tex>(p-1)/2</tex>, то G - гамильтонов граф | ||
}} | }} | ||
| + | |||
| + | ==Алгорит нахождения гамильтового цикла== | ||
| + | Основан на [[Обход в глубину, цвета вершин|обходе в глубину]]. | ||
| + | ===Псевдокод=== | ||
| + | search_cycle(0, 0, number_of_vertices); | ||
| + | bool search_cycle(int v, int w, int d) | ||
| + | { | ||
| + | if(w == v) | ||
| + | return (d == 0); | ||
| + | visited[v] = true; | ||
| + | for (t <tex>\in</tex> Adj[v]) | ||
| + | if(!visited[t]) | ||
| + | if(search_cycle(t, w, d - 1)) | ||
| + | return true; | ||
| + | visited[v] = false; | ||
| + | return false; | ||
| + | } | ||
| + | |||
| + | ==Источники== | ||
| + | *Харари Ф. Теория графов: Пер. с англ. / Предисл. В. П. Козырева; Под ред. Г.П.Гаврилова. Изд. 4-е. — М.: Книжный дом "ЛИБРОКОМ", 2009. — 60 с. | ||
| + | *Седжвик Р. Фундаментальные алгоритмы на C++. Алгоритмы на графах. — СПб: ООО «ДиаСофтЮП», 2002. | ||
Версия 22:06, 20 ноября 2011
Содержание
Основные определения
| Определение: |
| Гамильтоновым путём называется простой путь, приходящий через каждую вершину графа ровно один раз. |
| Определение: |
| Гамильтоновым циклом называют замнутый гамильтонов путь. |
| Определение: |
| Граф называется гамильтоновым, если он содержит гамильтонов цикл. |
Достаточные условия гамильтоновости графа
Теорема Дирака
| Теорема: |
Если и для любой вершины неориентированного графа , то - гамильтонов граф. |
Теорема Оре
| Теорема: |
Если и для любых двух различных несмежных вершин и неориентированного графа , то - гамильтонов граф. |
Теорема Редеи-Камиона
| Теорема: |
Любой сильносвязный турнир - гамильтонов. |
Теорема Гуйя-Ури
| Теорема: |
Пусть G - сильносвязный ориентированный граф. G - гамильтонов. |
Теорема Хватала
| Теорема (Хватал): |
Пусть:
Тогда если верна импликация: |
Теорема Поша
| Теорема: |
Пусть граф G имеет вершин. Если для всякого число вершин состепенями, не превосходящими , меньше чем , и для нечетного число вершин степени не превосходит , то G - гамильтонов граф |
Алгорит нахождения гамильтового цикла
Основан на обходе в глубину.
Псевдокод
search_cycle(0, 0, number_of_vertices);
bool search_cycle(int v, int w, int d)
{
if(w == v)
return (d == 0);
visited[v] = true;
for (t Adj[v])
if(!visited[t])
if(search_cycle(t, w, d - 1))
return true;
visited[v] = false;
return false;
}
Источники
- Харари Ф. Теория графов: Пер. с англ. / Предисл. В. П. Козырева; Под ред. Г.П.Гаврилова. Изд. 4-е. — М.: Книжный дом "ЛИБРОКОМ", 2009. — 60 с.
- Седжвик Р. Фундаментальные алгоритмы на C++. Алгоритмы на графах. — СПб: ООО «ДиаСофтЮП», 2002.