。gydF4y2Ba
グラフの幅优先検索gydF4y2Ba
は,gydF4y2Ba幅优先検索gydF4y2BaをグラフgydF4y2BavgydF4y2Ba
= bfsearch (gydF4y2BaGgydF4y2Ba
,gydF4y2Ba年代gydF4y2Ba
)gydF4y2BaGgydF4y2Ba
にノードgydF4y2Ba年代gydF4y2Ba
结果は,検出顺のノードノードなるベクトルです。gydF4y2Ba
は1つ以上の検索イベントにフラグを設定して,幅優先検索の出力をカスタマイズします。たとえば,gydF4y2BaTgydF4y2Ba
= bfsearch (gydF4y2BaGgydF4y2Ba
,gydF4y2Ba年代gydF4y2Ba
,gydF4y2Ba活动gydF4y2Ba
)gydF4y2Bat = bfsearch(g,s,'andvents')gydF4y2Ba
はフラグが設定されたすべてのイベントを含むテーブルを返し,gydF4y2BaX = bfsearch (G s edgetonew)gydF4y2Ba
はエッジの行列细胞配列を返します。gydF4y2Ba
さらに,gydF4y2Ba[gydF4y2Ba
は,gydF4y2BaTgydF4y2Ba
,gydF4y2BaEgydF4y2Ba
) = bfsearch (gydF4y2BaGgydF4y2Ba
,gydF4y2Ba年代gydF4y2Ba
,gydF4y2Ba活动gydF4y2Ba
)gydF4y2Ba活动gydF4y2Ba
がgydF4y2Ba'EdgetOnew'gydF4y2Ba
、gydF4y2Ba“edgetodiscovered”gydF4y2Ba
,またはgydF4y2Ba“edgetofinished”gydF4y2Ba
に設定されている場合に,エッジインデックスgydF4y2BaEgydF4y2Ba
エッジベクトルを返し。エッジインデックスは,多重重でエッジをに识别します。gydF4y2Ba
[gydF4y2Ba___gydF4y2Ba) = bfsearch (gydF4y2Ba___gydF4y2Ba“重启”,gydF4y2Ba
で,gydF4y2BaTF.gydF4y2Ba
)gydF4y2BaTF.gydF4y2Ba
がgydF4y2Ba真正的gydF4y2Ba
のの合,検出したノードから到到な新闻ノードないないにに検索をししますますにある任意のこののまたはまたは出あるののわせわせが使使使このわせわせがが使ますますわせがががますますこのわせがががますますますわせがががますますわせがががますますますわせがががますますがによりがによりますますがによりがががますますますががががますますががによりがががががこのgydF4y2Ba年代gydF4y2Ba
からは到達できないノードやエッジがある場合でも,幅優先検索でグラフ内のすべてのノードおよびエッジに確実に到達します。gydF4y2Ba
dfsearchgydF4y2Ba
およびgydF4y2BaBFSearch.gydF4y2Ba
は有向グラフと無向グラフを同様に扱います。ノードgydF4y2Ba年代gydF4y2Ba
とノードgydF4y2BatgydF4y2Ba
の间の无向エッジは,gydF4y2Ba年代gydF4y2Ba
からgydF4y2BatgydF4y2Ba
へと,gydF4y2BatgydF4y2Ba
からgydF4y2Ba年代gydF4y2Ba
への双方向エッジと同様ににれます。gydF4y2Ba
幅优先検索アルゴリズムは开放ノードgydF4y2Ba年代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 |
---|---|
“discovernode”gydF4y2Ba |
新しいノードが検出されました。gydF4y2Ba |
'fightnode'gydF4y2Ba |
ノードから出るすべてのエッジが訪問されました。gydF4y2Ba |
'startnode'gydF4y2Ba |
このフラグは検索の开口ノードを示します。gydF4y2Ba |
'EdgetOnew'gydF4y2Ba |
エッジは未検出のノードに連結しています。gydF4y2Ba |
“edgetodiscovered”gydF4y2Ba |
エッジは以前以前検出ししノードに连结ししていいgydF4y2Ba |
“edgetofinished”gydF4y2Ba |
エッジは終了ノードに連結しています。gydF4y2Ba |
详细は,gydF4y2Ba活动gydF4y2Ba
のの力量引の明をを参照てください。gydF4y2Ba
メモgydF4y2Ba
開始ノードから到達できないノードが入力グラフに含まれている場合,gydF4y2Ba'重新开始'gydF4y2Ba
このによりにより検索検索でグラフ内各ノードを访问できできこのこの合书,gydF4y2Ba'startnode'gydF4y2Ba
イベントは検索が再开されるたびに开放ノードを示し。gydF4y2Ba
conncompgydF4y2Ba
|gydF4y2BadfsearchgydF4y2Ba
|gydF4y2Ba有向图gydF4y2Ba
|gydF4y2Ba图gydF4y2Ba