我需要從大量對象中找到最多similar
到所需的object
。對象陣列中距離最近的對象
在這種情況下,object
- 只有我們必須比較的數值的東西(例如下面的x
和y
coords)。
我該如何以最快的方式做到這一點?
P.S.如果需要,可以在搜索之前排列對象數組。
P.S.S.我已經在math.stackexchange.com上問過這個問題,但有些用戶說我也可以在這裏找到一些東西。
我需要從大量對象中找到最多similar
到所需的object
。對象陣列中距離最近的對象
在這種情況下,object
- 只有我們必須比較的數值的東西(例如下面的x
和y
coords)。
我該如何以最快的方式做到這一點?
P.S.如果需要,可以在搜索之前排列對象數組。
P.S.S.我已經在math.stackexchange.com上問過這個問題,但有些用戶說我也可以在這裏找到一些東西。
這叫做distance function。最簡單的就是取對應座標的差異;取各差值的絕對值;將所有座標加起來,這就是兩組點之間的距離。用更多的代數術語:
讓我們將點(Dx1,Dy1),(Dx2,Dy2),...和目標數組(Tx1,Ty1),(Tx2, Ty2),...你在上面的例子中有10個目標。
|Dx1 - Tx1| + |Dy1 - Ty1| +
|Dx2 - Tx2| + |Dy2 - Ty2| +
...
這是d和T之間的距離 這樣做對所有十項具體目標,並報告最小距離目標的最佳匹配。
感謝您的回答。這是最簡單明顯的答案,對於小數據集來說是很好的。但不幸的是,如果我們將有大型數據陣列,那麼計算它們幾乎是不現實的。所以由於這個問題我問了這個問題。 –
然後你必須改進你的問題陳述。如果你想選擇最小差異總和的匹配,信息論證明你必須以某種方式計算差異之和。如果您具有某些特徵的數據,將它們聚類並將計算距離節省到已知距離「所需」較遠的聚類是可行的。但是,該聚類需要一個不重要的計算量 - 距離。 – Prune
你能解釋關於集羣化的部分嗎?我不明白我應該做什麼。也許你可以通過我的示例在帖子中解釋它?此外,我不明白如何將預計算距離存儲到所需的值,如果每次需要的對象不同? –
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 這通常是針對特定的編程問題。 「最快」取決於所使用的語言,但你沒有發佈任何代碼。 – Prune
@Prune我只是需要一些啓動。我甚至不知道哪種語言可以解決這個問題以及如何,我不知道如何找到解決這個任務的方法。如果您對該主題有所瞭解,請分享它,無論使用哪種語言。 –