我正在尋找一個數據結構,它支持查找哪個「n」個區域包含一個點「p」。我正在研究Quadtree和R-trees,但我不認爲它們完全符合我的要求。尋找哪個區域包含一個點的好的數據結構是什麼?
實質上,我希望能夠在這棵樹上添加一些3維的矩形區域,然後能夠對這棵樹測試一個3維點並返回哪個區域最緊密地約束點。沒有地區會有重疊的邊界。
我目前使用的樸素算法是對每個矩形區域的每個維度簡單地測試點「p」。
for(region in regionList):
if(p.x > region.x1 && p.x < region.x2 && p.y > region.y1 && py < region.y2 && p.z > region.z1 && p.z < region.z2)
return region
end
這運行在O(n)時間,其中n是地區的數量。我希望搜索將O(log n)作爲Quadtree找到2d點的一個點。
這看起來很有前途。 http://www.cs.umd.edu/~hjs/multidimension-book-flyer.pdf – RocketRoy
由於區域不能重疊,所以最多隻有一個區域可以包含該點。這使得「......返回哪個區域最嚴格地限制了點」的問題。邏輯上的不可能性。 1,只有1可以限制點。 – RocketRoy
這個應用程序可能會非常好地使用新的SIMD擴展,爲3D圖形應用程序提供16個128位寄存器。 – RocketRoy