Мне нужно найти кратчайший путь между узлами в различных наборах, где я могу использовать узел только один раз из каждого набора. Каждый узел связан через расстояние со всеми остальными узлами. Существует исключение, когда узлы в наборе не связаны между собой. Путь должен содержать по одному узлу из каждого множества.
eg.
Set A - [a1, a2, a3]
Set B - [b1, b2]
Set C - [c1]
Set D - [d1, d2, d3]
Set Z - [z1, z2, z3]
Узлы a1,a2,a3,b1,b2...
например. Узел a1 имеет соединение с
b1,b2,c1,d1,d2,d3,z1,z2,z3
или узел c1 имеет связь с
a1,a2,a3,b1,b2,d1,d2,d3,z1,z2,z3
Возможный путь может быть:
a1 -> b1 -> c1 -> d1 -> z1, or c1 -> z2 -> a3 -> b1 -> d2
Расстояние между всеми узлами (кроме узлов в наборе, соединения нет) может быть от 0 до 1.
n
. представьте, что некий оракул сообщает вам заранее, какой узел выбрать из каждого набора. для каждого набора отбросить все остальные узлы. ваша проблема стала экземпляром tsp. NB: если ваша исходная проблема допускает несколько посещений одного и того же набора, это не будет отражено в указанной задаче tsp, хотя это еще больше усложнит ваш поиск. - person collapsar   schedule 22.04.2013