当前位置: 首页 > 面试题库 >

更改FloodFill-Algorithm以获得两个数据点的Voronoi领土?

斜单鹗
2023-03-14
问题内容

我得到了两分的网格。我想计算每个点可以到达的平方数。目前,我实现了FloodFill-Algoritm,它可以计算一个点可以达到的正方形数量。

如何更改该算法以同时或至少一个接一个地对两个点进行“泛洪”?


问题答案:

“每个点可以先到达另一个”是什么意思?

在我看来,您需要进行BF搜索。像这样使用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泛洪,依此类推。



 类似资料:
  • 我正在尝试使用以下有问题的sql查询计算特定页面上的注释: 问题是它输出的是0而不是2。 表列如下: 页数: 评论: 因此,实际上,原始查询应该从中获取每个注释的真(如pages表中设置的,由连接 完成连接和/或获得计数的最终代码是什么样子的?谢谢.

  • 问题内容: 我有一个SQL Server数据库,当在表中插入时,我想通知android应用程序。 例如,当收到订单时,我将其插入到SQL Server数据库中。我还希望用户在我的应用中收到有关订单的通知。该应用程序始终处于打开状态。我使用Web服务与数据库联系。 我不想每10秒钟左右请求一次表格。还有其他办法吗? 问题答案: 您可以使用Google Cloud消息服务,在此处了解如何设置服务器。

  • 我有一个pandas数据框,其中包含列和。我想从他们那里得到和。中有一个函数,名为,用于执行此操作。它接收和,并给出。我是这样做的: 我想定义一个函数并应用一次以节省时间。我看了看这里,这里和这里,但是我找不到一种方法来使用一个函数制作两列。谢谢。

  • 使用RxJava,我有一个源Observable,它发出许多项目,我希望这些项目与另一个发出相同类型的Observable相交。在研究了许多选项之后,似乎构建事物的最连贯的方式是: 这里的预期输出是,当我订阅结果的可观察时,我会发出12个项目。由于getMatches的契约,我需要缓冲结果。 从表面上看,这似乎是可行的,但它似乎不是最干净的方式。过滤器似乎不适用于此,因为出于性能原因,我无法对每个

  • 计算两个地方之间的距离;当您知道java中的经度和纬度时,使用两个lat和longi也可以使用此链接以米为单位计算距离 我得到的结果是米,比如2.4737676E-5,这也是一个浮动值。 我想只取小数点后的前两个值。但使用十进制格式和字符串格式,我也无法得到预期的结果,如(2.47)。。仅为0.00。

  • 我有两个数据帧。示例: 每个数据帧都有日期作为索引。两个数据帧具有相同的结构。 我想做的是比较这两个数据帧,找出df2中哪些行不在df1中。我想比较日期(索引)和第一列(香蕉、苹果等),看看它们是否存在于df2和df1中。 我尝试了以下方法: 两个熊猫数据帧并排输出差异-突出差异 比较两个熊猫数据帧的差异 对于第一种方法,我得到这个错误:"异常:只能比较相同标记的DataFrame对象"。我尝试删

  • 我试图用Python的Pymoo库设置我的优化,我使用他们的“入门”指南,但传递我自己的独立变量,也不使用约束。我使用指南中的示例函数得到了相同的结果(我在下面的代码中注释了它们)。 代码如下: 当我打印出问题类中_evaluate_elementwise方法中的kwargs时,我确实得到了它是算法对象: {'算法': 我很难理解它是如何将algorithm对象作为_evalute的参数的,它接受

  • 问题内容: 更具体地说,我正在为Visual Studio使用firebird 2.1和DDEX Provider,并且正在使用c#。 我遇到一种情况,我试图将架构更改从c#应用于数据库,以“更新”我的数据库。在此过程中,我从firebird收到以下异常: FirebirdSql.Data.FirebirdClient.FbException:不成功的元数据更新对象INDEX正在使用 我将其解释为