2015-02-23 150 views
2

我正在嘗試使奇怪的最短路徑查找方法。但我不知道我能做什麼。Python,圓形最短路徑

我需要一個算法。我做了一些研究,發現了一些尋找最短路徑的算法,比如Dijkstra算法,Floyd-Warshall算法,Johnson算法。但我認爲他們不符合我的期望。

enter image description here

我想的是:如果在紅點開始,應該通過所有藍點走在紅點結束。

有沒有算法呢?

(我的英語水平實在對不起,我希望你能理解我。)

+1

這是[旅行推銷員問題](http://en.wikipedia.org/wiki/Travelling_salesman_problem)的一個簡單變體,不幸意味着它可能非常困難,這取決於您的圖形大小以及路徑應該是好的。 – user2357112 2015-02-23 09:22:04

回答

6

你的問題是一個Hamiltonian Cycle Problem的變體,這是NP-Complete,所以沒有已知有效的解決方案,以它(最相信一個解決方案不存在,但它還沒有被證實)

哈密爾頓週期問題說:給定一個圖G=(V,E),找到是否有一個簡單的循環(每個頂點遍歷最多一次)通過所有頂點,並且是一個經典的NP完全問題。

減少非常簡單,給定一個哈密爾頓週期問題,用紅色給一個隨機點着色,剩下的點用藍色表示。當且僅當您的問題的解決方案是新圖上「已修改」問題的簡單路徑時,纔有哈密爾頓週期問題的解決方案。


由於問題是NP完全的,這意味着沒有已知的最優有效解決方案。您可以嘗試使用一些對於小圖可能可行的強力技術,或者對近似/啓發式解決方案使用sattle。

+0

對於我來說,它似乎比漢密爾頓圈更感興趣的旅行推銷員,考慮到它似乎不是兩次通過點的問題。 – user2357112 2015-02-23 09:23:23

+2

@ user2357112閱讀所做的減少。實際上,Hamiltonian Cycle和TSP也是彼此的變量。 – amit 2015-02-23 09:24:43