如何为寻路算法优化大图?

时间:2018-10-02 06:07:16

标签: algorithm graph graph-algorithm pathfinder

我开发了一个小程序,用户可以在其中创建带有通过线连接的抽象块的简单图,例如流程图或结构图。工作说明的其中一项是,线必须绕过其他图块\线,并且在移动时不得与它们相交。

插图

enter image description here

我尝试使用诸如 A * Lee's算法之类的寻路算法,并考虑一个像图形一样的工作空间(带有图表元素的窗口)-一个像素就是一个图节点。但是,移动块\线会导致大量的时间延迟(例如,在大小为 500x500 的工作区中进行路径查找大约需要 320-360 ms )。对于那些算法来说,图表似乎太大了。

能否请您告诉我如何减少这种情况下的节点数?也许有一种方法可以加快这些算法的速度或为其使用其他功能?!

1 个答案:

答案 0 :(得分:2)

不要将其视为图论问题,而应将其视为物理问题。

可视化如下。每个块都有特定的力将其拉到放置的最后位置。线段,块和图形的边缘通过平方反比彼此排斥(除了要绘制的线的末端不排斥其前面的块)。在足够的压力下,可以将线段分解为较小的线段,这些线段具有恢复直线的吸引力。

动力学很复杂,但是实体的数量是您在屏幕上看到的对象的数量,而不是绘制对象的像素数量。因此,您将能够相对快速地进行更新。

要获得良好的体验,您需要稍微进行一些动态调整,但这应该是更易于处理的方法。