宽度第一图搜索GydF4y2Ba
适用GydF4y2Ba广度优先搜索GydF4y2Ba图表GydF4y2BaV.GydF4y2Ba
= bfsearch(GydF4y2BaGGydF4y2Ba
那GydF4y2BaS.GydF4y2Ba
)GydF4y2BaGGydF4y2Ba
开始节点GydF4y2BaS.GydF4y2Ba
. 这个result is a vector of node IDs in order of their discovery.
通过标记一个或多个搜索事件定制广度优先搜索的输出。例如,GydF4y2BaT.GydF4y2Ba
= bfsearch(GydF4y2BaGGydF4y2Ba
那GydF4y2BaS.GydF4y2Ba
那GydF4y2Ba活动GydF4y2Ba
)GydF4y2BaT=bfsearch(G,s,'allevents')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
. 这个edge indices are for unique identification of edges in a multigraph.
[GydF4y2Ba___GydF4y2Ba] = bfsearch(GydF4y2Ba___GydF4y2Ba,'重新开始',GydF4y2Ba
哪里GydF4y2BaTFGydF4y2Ba
)GydF4y2BaTFGydF4y2Ba
是GydF4y2Ba真的GydF4y2Ba
,如果无法从发现的节点访问新节点,则重新启动搜索。您可以在以前的语法中使用任何输入或输出参数组合。此选项可确保宽度优先搜索到达图形中的所有节点和边,即使无法从起始节点到达这些节点和边,GydF4y2BaS.GydF4y2Ba
。GydF4y2Ba
dfsearch.GydF4y2Ba
和GydF4y2Ba搜索GydF4y2Ba
将无向图视为有向图。节点之间的无向边GydF4y2BaS.GydF4y2Ba
和GydF4y2BaT.GydF4y2Ba
被视为两个定向边缘,一个来自GydF4y2BaS.GydF4y2Ba
到GydF4y2BaT.GydF4y2Ba
和一个来自GydF4y2BaT.GydF4y2Ba
到GydF4y2BaS.GydF4y2Ba
。GydF4y2Ba
广度优先搜索算法从起始节点开始,GydF4y2BaS.GydF4y2Ba
,并按其节点索引顺序检查其所有相邻节点。然后,对于每一个邻居,它会按顺序访问其未公开的邻居。算法继续,直到访问从起始节点到达的所有节点都被访问过。GydF4y2Ba
在伪代码,算法可以写为:GydF4y2Ba
Event startnode(S)Event discovernode(S)NodeList={S}当NodeList不为空时C=NodeList{1}从节点C的传出边缘删除边缘E的NodeList中的第一个元素,连接到节点N Event edgetonew(C,E)、EdgeToDiscovery(C,E)或edgetofinished(C),E) (取决于节点N的状态)如果事件是edgetonew event Discornode(N)将N追加到NodeList end event finishnode(C)end的末尾GydF4y2Ba
搜索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