トラバースグラフ - 図

幅優先トラバーサル(BFS)

  • プロセス分析
    • キューを初期化します。チームの後に訪問頂点、Aチームの頂点、。同時アクセス頂点B、Fおよびエンキュー隣接する頂点
    • アクセスノードB、ノードBは隣接ノードBと同時にデキュー、頂点C、I、Gエンキュー訪問されていません

    • アクセスノードFは、ノードFは、ノードFは、に隣接するが、デキューされ、頂点G、Eエンキュー訪問されていません。同様にした後、キューが空になるまで。結果のシーケンスは、チームトラバーサルシーケンスであります
  • BFSコード
    • 1  BOOLは [MaxVertexNum】訪問;         // アクセス・タグ・アレイ
       2  // 隣接行列幅トラバーサルアルゴリズム
      3。 ボイドBFSTraverse(MGraph G)
       4。 {
       5      キューQ;     // サブキュー
      6      のためのINT I = 0 ;私はGを< vexnum; Iは++ 。7      {
       8。          = [I]訪問falseに// アクセスタグ・アレイの初期化
      9。     }
       10      InitQueue(Q);     //は補助キューを初期化する
      11。     ためINT I = 0; IはG.vexnumを<; Iは++)     // 0から頂点トラバース
      12は         IF!()[I]を訪れ     // BFS一度呼び出さ各連結成分のための
      13である              BFS(G、I);     // V Iは、未訪問オーバーVからIは、開始BFS 
      14  }
       15  
      16  空隙 BFS(MGraph G、int型V)
       17  {
       18は、     // 頂点vから出発して、図最初のトラバーサルG、補助キューによるアルゴリズムQ 
      19。      訪問(V);     // アクセス・ノードv 
      20れる      [V] =訪れ真と ;     // アクセスVマークするために
      21である      エンキュー(Q、V);         // 頂点vキュー
      22は     、一方(!のisEmpty(Q))
       23である     {
       24          デキュー(Q、V);         // 頂点vデキュー
      25          INT W = FirstNeighbor(G、V);> = W 0、W = NextNeighbor(G、V 、W))// すべてv隣接点検出
      26である         {
       27              IF(訪問[W])!     // W vは隣接ノードのために訪問していない
      28              {
       29                  訪問(W);     // 訪問頂点W 
      30                  訪れた= [W] をtrueに ;     // マークwの頂点へのアクセスを作る
      31                 エンキュー(Q、W);         // 頂点Wエンキュー
      32              }
       33          }
       34      }
       35 }

深さ優先探索(DFS)

  • 分析手順:まずVから出発して、Vの各頂点に隣接してアクセスしていないがWを訪問している、図Vに開始頂点にアクセスする。1、次いでWへのアクセス。1アバットメントのいずれかに記載の頂点W訪問されていない2、 ....プロセスを繰り返します。アクセスを継続することができない場合は、図の全ての頂点がこれまでに訪問されるまで、順番に最近アクセス頂点に戻って、それは検索処理上の頂点から始まり、隣接する頂点を訪問されていない場合は続けています。
  • DFSコード
    • 1  / * 深さ優先トラバーサルアルゴリズム* / 
      2  BOOLは [MaxVertexNum】訪問;         // アクセスタグ配列
      3。 ボイドDFSTraverse(MGraph G)
       4。 {
       5。     ためのint型 V = 0 ; V <G.vexnum; ++ V)
       。6          訪問[V] = falseに ;         // タグアレイアクセスを初期化
      7。     ためint型 V = 0 ; V <G.vexnum; V ++)     // 0横断頂点から
      8      {
       9。         IF(訪問[V]!)         // 頂点vも訪問し、アクセスを尋ね
      10              DFS(G、V);
       11      }
       12である }
       13が 
      14  ボイド DFS(MGraph G、int型V)が
       15  {
       16      // 頂点vから開始は、図の再帰的深さ優先トラバーサルを考え
      17。     訪問(V);
       18れる      訪問します[ V] = trueに19      のためにINT W = FirstNeighbor(G、V); W> = 0 ; W = NextNeighbor(G、V、W))// すべてv隣接点検出
      20は         IF!(訪問[W] )
       21は         、{
       22は             DFS(G、W);
       23である         }
       24 }

おすすめ

転載: www.cnblogs.com/KBryant/p/11617232.html