我以問題的形式提出這個問題,因爲我的快速和骯髒的實現似乎足夠好。不過,我很好奇什麼是更好的實施。在沒有已知方程的圖中找到最近點的高效算法
我有一個真實世界的數據圖。沒有重複的X值,並且X值以整個圖的一致率增加,但Y數據基於現實世界的輸出。我想以編程方式從任意給定點P找到圖上最近的點。我試圖找到一個有效的(即快速)算法來做到這一點。我不需要確切的最近點,我可以解決一個「近乎」最接近的點。
明顯的懶惰解決方案是增加圖中的每個點,計算距離,然後找到距離的最小值。然而,對於大型圖,這在理論上可能很慢;我想要的東西太慢了。
由於我只需要一個近似最接近的點,我想象最理想的最快方程將涉及生成一個最佳擬合線,並使用該線來計算實時點應該在哪裏;但這聽起來像是我不會承擔的一個潛在的數學頭痛。
我的解決方案是一種破解,因爲我認爲我的點P不是任意的,即我假設P通常接近我的圖形線,當發生這種情況時,我可以將遠處的X值從考慮。我計算與P共享X座標的線上點的距離是多近,並使用該點與P之間的距離來計算可能是更接近點的最大/最小X值。
我不禁感覺應該有一個更快的算法,然後我的解決方案(這是唯一有用的,因爲我假設99%的時間我的點P將是一個點已接近線已經)。我試着用google搜索更好的算法,但發現很多算法不太適合,在所有不合適的算法混亂中很難找到我正在尋找的東西。那麼,這裏有沒有人有一個更有效的建議算法?請記住,我不需要一個完整的算法,因爲我已經爲我的需求工作,我只是好奇什麼是適當的解決方案。
問題計算F(X)。如何在不增加大量複雜性的情況下執行此操作? – drew
對不起,'f(x)'是你的「真實世界的數據」。這是您在x處的數據的y值。 – tskuzzy
好吧對不起,誤解了你的答案。這與我所做的很接近,只是我用距離的平方作爲我的r而不是f(X)-y。也許我只是沒有清楚地思考,但是由於距離是基於X和Y的平方,因此在沒有正方形或平方根的地方,這似乎不起作用。(我的大腦現在不能完全運行所以我不能確定我只是不是愚蠢的嘿) – drew