スコープ:図にはありません。
プリムのアルゴリズム(読者のように読み取ることができる「プリム法」)木問題を最小全域を解決するために、
基本的な考え方は次のとおりです。
図は、頂点が訪問されている保存、S・セットG(VE)を設定し、
・各選択した後、最小の最短距離はVSの集合から頂点(uと表される)、収集及びS.へのアクセスSセット
連頂点U UおよびVの集合Sから到達可能な全ての頂点間の最小距離間の中間点に
集合Sはすでにすべての頂点を含むようになるまでこの操作は(nは頂点の数である)を行うのn倍です。見つけることができる、考えおよび最短パスアルゴリズムプリムはダイクストラ法が最短距離に言及する場合を除いて、ほぼ同じであると考え集合 S の代わりに、ダイクストラ点出発アルゴリズム秒。
1 INT プリム() 2 。3 { // 初期点0としてデフォルトでは、関数は、右側及び最小スパニングツリーを返す 4。 5。 fi11(D、D + MAXV、INF); // 配列全体dに割り当てfi11機能INE(注意のmemset) 6。 7。 D [ 0 ] = 0 ; //は唯一0秒に設定し、頂点距離は、Infの残りの0である 8。 9。 INT ANS = 0 ; //は、スパニングツリーの最小の右側を格納および 10 。11 用(INT I = 0、I <N; I ++ ) 12である 13れる { // ループをn回 14 15 INT U = -。1、MIN = Infの; // UそのDので、[U]最小値、MIN最小記憶D [U] 16 。17 用(INT J = 0 ; J <N-; J ++ ) 18である 19。 { // 未訪問の頂点を見つけます。 D []に最小 20は、 21である IF(VIS [J] == falseに && D [J] < MIN) 22は 23であり 、{ 24 25 U = J; 26である 27 MIN = ; D [J] 28 29 } 30 31である } 32 33 //Dは、以下の頂点の残りの部分よりも[U] Infを見つけることができないとsの集合連通していない 34である 35 IF(U == - 1 ) 36 37 [ リターン - 1 ; 38である 39 VIS [U] = trueに ; // タグU訪問として 40 41である ANS = D + [U]; //はツリースパニング最小添加しながら、最小の距離Sを設定する 42ことである 43である ため(int型 V = 0 ; V <N-; V ++ ) 44は 45 { // V未訪問&& && UはVにuがセットが近いSから調停点Vを行うことができる達する 46である 47 IF(VIS [V] == falseに && G [U] [V]!= Infの&& G [U] [V] <D [V]) 48 49 D [V] = G [U] [V]; // G [U] [V]をDに割り当てられている[V] 50 51である } 52である 53である } 54は、 55 の戻り ANS; // 戻り値右の最小スパニングツリーの側、及び 56は、 57れています }