宽度第一图搜索GydF4y2Ba
适用GydF4y2Ba广度优先搜索GydF4y2Ba图表GydF4y2BaV.GydF4y2Ba
= bfsearch(GydF4y2BaGGydF4y2Ba
那GydF4y2BaS.GydF4y2Ba
)GydF4y2BaGGydF4y2Ba
从节点GydF4y2BaS.GydF4y2Ba
。结果是节点ID的向量,其发现顺序。GydF4y2Ba
通过标记一个或多个搜索事件,定制宽度优先搜索的输出。例如,GydF4y2BaT.GydF4y2Ba
= bfsearch(GydF4y2BaGGydF4y2Ba
那GydF4y2BaS.GydF4y2Ba
那GydF4y2Ba事件GydF4y2Ba
)GydF4y2Bat = bfsearch(g,s,'andvents')GydF4y2Ba
返回包含所有标记事件的表GydF4y2BaX = bfsearch (G s edgetonew)GydF4y2Ba
返回边缘的矩阵或单元格数组。GydF4y2Ba
[GydF4y2Ba
另外返回边缘指数的向量GydF4y2BaT.GydF4y2Ba
那GydF4y2BaE.GydF4y2Ba
) = bfsearch (GydF4y2BaGGydF4y2Ba
那GydF4y2BaS.GydF4y2Ba
那GydF4y2Ba事件GydF4y2Ba
)GydF4y2BaE.GydF4y2Ba
什么时候GydF4y2Ba事件GydF4y2Ba
被设置为GydF4y2Ba'EdgetOnew'GydF4y2Ba
那GydF4y2Ba'Edgetodiscovered'GydF4y2Ba
,或GydF4y2Ba'Edgetofination'GydF4y2Ba
。边缘指数用于以多填充中的唯一识别边缘。GydF4y2Ba
[GydF4y2Ba___GydF4y2Ba) = bfsearch (GydF4y2Ba___GydF4y2Ba,'重新开始',GydF4y2Ba
, 在哪里GydF4y2Ba特遣部队GydF4y2Ba
)GydF4y2Ba特遣部队GydF4y2Ba
是GydF4y2Ba真正的GydF4y2Ba
,如果没有从发现的节点无法访问新节点,则重新启动搜索。您可以在以前的语法中使用任何输入或输出参数组合。此选项可确保广度首先搜索在图中达到所有节点和边缘,即使它们无法从起始节点无法访问,GydF4y2BaS.GydF4y2Ba
。GydF4y2Ba
dfsearch.GydF4y2Ba
和GydF4y2BaBFSearch.GydF4y2Ba
处理无向图的图形与有关图表相同。节点之间的无向边沿GydF4y2BaS.GydF4y2Ba
和GydF4y2BaT.GydF4y2Ba
被视为两个定向边缘,一个来自GydF4y2BaS.GydF4y2Ba
来GydF4y2BaT.GydF4y2Ba
和一个来自GydF4y2BaT.GydF4y2Ba
来GydF4y2BaS.GydF4y2Ba
。GydF4y2Ba
宽度第一搜索算法在起始节点开始,GydF4y2BaS.GydF4y2Ba
,并按其节点索引顺序检查其所有相邻节点。然后,对于每一个邻居,它会按顺序访问其未公开的邻居。算法继续,直到访问从起始节点到达的所有节点都被访问过。GydF4y2Ba
在伪代码中,算法可以写成:GydF4y2Ba
事件startnode(s)事件发现nodelist = {s},而Nodelist不是空的c = nodelist {1}从节点c的输出边缘从NodeList中删除Fout Edener e的第一元素,连接到节点N事件EDGETONEW(C,e),EDGETodiscovered(C,E)或EDGetoFination(C,E)(根据节点n的状态)如果事件是EDGETONEW事件发现(n)将n附加到Nodelist结束事件终点(c)结束GydF4y2Ba
BFSearch.GydF4y2Ba
可以返回标记来描述算法中的不同事件,例如当发现一个新节点时,或者当一个节点的所有传出边都被访问时。这里列出了事件标志。GydF4y2Ba
活动旗帜GydF4y2Ba | 事件描述GydF4y2Ba |
---|---|
'发现'GydF4y2Ba |
已发现新节点。GydF4y2Ba |
“finishnode”GydF4y2Ba |
已经访问了节点中的所有传出边缘。GydF4y2Ba |
'startnode'GydF4y2Ba |
这个标志表示搜索的开始节点。GydF4y2Ba |
'EdgetOnew'GydF4y2Ba |
边缘连接到未发现的节点GydF4y2Ba |
'Edgetodiscovered'GydF4y2Ba |
边缘连接到先前发现的节点GydF4y2Ba |
'Edgetofination'GydF4y2Ba |
边缘连接到已成品节点GydF4y2Ba |
有关的更多信息,请参见输入参数描述GydF4y2Ba事件GydF4y2Ba
。GydF4y2Ba
笔记GydF4y2Ba
如果输入图包含从起始节点无法到达的节点,则GydF4y2Ba'重新开始'GydF4y2Ba
选项提供了一种方法来使搜索在图中访问每个节点。在这种情况下,GydF4y2Ba'startnode'GydF4y2Ba
事件指示搜索重新启动时起始节点。GydF4y2Ba
conncompGydF4y2Ba
|GydF4y2Badfsearch.GydF4y2Ba
|GydF4y2BadigGydF4y2Ba
|GydF4y2Ba图形GydF4y2Ba