這只是我自己想出的東西,但它看起來像一個有趣的問題,它讓我難倒了。加速點最快的路徑
您在二維空間中有一組點,一個點指定爲「開始」和一個「結束」。每個點都有座標(距離原點的米),還有一個「加速度數」(以米/秒爲單位)。在達到一個點(包括開始點)後,您可以在任何方向上加速到該點的加速度數。邊緣成本取決於您當前的速度,但您也必須朝正確的方向移動。
是否有一種有效的算法來查找到達終點的最快路徑?我還沒有想出比「嘗試每條路徑並檢查結果」更好的東西。 Djikstra和其他簡單算法不起作用,因爲如果他們以不同的初始速度到達,您不能輕易說到中間點的一條路徑比另一條路徑更好或更差。
如果這太容易了,如果您添加了必須停止在終點的要求會怎麼樣? (即當你到達最後時,你必須小於加速度值。)
編輯:爲了清楚,方向很重要。您在遍歷圖時維護速度矢量,加速度表示向其添加矢量,其大小限制在該點的加速度數上。這意味着在某些情況下,建立巨大的速度是有害的,因爲你將太快以至於不能「轉向」其他有價值的點/目的地。
你將不得不提供更多細節。你的「加速」概念如何工作?它是否通過「加速度數」減少沿路徑的所有邊緣成本?如果你將「加速數」積累得遠遠超過了邊緣成本?引入像「加速度」這樣的概念表明,最好引入相應的摩擦/拖曳概念,否則可能會導致「未檢查的速度」。到目前爲止,我認爲你的問題不足以讓我們制定出適當的解決方案,但是我認爲這很有趣。 – lightalchemist
我懷疑有這個問題的分析解決方案。我首先解決一個更簡單的問題:以給定順序獲得點的最快路線。 (這個搜索空間的維數等於中間點的數量,我看不到比退火更好的方法。)一旦你有了這個方法,你就可以創建一個修改後的Dijkstra。 – Beta
@lightalchemist「加速度」,我的意思是「速度變化」。 (所以,邊緣成本=歐幾里德距離/速度,但只有當你在正確的方向行駛時才允許...所以)未檢查的速度是好的(這是一個數學難題,而不是一個模擬...雖然我做了最初設想它是用來拾取燃料緩衝器的太空船,所以摩擦仍然不會成爲現實。) –