Самый длинный путь в невзвешенном неориентированном графе, начинающийся и заканчивающийся в одной вершине

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

Большинство алгоритмов, которые я нашел, были для частного случая (ациклический, направленный и т. д.). Идея может заключаться в том, чтобы найти гамильтонов цикл для каждого подмножества вершин (подмножество может быть сгенерировано с возвратом). Но я предполагаю, что должен быть гораздо лучший алгоритм.


person Diaz    schedule 14.02.2019    source источник


Ответы (1)


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

Разумный метод грубой силы (например, битовая маска) — лучший способ добиться эффективности для этого типа проблема.

person iacob    schedule 14.02.2019