找到彼此最远的2个节点并将其余节点连接到该路径最短路径的算法

问题描述

在此任务中,im从网格上的一组节点(超过2个节点)开始。首先,我想从集合中找到彼此最远的两个节点,使用最短路径连接它们。然后将其余节点连接到该路径。有一些需要避免的障碍(障碍通常是形成正方形的4条线)。

算法在2D矩形网格中工作。

  • 从每个点开始,只能在四个方向上遍历到下一个点;上,下,左,右
  • 障碍物:网格上的某些点连接成线(通常是4个形成正方形的线),被视为障碍(应避免)

我已将此任务分为两部分:

  1. 网格上有多个节点(超过2个)。我想找到彼此距离最远的两个节点,并使用最短路径连接这两个节点。 (对于这一部分,我考虑BFS(宽度优先搜索))。网格上还有障碍物:线组(通常是4个线段,它们构成一个正方形)。必须避免障碍。

  2. 在2个最远节点之间创建路径之后,我要将其余节点连接到这2个最远节点的路径。将其余节点连接到该路径也应具有最短路径,并避免任何障碍。 线段可以相交90度(但不能穿过被视为障碍物的线段)。为此,各行不应彼此重叠。

您会建议我使用哪种算法来执行此类任务?我考虑过BFS,Flood-Fill算法和Dijkstra 该算法高效是很重要的,因为网格上可能有数百个或更多节点。 同样,任何有关如何实现这种算法的指令也将不胜感激。

我在网络上发现的一些示例确实为我完成了这项任务,但我很难决定采用哪种方法作为起点。

未加权图中最短的路径:https://www.geeksforgeeks.org/shortest-path-unweighted-graph/

矩阵或网格中两个单元格之间的最短距离:https://www.geeksforgeeks.org/shortest-distance-two-cells-matrix-grid/

无向树中的最长路径:https://www.geeksforgeeks.org/longest-path-undirected-tree/

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...