dijkstra(迪傑斯特拉)
演算法是典型的單源最短路徑演算法,理解dijkstra(迪傑斯特拉)
演算法是很必要的,對以後的成長很有幫助,特左此文以作筆記,方便複習。
演算法描述:
基本思想:設g(u,v)是加權圖,將g上的點分為兩組,第一組為集合s(初始只有乙個點,即源點,其他點陸續按路徑由到長及相鄰關係往裡加入),第二組為其餘未確定最短路徑的頂點集合(用u表示,按最短路徑長度的遞增次序依次把第二組的頂點加入s中,,直到u為空,則演算法結束)。在加入的過程中,總保持從源點v到s中各頂點的最短路徑長度不大於從源點v到u中任何頂點的最短路徑長度。
例子:
步驟集合s
集合u1
演算法開始,選入u0
u1-u7
2比較u0到u1-u7的距離,
u0->u1=2
u0->u2=1
u0->u3=8
u0->u4=00(00表示無窮,下同)
u0->u5=00
u0->u6=00
u0->u7=00
選入u2,s=(u0,u2),
路徑:u0->u2
u0選擇路徑: u0->u2
u1,u3-u7
3比較u0,u0->u2到u1-u9的距離,
u0->u1=2
u0->u3=8
u0->u4=00
u0->u5=00
u0->u6=00
u0->u7=00
u0->u2->u3=8
u0->u2->u4=00
u0->u2->u5=00
u0->u2->u6=10
u0->u2->u7=00
選入u1,s=(u0,u1,u2),
路徑:u0->u1
u0->u2
u0選擇路徑: u0->u1
u3-u7
4比較u0、u0->u1、u0->u2到集合u的各點之間的距離,
u0->u3=8
u0->u4=00
u0->u5=00
u0->u6=00
u0->u7=00
u0->u1->u3=10
u0->u1->u4=3
u0->u1->u5=00
u0->u1->u6=00
u0->u1->u7=00
u0->u2->u3=8
u0->u2->u4=00
u0->u2->u5=00
u0->u2->u6=10
u0->u2->u7=00
選入u4,s=(u0,u1,u2,u4)
路徑:u0->u1->u4
u0->u1
u0->u2
選擇路徑:u0->u1->u4
u5-u7、u3
5比較u0、u0->u1、u0->u2、u0->u1->u4到集合u的各點之間的距離,
u0->u1=2
u0->u3=8
u0->u4=00
u0->u5=00
u0->u6=00
u0->u7=00
u0->u1->u3=8
u0->u1->u5=00
u0->u1->u6=00
u0->u1->u7=00
u0->u1->u4->u5=6
u0->u1->u4->u6=00
u0->u1->u4->u7=12
u0->u2->u3=8
u0->u2->u4=00
u0->u2->u5=00
u0->u2->u6=11
u0->u2->u7=00
選入u5,s=(u0,u1,u2,u4,u5)
路徑:u0->u1->u4->u5
u0->u1->u4
u0->u2
u0->u1
u0選擇路徑:u0->u1->u4->u5
u6-u7、u3
6比較u0、u0->u1、u0->u2、u0->u1->u4、u0->u1->u4->u5到集合u的各點之間的距離,
u0->u3=8
u0->u6=00
u0->u7=00
u0->u1->u3=8
u0->u1->u5=00
u0->u1->u6=00
u0->u1->u7=00
u0->u1->u4->u6=00
u0->u1->u4->u7=12
u0->u1->u4->u5->u6=7
u0->u1->u4->u5->u7=9
u0->u2->u3=7
u0->u2->u6=9
u0->u2->u7=00
選入u6,s=(u0,u1,u2,u4,u5,u6)
路徑:u0->u1->u4->u5->u6
u0->u1->u4->u5
u0->u1->u4
u0->u2
選擇路徑:u0->u1->u4->u5->u6
u7、u3
7比較u0、u0->u1、u0->u2、u0->u1->u4、u0->u1->u4->u5、u0->u1->u4->u5->u6到集合u的各點之間的距離,
u0->u3=8
u0->u7=00
u0->u1->u3=8
u0->u1->u7=00
u0->u1->u4->u3=8
u0->u1->u4->u7=12
u0->u1->u4->u5->u3=7
u0->u1->u4->u5->u7=12
u0->u1->u4->u5->u6->u3=12
u0->u1->u4->u5->u6->u7=13
u0->u2->u3=7
u0->u2->u7=00
選入u3,s=(u0,u1,u2,u4,u5,u6,u3)
路徑: u0->u1->u4->u5->u6
u0->u1->u4->u5->u3
u0->u1->u4->u5
u0->u1->u4
u0->u2->u3
u0->u2
u0選擇路徑: u0->u1->u4->u5->u3
u0->u2->u3u78
比較u0->u1->u4->u5->u6、
u0->u1->u4->u5->u3、
u0->u1->u4->u5、
u0->u1->u4
u0->u2->u3
u0->u2
u0到集合u的各點之間的距離,
u0->u7=00
u0->u2->u7=00
u0->u2->u3->u7=00
u0->u1->u4->u7=12
u0->u1->u4->u5->u7=12
u0->u1->u4->u5->u3->u7=00
u0->u1->u4->u5->u6->u7=13
選入u7,s=(u0,u1,u2,u4,u5,u6,u3 ,u7)
路徑: u0->u1->u4->u5->u6->u7
u0->u1->u4->u5->u3->u7
u0->u1->u4->u5->u7
u0->u1->u4->u7
u0->u2->u3->u7
u0->u2->u7
u0->u7
u0選擇路徑: u0->u1->u4->u7
u0->u1->u4->u5->u7
空(演算法結束)
選出最短路徑:u0->u1->u4->u7、u0->u1->u4->u5->u7
以上就是我理解的dijkstra(迪傑斯特拉)
演算法的動態過程。(有錯誤之處,請指正)
對迪傑斯特拉演算法的理解
計算圖中某個頂點到其他頂點的最短路徑,邊的權值不能為負數 數學上的證明 扣鼎之歌的回答 清晰地證明了dist j min 貪心演算法的最優子結構性質 整體最優必定區域性最優,但並不是所有區域性最優解都被整體最優解包含 根據上述資料可以了解到,每當確定了乙個頂點 初始頂點也算在內 的最短路徑,並對所有...
迪傑斯特拉演算法
if object id t test is not null drop table t test gocreate table dbo t test id int identity 1,1 not null primary key,自增字段,無意義 header varchar 500 第一點的名...
迪傑斯特拉演算法
dijkstra 迪傑斯特拉 演算法是典型的最短路徑路由演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法 能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。dijkstra演算法是很有代表性的最短...