2016-11-16 80 views
0

我需要從大量對象中找到最多similar到所需的object對象陣列中距離最近的對象

在這種情況下,object - 只有我們必須比較的數值的東西(例如下面的xy coords)。

By​​我們是指相應值之間的差異的最小總和。 enter image description here

我該如何以最快的方式做到這一點?

P.S.如果需要,可以在搜索之前排列對象數組。

P.S.S.我已經在math.stackexchange.com上問過這個問題,但有些用戶說我也可以在這裏找到一些東西。

+1

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 這通常是針對特定的編程問題。 「最快」取決於所使用的語言,但你沒有發佈任何代碼。 – Prune

+0

@Prune我只是需要一些啓動。我甚至不知道哪種語言可以解決這個問題以及如何,我不知道如何找到解決這個任務的方法。如果您對該主題有所瞭解,請分享它,無論使用哪種語言。 –

回答

0

這叫做distance function。最簡單的就是取對應座標的差異;取各差值的絕對值;將所有座標加起來,這就是兩組點之間的距離。用更多的代數術語:

讓我們將點(Dx1,Dy1),(Dx2,Dy2),...和目標數組(Tx1,Ty1),(Tx2, Ty2),...你在上面的例子中有10個目標。

|Dx1 - Tx1| + |Dy1 - Ty1| + 
|Dx2 - Tx2| + |Dy2 - Ty2| + 
... 

這是d和T之間的距離 這樣做對所有十項具體目標,並報告最小距離目標的最佳匹配。

+0

感謝您的回答。這是最簡單明顯的答案,對於小數據集來說是很好的。但不幸的是,如果我們將有大型數據陣列,那麼計算它們幾乎是不現實的。所以由於這個問題我問了這個問題。 –

+0

然後你必須改進你的問題陳述。如果你想選擇最小差異總和的匹配,信息論證明你必須以某種方式計算差異之和。如果您具有某些特徵的數據,將它們聚類並將計算距離節省到已知距離「所需」較遠的聚類是可行的。但是,該聚類需要一個不重要的計算量 - 距離。 – Prune

+0

你能解釋關於集羣化的部分嗎?我不明白我應該做什麼。也許你可以通過我的示例在帖子中解釋它?此外,我不明白如何將預計算距離存儲到所需的值,如果每次需要的對象不同? –