2011-11-07 50 views
4

我的工作需要我來跟蹤多個點的2D平面上的一個項目,一個最小生成樹。我需要添加允許某些點檢測其他點附近的功能。我立即想到最接近的對問題,並認爲我應該構建一個最小生成樹。構建使用Java的TreeMap中

第一個問題是,這些點不斷更新自己的座標,我想知道如果它甚至會是合理的做到這一點。

的另一個問題是,我不能使用第三方庫這個所以沒有jgraph或榮格。我想知道是否有一種方法只使用我提供的庫來構建最小跨度。可以使用TreeMap嗎?還是我必須從頭開始做這件事?

+1

[你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/)什麼庫「你被賦予了」?這是功課嗎? – Mike

+0

jdk6附帶的任何庫。這是一個家庭作業項目,是的,但我並沒有要求編碼答案。這只是一個想法,我不得不完成項目的一小部分,並想知道我是否在正確的軌道上。 – dumpstercake

+1

你是什麼意思「檢測其他點的距離?」你是否試圖做返回點接近另一點的查詢(例如最近鄰居)? –

回答

0

這聽起來像你正在嘗試做近鄰查詢。那就是你試圖找到最接近另一點的一個點(或多個點)的地方。對於一個天真的解決方案,您可以存儲一個點列表並使用距離公式來遍歷它們,以找出哪些點最接近。但是,如果您希望更快地進行查詢,則需要使用啓用這些查詢的空間數據結構。我會建議一棵KD樹。 Java在其標準庫中沒有提供KD Tree實現,因此您需要自己實現它。

樹形圖僅僅是Map界面,可以讓你把和他們的密鑰檢索值的實現。如果你想寫一些東西來生成最小生成樹,你需要自己做。

+0

非常感謝,我現在正在尋找。 – dumpstercake

0

在這樣做將有Point對象的非常面向對象的方式來使用Observer Pattern並註冊自己爲所有其他點的觀察員,然後爲點位置發生變化,他們可以更新所有他們改變了觀察員。您可以控制發生更改的頻率的閾值,或者在將通知發送給觀察員之前,需要更改的閾值。自從你說過,「確定」點需要追蹤鄰近點而不是全部點。