dfsearch
深度优先图搜索
语法
说明
示例
输入参数
输出参量
提示
dfsearch
和bfsearch
将有向图与无向图同等对待。节点s
和t
之间的无向边被视为两条有向边,其中一条是从s
到t
,另一条是从t
到s
。
算法
深度优先搜索算法开始于起始节点 s
,并检查 s
的具有最小节点索引的相邻节点。然后,对于该相邻节点,算法会检查下一个具有最小索引的未发现的相邻节点。这一过程会连续运行,直到搜索遇到一个其相邻节点均已访问过的节点。在该时间点,搜索将沿着路径回溯,找到前面发现的节点中有未发现的相邻节点的最近节点。此过程会连续运行,直到从起始节点可到达的所有节点均已访问。
该算法(递归算法)可用伪代码编写为如下形式:
Event startnode(S) Call DFS(S) function DFS(C) Event discovernode(C) FOR edge E from outgoing edges of node C, connecting to node N Event edgetonew(C,E), edgetodiscovered(C,E) or edgetofinished(C,E) (depending on the state of node N) IF event was edgetonew Call DFS(N) END END Event finishnode(C) END
dfsearch
可返回标志来描述算法中的不同事件,例如,当发现新节点时或某节点的所有出向边均已访问时。此处列出了事件标志。
事件标志 | 事件描述 |
---|---|
'discovernode' | 发现新节点。 |
'finishnode' | 已访问该节点的所有出向边。 |
'startnode' | 此标志指示搜索中的起始节点。 |
'edgetonew' | 边连接到未发现的节点 |
'edgetodiscovered' | 边连接到先前发现的节点 |
'edgetofinished' | 边连接到已完成的节点 |
有关详细信息,请参阅 events
的输入参量描述。
注意
若输入图包含无法从起始节点到达的节点,使用 'Restart'
选项可使搜索访问图中的每个节点。在这种情况下,'startnode'
事件指示搜索每次重新启动时的起始节点。
扩展功能
版本历史记录
在 R2015b 中推出