0

我正在構建一個mySql表列出n維的點,每個維度都被索引。給定n維繫統中的任意點,我希望能夠按照距離所選點的距離輸出所有其他點。確定n維中的點之間的距離

一個簡單的解決方案是使用畢達哥拉斯定理計算每個點的距離... sqrt(x^2 + y^2)= z。我一直在尋求更有效的方法。只需要大概的訂單,所以我非常開放。

謝謝。

-diddle

+0

看來我應該注意到我正在尋找一種完全避免勾股法的方法。我認爲它會涉及我沒有遇到的索引列和某種形式的高級連接或db理論。 – dittle

回答

0

除了給出的內容之外,您還可以考慮「分檔」您的分數 - 即(至少在心理上)在您的「地圖」上繪製網格,並基於它們落入的平方來跟蹤分數。基本上,你從同一個方塊中的點開始,然後是圍繞選定點的方形的「環」中的點,然後是下一個環向外,依此類推。根據您使用的網格大小,您可以根據您的喜好製作精確或近似的圖像。當然,2D網格用於2D點 - 如果有更多維度,則必須增加網格的維度以匹配。

1

對於這樣的事情的一種常用方法是考慮的平方距離而非實際距離,消除了平方根,但是,如果我理解正確的問題,你不需要從您的索引中檢索實際距離。在這種情況下,您可以使用每個組件的絕對值之和。

+0

不是。總結絕對值不是衡量普通歐幾里德意義上的「距離」。 (你正在談論的是距離的「1範數」測量)。你說的正確的是存儲/比較正方形,沒關係。 – Peter

+0

是的,廣場看起來很好比較,謝謝你。應該有助於減少一些開銷。 – dittle