2015-11-04 3 views
1

У меня есть направленный взвешенный график. Он может быть подключен или не подключен, и компоненты могут быть или не быть подключены. У меня есть две цели:Поиск путей, которые охватывают каждый узел один раз в взвешенном ориентированном графе (любой язык)

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

  2. Если возможно, найдите кратчайший путь (или комбинацию путей в случае, если граф не подключен), который посещает каждый узел один раз и только один раз.

В настоящее время, я думаю, самый простой способ будет просто найти все компоненты связности (с использованием в глубину, не так ли?), А затем в пределах каждого компонента Recurse через каждый возможный выбор узла и сортировки по дорожкам что я остался, чтобы найти самый короткий.

Любые другие идеи?

ответ

0

Как вы сказали, я бы начал обнаруживать подключенные компоненты, используя BFS, и внутри каждого графика вы можете применить алгоритм TSP (Traveling Salesman Problem).

Подробные сведения об алгоритме можно получить по адресу: here

Смежные вопросы