dfsearch
图深度优先搜索
语法
描述
例子
输入参数
输出参数
提示
dfsearch
和bfsearch
对无向图一样的有向图。一个无向边节点之间年代
和t
是当作两个定向边缘,一个来自哪里年代
来t
和一个来自t
来年代
。
算法
深度优先搜索算法从起始节点开始,年代
,检查你的邻居的年代
有最小的节点索引。然后检查下一个未被发现的邻居,邻居指数最低的。这个过程一直持续到搜索遇到一个节点的邻居都被访问。在这一点上,沿着路径搜索回溯到最近的之前发现的节点有一个还没被发现的邻居。这一过程持续进行,直到所有的节点都可以从开始节点访问。
在伪代码,(递归)算法可以写成:
事件startnode (S)调用DFS (S)函数DFS (C)事件discovernode (C)边缘E C从外向的边缘节点,连接节点N事件edgetonew (C、E), edgetodiscovered (C、E)或edgetofinished (C, E)(取决于节点N)的状态如果事件是edgetonew叫DFS (N)结束结束事件finishnode (C)
dfsearch
可以返回标记算法来描述不同的事件,如当一个新的节点发现或当所有节点的边的访问。这里列出的事件标志。
国旗事件 | 事件描述 |
---|---|
“discovernode” |
发现了一个新节点。 |
“finishnode” |
所有即将离任的边节点的访问。 |
“startnode” |
这个标志表明起始节点搜索。 |
“edgetonew” |
边缘连接到一个未被发现的节点 |
“edgetodiscovered” |
之前发现的节点连接到边缘 |
“edgetofinished” |
边缘连接到节点完成 |
有关更多信息,请参见输入参数描述事件
。
请注意
在这种情况下,输入图包含节点从起始节点,遥不可及的“重启”
选项提供了一种方法,使搜索访问图中的每个节点。在这种情况下,“startnode”
事件表明起始节点每次搜索重启。
版本历史
介绍了R2015b