2017-06-02 69 views
0

我張貼這在另一個棧交換的東西,但實際上認爲這可能是一個更相關的位置...算法來計算輪廓的高維函數

我想高效地估計曲線C(F_bar },使得F(X,Y,Z,W,...)= F_bar =常數,其中F(。)是許多輸入的函數。

沒有人知道這種算法的?

+0

您可以使用行進立方體算法的變體來查找與F_bar對應的曲面。簡單的實現需要您提前選擇域並逐步遍歷整個空間。如果維度高,那需要一段時間。在這個變體中行進的立方體對於在細分區域上的一次通過找到許多輪廓是非常有用的。對於單個輪廓,只需從包含曲面的初始起點開始搜索相鄰的長方體即可「追蹤」輪廓。 https://en.wikipedia.org/wiki/Marching_cubes – Gene

回答

0

我不確定曲線 - 或者其他任何非常有用的曲線 - 對於大量的維度都是非常有用的,曲線是一維的,並且在N維中與輪廓明顯類似的是曲面,它在N維中將是N-1維的對象。而且,隨着維度的數量變大,事情變得複雜而令人驚訝。請參閱https://stats.stackexchange.com/questions/99171/why-is-euclidean-distance-not-a-good-metric-in-high-dimensions中的答案和參考資料。

隨着該警告,兩個想法映入腦海:

1)修復所有,但兩個變量的F(X,Y,W,Z ...)。這使得你只有兩個變量是空閒的,所以你有一個兩個變量的函數,你可以爲它做一個完美的普通輪廓圖。

2)在大量隨機選擇的點上查找f(x,y,w,z ...)的值。幸運的是,有些會在F_bar之上,有些會在它之下。假設你的函數是連續的,如果你選擇一個數值高於F_bar的點和一個數值低於F_bar的點,那麼在它們之間的某一點上f()等於F_bar。如果選擇三個點,其中一個位於F_bar的一側,另外兩個位於F_bar的另一側,則這三個點描述一個平面,並且存在一個穿過該平面的輪廓,其中f()相等到F_bar。