图广度优先搜索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
,在那里gydF4y2BatfgydF4y2Ba
)gydF4y2BatfgydF4y2Ba
是gydF4y2Ba符合事实的gydF4y2Ba
,如果从已发现的节点无法到达新节点,则重新启动搜索。您可以在前面的语法中使用任何输入或输出参数组合。该选项确保广度优先搜索到达图中的所有节点和边,即使从起始节点无法到达它们,gydF4y2Ba年代gydF4y2Ba
.gydF4y2Ba
dfsearchgydF4y2Ba
和gydF4y2BabfsearchgydF4y2Ba
将无向图与有向图同等对待。结点之间的无向边gydF4y2Ba年代gydF4y2Ba
和gydF4y2BatgydF4y2Ba
就像两条有向边,一条来自gydF4y2Ba年代gydF4y2Ba
到gydF4y2BatgydF4y2Ba
和一个来自gydF4y2BatgydF4y2Ba
到gydF4y2Ba年代gydF4y2Ba
.gydF4y2Ba
广度优先搜索算法从起始节点开始,gydF4y2Ba年代gydF4y2Ba
,并按其节点索引的顺序检查所有邻近节点。然后,对于每个邻居,它会依次访问它们未访问的邻居。该算法继续执行,直到从起始节点访问所有可达的节点。gydF4y2Ba
在伪代码中,算法可以写成:gydF4y2Ba
Event startnode(S) Event discovernode(S) NodeList = {S} WHILE NodeList is not empty C = NodeList{1}从NodeList中删除第一个元素,从节点C的出站边E,连接到节点Nedgetodiscovered(C,E)或edgetofinished(C,E)(取决于节点N的状态)IF event was edgetonnew event discovernode(N) Append N to the end of NodeList end end事件完成节点(C) endgydF4y2Ba
bfsearchgydF4y2Ba
可以返回标志来描述算法中的不同事件,例如发现新节点或访问节点的所有传出边缘时。此处列出了事件标志。gydF4y2Ba
国旗事件gydF4y2Ba | 事件描述gydF4y2Ba |
---|---|
“discovernode”gydF4y2Ba |
发现新节点。gydF4y2Ba |
“finishnode”gydF4y2Ba |
所有从节点发出的边都被访问过。gydF4y2Ba |
“startnode”gydF4y2Ba |
此标志指示搜索中的起始节点。gydF4y2Ba |
“edgetonew”gydF4y2Ba |
边连接到未发现的节点gydF4y2Ba |
“edgetodiscovered”gydF4y2Ba |
Edge连接到以前发现的节点gydF4y2Ba |
“edgetofinished”gydF4y2Ba |
边连接到一个完成的节点gydF4y2Ba |
有关详细信息,请参见的输入参数说明gydF4y2Ba事件gydF4y2Ba
.gydF4y2Ba
请注意gydF4y2Ba
如果输入图包含从起始节点无法访问的节点,则gydF4y2Ba“重启”gydF4y2Ba
选项提供了一种方法,使搜索访问图中的每个节点。在这种情况下gydF4y2Ba“startnode”gydF4y2Ba
Event表示每次重新启动搜索时的起始节点。gydF4y2Ba
dfsearchgydF4y2Ba
|gydF4y2Ba康康普gydF4y2Ba
|gydF4y2Ba图gydF4y2Ba
|gydF4y2Ba有向图gydF4y2Ba