Найти лучшие пути в нескольких деревах (несколько узлов в нескольких слоях)

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

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

Таким образом, цель состоит в том, чтобы найти лучшие пути между этими узлами слоев.

данные видятся следующим образом; (узел первого уровня, узел 2 уровня, узел 3 уровня...): оценка

(1, 1, 1): 3

(1, 2, 1): 1

(1, 2, 2): 6

(1, 2, 3): 2

(2, 2, 1): 3

(2, 2, 2): 4

(2, 2, 3): 3

(2, 3, 2): 5

(2, 3, 3): 4

.....

результат должен дать 5 путей, и эти пути должны дать общую минимальную стоимость.

Какой алгоритм следует использовать для этой проблемы?

1 ответ

Эта проблема может быть смоделирована как проблема сети с минимальными затратами. Позволять m быть количеством узлов в каждом слое. Искусственный источник s располагается над первым слоем; s подключен к каждому узлу первого слоя, и каждый из них m края имеет пропускную способность сети ограничена 1 и стоимость 0, Кроме того, есть искусственный терминал t ниже последнего слоя; t подключен к каждому узлу последнего слоя, и каждый из них m края имеет пропускную способность сети ограничена 1 и стоимость 0, Проблема может быть решена путем определения минимального потока затрат с суммой m, что возможно через сетевой симплексный алгоритм.

Другие вопросы по тегам