Как найти гамильтонов цикл на графике с помощью BFS? (условие состоит в том, что граф точно гамильтонов)

Я пытаюсь решить проблему гамильтонова цикла.

Условие моей задачи:

Группа состоит из N человек. В ней у каждого ровно N/2 друзей. Дружба симметрична (если А — друг Б, то Б — друг А). У одного человека в группе есть книга (его номер X), которую все хотели бы прочитать, а затем обсудить с другими.

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

То есть удовлетворяет условию теоремы Дирака.

На маленьких графиках мои решения работают правильно, но на больших графиках мое решение дает исключение ограничения времени.

Есть ли способ, как это можно решить быстрее, чем O (n!)?


person maximcore    schedule 19.05.2020    source источник
comment
Этот вопрос является точной копией: Как найти гамильтонов цикл в графе с помощью BFS?(граф точно гамильтонов) Пожалуйста, не дублируйте вопросы. Если ваш вопрос отложен из-за отсутствия подробностей, вам следует вместо этого добавить эти детали в вопрос, чтобы его можно было открыть повторно.   -  person beaker    schedule 19.05.2020


Ответы (1)


Существует полиномиальный алгоритм поиска гамильтоновых циклов в графах, где степень каждой вершины не меньше N/2.

Это описано в "Простое расширение теоремы Дирака о гамильтоновости" Ясемин Бююкчолак, Дидем Гёзюпек, Сибель Озкан, Мордехай Шалом.

person Paul Hankin    schedule 19.05.2020