[概要]グラフ理論アルゴリズム - 予選

[概要]グラフ理論アルゴリズム - 予選

 

隣接行列は、 2次元アレイは、このようなエッジとして、図に関連する情報に表されていると[I]は[j]はiとノードj(及び重量)ノードとの間の関係-を表すグラフが密に示す、およびしばしばより適切に隣接するノードの特定の対が隣接行列を使用するかどうかを判断します

隣接リスト:ストレージ構造、グラフの各頂点のための単一のリストを確立し、ノード(無向グラフ)に隣接する全てのノードの単一のリストに格納されているi番目のまたはすべてのノードにViは尾のありますアーク点ノード(有向グラフ)及びその関連情報- 存在する場合、アプリケーションと少ないときに、2つの特定のノードの隣接ノードの動作を横切る多数の決定された関係、隣接リストのより適切な選択です

データ構造表現隣接リスト:ベクトル

1. 構造の定義エッジを表すために使用されるエッジに隣接するノードとの重み、を含みます。

構造体のエッジ
{ 
    INT NEXTNODE; // 次のノードIDの
    INTのコスト; // 重量の右側 
};

2. 各ノードのための単一のリストの確立は、隣接する重みとノードのエッジの情報を格納します。サイズNのアレイを確立し、記憶素子が目標ベクトル、エッジ[i]はiが確立されている単一の連結リストノードを表しています。

ベクター<エッジ>エッジ[N]。

3.単一のリストの初期化、ベクトル::クリア()これらの単鎖消去の操作を使用して

int型私は= 0 ; Iは、Nを<Iは++)// すべてのノードを横断
{ 
    エッジ[I] .clear(); // その空の単鎖 
}

4. グラフにエッジを追加し、対応するノードにエッジオブジェクトのリンクされたリストに追加されます。

TMPエッジ; //は構造エッジ準備 
tmp.nextNodeを= 3 ; // 次のノード番号が付けられている3 
tmp.cost = 38であり ; // 38のエッジ重み値である 
エッジ[ 1。 .push_back(TMP)]。// 単一のリスト内のノードを変更して追加

5. クエリのすべての隣接ノード情報、ベクトルのトラバース

以下のためにint型 I = 0 ; I <エッジ[ 2 ] .sizeを、Iは++)// エッジ[2]トラバーサルのために、即ちトラバースすべてのノード2と隣接する辺
{
     INT NEXTNODE =エッジ[ 2 ] [I ] .nextNode; // 読み取り隣接ノード
    INTのコスト=エッジ[ 2 ] [I] .cost; //は、エッジ重み値を読み取ります 
}

6. 側面のいくつかの単一のリストを削除するには、情報、削除する(vector.begin)+最後の要素、ベクトル::消去、すなわちvector.erase(vector.begin()を呼び出し+最初の要素番号を削除したいときそのようなノードのエッジの単一のリストを削除など+ 1の数は、[1]〜[I]情報側に対応する場合、

エッジ[ 1 ] .erase(エッジ[ 1 ] .begin()+ I、エッジ[ 1 ] .begin()+ 1 + 1)。

おすすめ

転載: www.cnblogs.com/yun-an/p/11085019.html