【发布时间】:2012-01-16 20:34:35
【问题描述】:
遍历图的两种最常用方法是breadth-first search 和depth-first search。这两种搜索算法都遵循一个共同的模板:
- 创建工作列表 W,以起始节点 s 为种子。
- 当工作清单不为空时:
- 删除工作清单的第一个元素;称之为 v.
- 如果 v 未被访问:
- 将 v 标记为已访问。
- 对于每个直接连接到 v 的节点 u,将 u 添加到 W。
在广度优先搜索中,工作列表 W 被实现为 FIFO queue,而在深度优先搜索中,它是 LIFO stack。如果 W 是 priority queue,则得到 uniform-cost search。
不久前我问过a question about a data structure for choosing random elements out of a bag。如果您使用此随机包实现上述工作列表 W,那么您将获得一个“随机优先搜索”算法,该算法从初始节点开始随机探索图中的节点。
我的问题是:是否有任何已知算法使用这种类型的搜索?也就是说,是否有算法可以通过以这种方式生成图的随机生成树来工作? p>
【问题讨论】:
-
Maze generation algorithm 上的维基百科文章提到了 DFS 的随机版本。
-
我很想知道是什么导致你想出这个方案。
标签: algorithm random graph depth-first-search breadth-first-search