0
我正在修補地理空間數據,特別是軌道(由經度和緯度定義的有序地理位置序列)。Algorighm或設計模式的高效隨機訪問累積和
大多數應用程序要求我計算從開始到給定點的累積距離。因此,例如,如果我打電話給track.totalDistance[20]
,例如,我將獲得從開始點到索引點20的距離。
目前我正在通過預先計算每個連續距離,增加一個變量並將值分配給每個點,這是不是一個好的行爲,因爲我打算編輯軌道(添加,刪除和更新點),並且「總距離」實際上不是一個軌跡點的內在屬性,而是它的上下文中的軌跡點的內在屬性跟蹤。另一方面,如果我推遲對吸氣劑功能的評估,比如說getTotalDistance(track, 20)
,那麼會有很多重複的和實際上不必要的計算。
所以問題是:我怎樣才能以一種方式實現一個類,以便我可以在任何時候更有效地獲得任意索引的累積和,同時避免不必要的計算(完全初始化或重複)?
我使用的語言大多是Python,Javascript和C#,但我想答案可能是可以用任何語言實現的一般結構。
雖然這看起來很巧妙,它現在對我來說有點太超前了。 ..我不得不看看這個片刻,但「自平衡樹」這個詞聽起來像是我認爲是這樣的地理空間最好的方式(當然還有KD樹) 。謝謝你! – heltonbiker
自平衡僅用於確保每次操作都存在最差情況的O(log n)時間。如果樹被傾斜到一個鏈表中,它會使操作的最壞情況O(n)時間。它會在沒有自我平衡的情況下正常工作,但並不總是如此有效。 –
如果沒有自我平衡,您可以從每一半節點遞歸創建一棵樹,並將它們組合成一棵樹。這會給你一個初始平衡的樹。隨着時間的推移,樹可能會偏斜。 –