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 中推出





