【发布时间】:2012-02-12 17:26:22
【问题描述】:
我一直对如何最好地解决这个特定问题感到好奇。我能找到的最接近问题的是管道游戏概念,see screenshot
我有一个 10x10 的网格。网格的每个矩形都可以连接到具有 1 到 4 条边(没有对角线,只有顶部、底部、左侧、右侧)的相邻字段 网格左侧可以有 10 个起点,每行一个,然后右 10 个端点在网格的每一行中也有 1 个。
现在我的问题是:找到从起点到任何终点的所有可能路径以及所有死路(有几个点连接到起点的路径)的最有效方法是什么?点但不连接到任何端点)?
我已经尝试了广度优先搜索算法来查找它们之间的所有路径,但是我可以尝试任何更好的替代方法吗?
【问题讨论】:
-
您为什么要寻找替代方案?
-
另一种自然的选择是深度优先搜索。然而,我同意@svick 的观点,即询问您为什么需要替代方案。
-
我正在探索所有的可能性,主要是我只是好奇有什么可以解决这个问题。以及死胡同怎么样。可以安全地假设最好的方法是找到从每个正方形到至少一个起点的路径?
-
使用这种格式的网格,听起来你根本不需要 BFS/DFS,因为找到两点之间最短路径的算法很简单(只要往前走,直到你在上面/下面下一点,然后分别向下/向上)。
-
what is the most efficient way to find all the possible paths网格上任意两点之间的路径数不胜数...比较left->right->left->right....所以很难找到所有路径...您应该将自己限制在最短路径或最多 k 条最短路径中,以获得恒定的 k
标签: java algorithm path-finding