我有一个两点网格我想计算每个点在另一个点之前可以达到的平方。目前我实现了一个泛洪算法,它可以计算一个点可以达到的平方。
如何更改该算法,以便对simaltaneuosly或至少一个接一个的点进行“泛洪”?
最佳答案
你所说的“每一点都能先于另一点到达”是什么意思?
在我看来你需要找个男朋友。使用fifo队列,如下所示:
设p1和p2为两点的位置。
让f是队列中的第一个元素,l是最后一个元素最初f=0,l=1让q作为队列。
Q[f] = p1
Q[l] = p2
while ( f <= l )
{
poz = Q[f];
++f;
for each neighbour poz' of poz
if poz' hasn't been marked yet
{
mark poz'
add poz' to Q: Q[++l] = poz
}
}
q必须是网格的大小(行x列)。您可以使用两个矩阵:一个是位置p1可以到达,另一个是位置p2可以到达,或者您可以使用一个矩阵,用正数标记平方p1到达,用负数标记平方p2到达。如果你对他们见面的地方感兴趣,你只需要检查一下你是否要从一个负值(poz负和poz正)中标记一个正值,或者反过来这基本上会依次进行泛洪:从p1开始泛洪一个正方形,然后从p2开始,然后从p1开始,然后从p2开始,依此类推。
关于algorithm - 更改FloodFill-Algorithm以获得两个数据点的Voronoi领土?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2288830/