我必須在各個集合中找到最短路徑節點,我可以在每個集合中只使用一次節點。每個節點都通過距離連接到每個其他節點。在集合中的節點之間沒有連接的情況是有例外的。該路徑必須包含每個集合中的一個節點。來自多個集合的最短路徑
例如。
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
Ť他posibble路徑可能是:
A1 - > B1 - > C1 - > D1 - > Z1,或C1 - > Z2 - > A3 - > B1 - > D2
的每一個之間的距離節點(集合中的節點除外,沒有連接)可以從0到1.
你已經標記爲Dijkstra,所以你已經有一個想法?你到目前爲止編碼了什麼? – 2013-04-22 15:08:54
聽起來像旅行推銷員問題。 – nhahtdh 2013-04-22 15:16:22
應該至少與tsp一樣硬,除非集合的數量受到節點數量「n」中最大對數函數的限制。想象一下,一些oracle會讓你知道在每個集合中選擇哪個節點。爲每個集合放下所有其他節點。你的問題已經成爲一個tsp實例。 NB:如果你原來的問題允許多次訪問同一組,它不會反映在上述茶匙問題,而它會讓你的搜索更加困難。 – collapsar 2013-04-22 16:47:28