2017-06-14 45 views
0

在这本书The design and analysis of spatial data structures P.56 中提到,点四叉树删除(沙美H.)

一旦组候选节点的发现,一个学尝试以发现“最佳”人选,这成为替代节点。选择最佳候选人有两个标准。标准1规定,比其他任何候选人的论文轴线的同一侧接近它的每一个毗邻轴的,如果这样的候选对象存在

我是想实现这个候选人的选择,但不能真的弄清楚这个算法应该如何工作。 我开始非常简单,创建了两个排序列表,一个按x中的差异排序,另一个按y中的差异排序,如果两个对象相同,则此对象/点将是我的结果。如果不是,那么我要么没有候选人,要么可能是2,这是我卡住的地方!

另一个计算策略是某种奇怪的,但我仍然会显示伪代码,也许有人有一个想法

function chooseCandidate(candidate) 
    clockwiseCandidate = candidate.cQuad(candidate.index) // Index is from 0-3 and cQuad returns (index-1)%4 
    counterClockwiseCandidate = candidate.ccQuad(candidate.index) 
    if candidate.x < ccCandidate.x: 
     possibleWinner = candidate 
    else if candidate.y < cCandidate.y: 
     possibleWinner = candidate 

等等,这是不是一个真正的解决办法只是一个mindgame从我... 所以我的问题是,有人可以解释这个问题是什么?或者我可以如何解决这个问题? (请注意,一个完整的描述在上面的链接中给出)

+0

为什么担心当你有四页后的解决方案? –

+0

请参考您认为解决方案是什么?我只看到“J < - ”最佳“替换节点P; – greedsin

+0

对不起,你是对的,代码是不完整的 –

回答

0

我的理解:

扫描候选人,并为你去记住

  • 所有四个象限中,候选者是“比这些坐标轴的同一侧上的任何其他候选人更接近它的每个边界坐标轴”。

  • 到目前为止具有最小L1度量的候选者。

然后,如果您没有找到第一种准确的一个候选者,请使用最后一个。

+0

是的,这也是我的理解,但事实证明,”对于所有四个象限, “比其他任何候选人在这些坐标轴的同一侧更接近每个轴线”,比我看起来更困难,而且我也无法使其工作! – greedsin

+0

嗯,我会试一试简单的方法,并更新我的答案/评论 – greedsin

+0

好吧这不会真的工作,因为你需要比较不是点,而是在各自的坐标轴,这取决于你的哪个象限切换如果你有一个解决方案,请随时分享:) – greedsin