プリムのアルゴリズム - 最小スパニングツリー

まず第一に、我々はプリムのアルゴリズム、データ構造についての私達に伝えるためにここにいる、私は最初の大学は、最短経路問題は強制調査区間で伝える、最小スパニングツリーを終えた覚えています。

プリムグローバル最小スパニングツリーアルゴリズムが内部図通信を重み付け検索します。それは貪欲アルゴリズムです。

ここで私はああ盗む二つの絵があります。喜喜喜

 

アルゴリズム:

図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ミニ

おすすめ

転載: www.cnblogs.com/Victoria-happy/p/10992666.html
おすすめ