まず第一に、我々はプリムのアルゴリズム、データ構造についての私達に伝えるためにここにいる、私は最初の大学は、最短経路問題は強制調査区間で伝える、最小スパニングツリーを終えた覚えています。
プリムグローバル最小スパニングツリーアルゴリズムが内部図通信を重み付け検索します。それは貪欲アルゴリズムです。
ここで私はああ盗む二つの絵があります。喜喜喜
アルゴリズム:
図1は、入力:重み付け図通信は、頂点V、エッジの集合Eを設定します。
2次元マトリクスの入力表現(注:通信MAX側のないセットの長さがありません):として
インポートSYS MAX = sys.maxsizeの#無限大に設定
行列は次のように表されます。
primgraph = [MAX、 6、1、5、MAX 、MAX]、 [6、MAX、5、MAX、3、MAX ]、 [1、 5、MAX、5、6、4 ]、 [5、MAX、 5、MAX、MAX、2 ]、 [MAX、3、6、 MAX、MAX、6 ]、 [ MAX、MAX、4、2、6、MAX] ] chararray = [ ' A '、' B '、' C ' ' D ' ' E ' ' F" ]
初期値:最小スパニングツリー--lowcostの総コストは、スパニングツリーのストレージノードの最小の配列を開きます
charlist.append(chararray [0]) #の最初の最初のノードのストア 低コスト= [] lowcost.append( -1) #第1の記憶ノードは、0に設定されている
SUMは、最小スパニングツリー重量の合計重量であります
低コストを指して、残りの間の初期化初期化を追加します。
用 I における範囲(1 、N): lowcost.append(primgraph [0] [i])と
彼は勝利の端に暫定的に開始しました
次の反復を開始します
用 _ 中範囲(1、N-): #1 点以外トラバースノード 分= MAXの #PERが比較のために最小エッジ、分を見つける minid 0 = 位最下位ノードインデックスを格納するために使用minidあたり ため J での範囲(1、N-。): #は、最低重量接合を見つけ、そして!= -1皇帝のお気に入りでない IF!低コスト[J] = -1 そして低コスト[J] < :分 分 = 低コスト[J] minid = Jの charlist.append(chararray [minid]) #1 を加え最短経路を最小全域そのノード SUM = SUM +分 #総重量プラス最短重量内の残りのノードの重量 低コストは[minid] -1 = #ちょうど式を越えて、最短経路を愛用されたノードの ための J における範囲(1、N-): #最も重要なの更新リストお気に入りパーツ!!!! IF!低コスト[J] = -1 と低コスト[J]> primgraph [minid] [J]: #すべてのノードがすでにひいきには、ノードの最短経路を見つけることがあり、更新からひいき [低コスト[J] = primgraphミニ