bfsearch
广度优先图搜索
语法
说明
示例
输入参数
输出参量
提示
dfsearch
和bfsearch
将有向图与无向图同等对待。节点s
和t
之间的无向边被视为两条有向边,其中一条是从s
到t
,另一条是从t
到s
。
算法
广度优先搜索算法在起始节点 s
开始,并按照节点索引顺序检查其所有相邻节点。然后,对于其中每个相邻节点,再按顺序访问它们的未访问相邻节点。算法会连续运行,直到从起始节点可到达的所有节点均已访问。
算法可用伪代码编写为如下形式:
Event startnode(S) Event discovernode(S) NodeList = {S} WHILE NodeList is not empty C = NodeList{1} Remove first element from NodeList 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 Event discovernode(N) Append N to the end of NodeList END END Event finishnode(C) END
bfsearch
可返回标志来描述算法中的不同事件,例如,当发现新节点时或某节点的所有出向边均已访问时。此处列出了事件标志。
事件标志 | 事件描述 |
---|---|
'discovernode' | 发现新节点。 |
'finishnode' | 已访问该节点的所有出向边。 |
'startnode' | 此标志指示搜索中的起始节点。 |
'edgetonew' | 边连接到未发现的节点 |
'edgetodiscovered' | 边连接到先前发现的节点 |
'edgetofinished' | 边连接到已完成的节点 |
有关详细信息,请参阅 events
的输入参量描述。
注意
若输入图包含无法从起始节点到达的节点,使用 'Restart'
选项可使搜索访问图中的每个节点。在这种情况下,'startnode'
事件指示搜索每次重新启动时的起始节点。
扩展功能
版本历史记录
在 R2015b 中推出