路由许多冲突路径

时间:2017-10-09 13:58:23

标签: algorithm path-finding graph-visualization

在我们的项目中,我们必须可视化网络。该网络由多个设备组成,每个设备都有多个端口。设备可视化为包含彼此相邻排列的每个端口的盒子。每个端口都可以链接到任何其他设备上的任何其他端口。如果可能的话,每个链接必须以不会在任何设备上运行的方式进行路由,并且如果可能的话,它不会跨越其他链接。

目前,我们使用A *寻路来查找每个链接的路由。设备占用的网格节点具有非常高的权重。完成一个链接的路径查找后,我们为该链接的路径占用的每个网格节点添加一个较低的权重。

这种工作方式,但完成寻路的顺序会极大地影响结果,并且通常会导致非常次优的路径。这是一个常见的错误,即在同一方向上运行的多条路径往往比必要的更频繁地穿越。

这是一个例子: A连接到C,B连接到D.

A|
B++
 ||
 ++---C
  +---D

这里发生的是首先运行从A到C的链路寻路。路径从A开始,直线向下直到与C相同的高度,然后向右转,直到达到C。

现在,从B到D的链路的寻路运行。它首先必须跳过第一个链接才能到达可以移动的空闲空间而不会受到惩罚。然后它再次转向并再次跳过第一条路径,然后它可以达到与D相同的高度,然后向右转到D。

还有一个解决方案根本不需要任何跳转。

现在我的问题:是否有任何算法允许在同时搜索多条路径时找到最佳(或至少是一个好的)解决方案?用于查找竞争路径的非贪心算法?

我不关心实现或库,我只是在寻找合适的算法。

编辑:我忘了一件重要的事情:这应该只会影响边缘的位置。设备的位置以及端口的位置由用户设置,因此不允许通过算法修改。

0 个答案:

没有答案