问题描述
在此任务中,im从网格上的一组节点(超过2个节点)开始。首先,我想从集合中找到彼此最远的两个节点,使用最短路径连接它们。然后将其余节点连接到该路径。有一些需要避免的障碍(障碍通常是形成正方形的4条线)。
算法在2D矩形网格中工作。
- 从每个点开始,只能在四个方向上遍历到下一个点;上,下,左,右
- 障碍物:网格上的某些点连接成线(通常是4个形成正方形的线),被视为障碍(应避免)
我已将此任务分为两部分:
-
网格上有多个节点(超过2个)。我想找到彼此距离最远的两个节点,并使用最短路径连接这两个节点。 (对于这一部分,我考虑BFS(宽度优先搜索))。网格上还有障碍物:线组(通常是4个线段,它们构成一个正方形)。必须避免障碍。
-
在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 (将#修改为@)