2015-02-12 54 views
1

我有一組路徑,從同一點開始,但向不同的方向移動。我有另一條路徑叫做原始路徑,它也是從同一個點開始的。所有這些路徑都是2-D,即我有(x,y)值。我需要找出最接近原路徑的路徑(在這組路徑中)。我怎樣才能做到這一點?找到彼此最近的路徑?

回答

0

如果你知道路徑的長度,你可以使用A *算法。你沒有提到任何編程語言,也沒有顯示一些相關的代碼。這樣我可以給你更詳細的答案。

編輯:

我認爲解決的辦法是簡化這樣的問題:

如果你有一個一流的廣場,如果一個問題是這樣的正方形內,則返回true的方法(是相當容易編程並應該高效工作)。你在平凡的道路上放置了3個相當大的方塊。 然後你遍歷可選路徑的所有點,並檢查是否所有的方塊都被這條路徑命中。如果他們將它們添加到另一個列表中以進行下一次遞歸。如果所有路徑都通過你迭代檢查是否只有1條路徑命中所有方塊(是解決方案),則返回它。如果超過1個路徑擊中所有方塊,則用2ce方塊和半邊長進入下一個遞歸。如果沒有路徑擊中所有方塊,則爲下一次遞歸增加25%的邊長,並將此遞歸的所有路徑放入下一個遞歸中。由於越來越少的路徑需要檢查,這應該有一個相當不錯的表現。

+0

編程語言 - C++ 所有路徑都保存在數組中,每個路徑包含50個點。 – omkar1707 2015-02-12 11:10:29

+0

你看過A *嗎? searchnode可能只是對具有索引的patharray的引用。擴展節點意味着你將索引提前一位。啓發式將是距離目標+已經行駛的距離。 – 2015-02-12 11:37:15

+0

如果路徑之間存在交集,則可以將路徑劃分爲具有理想A *圖的pathchunks,當然,擴展該節點意味着在此情況下您有多個節點 – 2015-02-12 11:42:17