我的工作需要我來跟蹤多個點的2D平面上的一個項目,一個最小生成樹。我需要添加允許某些點檢測其他點附近的功能。我立即想到最接近的對問題,並認爲我應該構建一個最小生成樹。構建使用Java的TreeMap中
第一個問題是,這些點不斷更新自己的座標,我想知道如果它甚至會是合理的做到這一點。
的另一個問題是,我不能使用第三方庫這個所以沒有jgraph或榮格。我想知道是否有一種方法只使用我提供的庫來構建最小跨度。可以使用TreeMap嗎?還是我必須從頭開始做這件事?
我的工作需要我來跟蹤多個點的2D平面上的一個項目,一個最小生成樹。我需要添加允許某些點檢測其他點附近的功能。我立即想到最接近的對問題,並認爲我應該構建一個最小生成樹。構建使用Java的TreeMap中
第一個問題是,這些點不斷更新自己的座標,我想知道如果它甚至會是合理的做到這一點。
的另一個問題是,我不能使用第三方庫這個所以沒有jgraph或榮格。我想知道是否有一種方法只使用我提供的庫來構建最小跨度。可以使用TreeMap嗎?還是我必須從頭開始做這件事?
這聽起來像你正在嘗試做近鄰查詢。那就是你試圖找到最接近另一點的一個點(或多個點)的地方。對於一個天真的解決方案,您可以存儲一個點列表並使用距離公式來遍歷它們,以找出哪些點最接近。但是,如果您希望更快地進行查詢,則需要使用啓用這些查詢的空間數據結構。我會建議一棵KD樹。 Java在其標準庫中沒有提供KD Tree實現,因此您需要自己實現它。
樹形圖僅僅是Map
界面,可以讓你把和他們的密鑰檢索值的實現。如果你想寫一些東西來生成最小生成樹,你需要自己做。
非常感謝,我現在正在尋找。 – dumpstercake
在這樣做將有Point
對象的非常面向對象的方式來使用Observer Pattern
並註冊自己爲所有其他點的觀察員,然後爲點位置發生變化,他們可以更新所有他們改變了觀察員。您可以控制發生更改的頻率的閾值,或者在將通知發送給觀察員之前,需要更改的閾值。自從你說過,「確定」點需要追蹤鄰近點而不是全部點。
[你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/)什麼庫「你被賦予了」?這是功課嗎? – Mike
jdk6附帶的任何庫。這是一個家庭作業項目,是的,但我並沒有要求編碼答案。這只是一個想法,我不得不完成項目的一小部分,並想知道我是否在正確的軌道上。 – dumpstercake
你是什麼意思「檢測其他點的距離?」你是否試圖做返回點接近另一點的查詢(例如最近鄰居)? –