2010-09-28 3 views
3

Есть ли какой-либо алгоритм, который может найти все пути между источником и приемником в заданном, ненаправленном, взвешенном графике/сети? Сеть состоит из нескольких исходных узлов и одного узла-приемника. Путь должен быть свободен от петельлучший путь для проектирования канализации

+0

hm, все пути или лучший путь? если лучше, лучше в каком смысле? –

+0

Если вы ищете все шаблоны, имеет ли значение, если граф взвешен? – sandris

+0

Это буквально канализация? Если это так, то график направлен, так как вода работает только под гору. – mtrw

ответ

1

Я бы применил это с алгоритмом A * со следующими отличиями от базового поиска пути.

  • Старт из раковины, а не от источника, поскольку существует только одна раковина
  • Каждый узел представляет собой набор позиций вместо одной позиции. На каждой итерации добавьте соседей всех позиций в очередь. Также создайте ветви для всех соседей, чтобы в следующем наборе была еще одна позиция. Ограничьте максимальное количество позиций на количество источников в качестве оптимизации.
  • Отслеживай, какие источники вы достигли в каждом пути
  • пройденной функция стоимости должна быть общее пройденное расстояние со всеми разветвленными путями в сочетание
  • функция оценки должен объединить все остальные источники

Это должно дать оптимальные пути, если алгоритм A * используется правильно.

0

Если вы ищете все контуры без петли, то breadth-frist search должен выполнить эту работу. В итерации для каждого текущего пути не продолжайте его, когда он достигает точки, уже находящейся на пути или в раковине.

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