bfsearchgydF4y2Ba
广度优先图搜索gydF4y2Ba
语法gydF4y2Ba
描述gydF4y2Ba
适用于gydF4y2Ba广度优先搜索gydF4y2Ba到图gydF4y2BavgydF4y2Ba
= bfsearch (gydF4y2BaGgydF4y2Ba
,gydF4y2Ba年代gydF4y2Ba
)gydF4y2BaGgydF4y2Ba
从节点开始gydF4y2Ba年代gydF4y2Ba
.结果是一个按发现顺序排列的节点id向量。gydF4y2Ba
通过标记一个或多个搜索事件,自定义广度优先搜索的输出。例如,gydF4y2BaTgydF4y2Ba
= bfsearch (gydF4y2BaGgydF4y2Ba
,gydF4y2Ba年代gydF4y2Ba
,gydF4y2Ba事件gydF4y2Ba
)gydF4y2BaT = bfsearch(G,s,'allevents')gydF4y2Ba
返回一个包含所有标记事件的表,并且gydF4y2BaX = bfsearch(G,s,'edgetonew')gydF4y2Ba
返回边的矩阵或单元格数组。gydF4y2Ba
[gydF4y2Ba
另外返回一个边缘索引向量gydF4y2BaTgydF4y2Ba
,gydF4y2BaEgydF4y2Ba
= bfsearch(gydF4y2BaGgydF4y2Ba
,gydF4y2Ba年代gydF4y2Ba
,gydF4y2Ba事件gydF4y2Ba
)gydF4y2BaEgydF4y2Ba
当gydF4y2Ba事件gydF4y2Ba
设置为gydF4y2Ba“edgetonew”gydF4y2Ba
,gydF4y2Ba“edgetodiscovered”gydF4y2Ba
,或gydF4y2Ba“edgetofinished”gydF4y2Ba
.边索引用于在多图中对边进行唯一的识别。gydF4y2Ba
[gydF4y2Ba___gydF4y2Ba= bfsearch(gydF4y2Ba___gydF4y2Ba“重启”,gydF4y2Ba
,在那里gydF4y2Ba特遣部队gydF4y2Ba
)gydF4y2Ba特遣部队gydF4y2Ba
是gydF4y2Ba真正的gydF4y2Ba
,如果从发现的节点无法访问新节点,则重新启动搜索。您可以使用前面语法中的任何输入或输出参数组合。这个选项确保广度优先搜索到达图中的所有节点和边,即使它们无法从起始节点到达,gydF4y2Ba年代gydF4y2Ba
.gydF4y2Ba
例子gydF4y2Ba
输入参数gydF4y2Ba
输出参数gydF4y2Ba
提示gydF4y2Ba
dfsearchgydF4y2Ba
和gydF4y2BabfsearchgydF4y2Ba
对待无向图与有向图相同。节点之间的无向边gydF4y2Ba年代gydF4y2Ba
和gydF4y2BatgydF4y2Ba
被视为两条有向边,一条来自gydF4y2Ba年代gydF4y2Ba
来gydF4y2BatgydF4y2Ba
还有一个来自gydF4y2BatgydF4y2Ba
来gydF4y2Ba年代gydF4y2Ba
.gydF4y2Ba
算法gydF4y2Ba
广度优先搜索算法从起始节点开始,gydF4y2Ba年代gydF4y2Ba
,并按照节点索引的顺序检查它的所有邻近节点。然后对于每个邻居,它会依次访问未访问过的邻居。该算法继续执行,直到访问了从起始节点可访问的所有节点。gydF4y2Ba
在伪代码中,算法可以写成:gydF4y2Ba
Event startnode(S) Event discovernode(S) NodeList = {S} WHILE NodeList is not empty C = NodeList{1}从节点C的出线边缘E的NodeList中删除第一个元素,连接到节点N Event edgetonew(C,E), edgetofound (C,E)或edgetofinished(C,E)(取决于节点N的状态)IF Event was edgetonnew Event discovernode(N)将N追加到节点列表的末尾end end事件finishnode(C) endgydF4y2Ba
bfsearchgydF4y2Ba
可以返回标记来描述算法中的不同事件,例如当发现一个新节点时,或当一个节点的所有传出边都被访问时。这里列出了事件标志。gydF4y2Ba
国旗事件gydF4y2Ba | 事件描述gydF4y2Ba |
---|---|
“discovernode”gydF4y2Ba |
发现了一个新节点。gydF4y2Ba |
“finishnode”gydF4y2Ba |
已经访问了节点的所有传出边。gydF4y2Ba |
“startnode”gydF4y2Ba |
此标志指示搜索中的开始节点。gydF4y2Ba |
“edgetonew”gydF4y2Ba |
Edge连接到未发现的节点gydF4y2Ba |
“edgetodiscovered”gydF4y2Ba |
Edge连接到先前发现的节点gydF4y2Ba |
“edgetofinished”gydF4y2Ba |
Edge连接到已完成的节点gydF4y2Ba |
有关更多信息,请参见的输入参数描述gydF4y2Ba事件gydF4y2Ba
.gydF4y2Ba
请注意gydF4y2Ba
如果输入图包含从起始节点无法到达的节点,则gydF4y2Ba“重启”gydF4y2Ba
Option提供了一种方法,使搜索访问图中的每个节点。在这种情况下gydF4y2Ba“startnode”gydF4y2Ba
事件表示每次重新启动搜索时的开始节点。gydF4y2Ba
版本历史gydF4y2Ba
在R2015b中引入gydF4y2Ba
另请参阅gydF4y2Ba
dfsearchgydF4y2Ba
|gydF4y2BaconncompgydF4y2Ba
|gydF4y2Ba图gydF4y2Ba
|gydF4y2Ba有向图gydF4y2Ba