使用BFS多次访问一个单元格

时间:2017-10-22 15:59:09

标签: graph-theory breadth-first-search

我正在尝试解决迷宫问题,我必须在2D网格中获取所有硬币并使用广度优先搜索打印最短路径。此算法标记为在查找路径时访问节点(单元格),但此问题需要多次访问单元格,因此我无法将其标记为已访问。

这是基于 ICS 161

的BFS的基本伪代码:

article_no  month(beleg.orderdate)  reportMonth VK_amount
Produkt_A                           1           1
Produkt_A                           2           0
Produkt_A                           3           0
Produkt_A   4                       4           1
Produkt_A   5                       5           2
Produkt_A                           6           0
Produkt_A   7                       7           3
Produkt_A   8                       8           2
Produkt_A                           9           0
Produkt_A   10                      10          2
Produkt_A                           11          0
Produkt_A                           12          0

如何重新访问单元格而不必将其标记为已访问?

或者我如何标记一些我知道它们不属于最短路径的细胞?因此,该算法不必添加不必要的边缘。

1 个答案:

答案 0 :(得分:0)

尽管我对您的问题仍然有些困惑,但这是我的一些建议。 要使用BFS查找最短路径,prim的算法可能是最佳选择。

这是关于原始算法工作原理的简短描述。 https://www.geeksforgeeks.org/prims-minimum-spanning-tree-mst-greedy-algo-5/

对于您来说,我们需要做的几件事:

  1. 在每个边缘上进行BFS,找到每个硬币到其余硬币和您的起点的最短路径(BFS总是将您带到最短路径)

现在我们有了边和顶点,我们可以进行Prim's Algo!

  1. 从起点开始,然后进行初次算法

希望这对您有帮助