180
математиком Лье Поша (Posa L.) в 1962 году. Отметим, что условие Поша су-
ществования гамильтонова цикла является достаточным, но не необходимым.
Теорема Поша
Пусть граф
G имеет
p > 2 вершин. Если для всякого
n, 0 <
n < (
p
− 1) / 2,
количество вершин со степенями, не превосходящими
n, меньше
n и для не-
четного
p количество вершин степени (
p
− 1) / 2 не превосходит (
p − 1) / 2, то
G — гамильтонов граф.
Следствие
В полном графе
G(
V,
E) всегда существует гамильтонов путь.
К сожалению, пока еще неизвестны эффективные методы решения по-
ставленной задачи. Поэтому воспользуемся методом перебора с возвратом.
1.
Начиная с определенной вершины (пускай это будет вершина
с номером 1), будем продвигаться вперед по графу, включая
очередное ребро в гамильтонов цикл.
2.
При найденных первых
k компонентах решения рассматрива-
ем ребра, которые выходят из последней вершины. Если на-
ходим ребро, которое ведет в непосещенную ранее вершину,
добавляем новую вершину в цикл —
она становятся про-
смотренной. При этом (
k + 1)-ая
компонента решения полу-
чена.
3.
При отсутствии такой вершины возвращаемся к предыдущей
и ищем другие смежные с ней.
Цикл считается найденным, если просмотрены все вершины графа, и из
последней вершины можно попасть в начальную. Такой цикл можно вывести
на экран и продолжить поиск других циклов.
Рекурсивная реализация этого алгоритма представлена в листинге 5.36.
Do'stlaringiz bilan baham: