Dijkstra算法——标号法 为了算法的简便,将图改为完全图,令虛设的弧的长度 为 T(0)—一第j个点的临时标号 P()——第j个点的永久标号,表示1→j的最短路长。 基本思想:从起点S沿一切可能的弧派遣使者,这些使者 均以相同的速度匀速前进,最早有使者到达的顶点作上记号 (临时标号),记下历经的路的长度,然后从这点沿所有可能的 孤再派出使者,这些使者与原来尚未到达顶点的使者一起以相 同速度匀速前进,,重复以上过程,直到有人到达终点为 教学建模
ä. ÚÊ. á´¯K9Ù{ 6¯K9Ù{ Dijkstra {——IÒ{ {{B§òãUã§-JlÝ ∞. T(j)——1 j :IÒ P(j)——1 j :[ÈIÒ§L« 1 → j á´" Ägµlå: S ÷Ule¦ö§ù ¦ö þ±ÓÝ!c?§ @k¦öº:þPÒ £IÒ¤§Pe{²´Ý§,lù:÷¤kU l2Ѧö§ ù ¦ö5ÿº:¦öå± ÓÝ!c?§. . .§E±þL§§k<ª: " IEÆ êÆï
算法步骤: 教学建模
ä. ÚÊ. á´¯K9Ù{ 6¯K9Ù{ {Ú½µ Step 1µ- P(1) = T(1) = 0, T(j) = ∞, j = 2, 3, . . . , N Step 2µO T(j) = min{T(j), P(1) + b1j}, j = 2, 3, . . . , N XJ(: j IÒu) Cz§Ò- P RIOR(j) = 1" Step 3µ3¤kIÒ¥§ÑIÒ£ekõ §?Ù¤§U[È5IÒ§ =e k ´IÒ (:§K- P(k) = T(k)" eÃIÒ:½ k = N§K= Step 5¶ÄK§= Step 4" IEÆ êÆï
算法步骤 step1:令P(1)=T(1)=0,T(j)=∞,j=2,3,,N 教学建模
ä. ÚÊ. á´¯K9Ù{ 6¯K9Ù{ {Ú½µ Step 1µ- P(1) = T(1) = 0, T(j) = ∞, j = 2, 3, . . . , N Step 2µO T(j) = min{T(j), P(1) + b1j}, j = 2, 3, . . . , N XJ(: j IÒu) Cz§Ò- P RIOR(j) = 1" Step 3µ3¤kIÒ¥§ÑIÒ£ekõ §?Ù¤§U[È5IÒ§ =e k ´IÒ (:§K- P(k) = T(k)" eÃIÒ:½ k = N§K= Step 5¶ÄK§= Step 4" IEÆ êÆï
算法步骤 step1:令P(1)=T(1)=0,T(j)=∞,j=2,3,,N step2:计算T()=min{T(j),P(1)+b1} j=2,3 如果结点j的临时标号发生了变化,就令 PRIOR(j)=1。 教学建模
ä. ÚÊ. á´¯K9Ù{ 6¯K9Ù{ {Ú½µ Step 1µ- P(1) = T(1) = 0, T(j) = ∞, j = 2, 3, . . . , N Step 2µO T(j) = min{T(j), P(1) + b1j}, j = 2, 3, . . . , N XJ(: j IÒu) Cz§Ò- P RIOR(j) = 1" Step 3µ3¤kIÒ¥§ÑIÒ£ekõ §?Ù¤§U[È5IÒ§ =e k ´IÒ (:§K- P(k) = T(k)" eÃIÒ:½ k = N§K= Step 5¶ÄK§= Step 4" IEÆ êÆï
算法步骤 step1:令P(1)=T(1)=0,T(j)=∞,j=2,3,,N step2:计算T()=min{T(j),P(1)+b1} 如果结点j的临时标号发生了变化,就令 PRIOR(j)=1。 step3:在所有临时标号中,取出最小的一个标号(若有多 个,任取其一),改为永久性标号,即若k是临时标号最小的 个结点,则令P(k)=T(k)。 若无临时标号点或k=N,则转Step5;否则,转Step4
ä. ÚÊ. á´¯K9Ù{ 6¯K9Ù{ {Ú½µ Step 1µ- P(1) = T(1) = 0, T(j) = ∞, j = 2, 3, . . . , N Step 2µO T(j) = min{T(j), P(1) + b1j}, j = 2, 3, . . . , N XJ(: j IÒu) Cz§Ò- P RIOR(j) = 1" Step 3µ3¤kIÒ¥§ÑIÒ£ekõ §?Ù¤§U[È5IÒ§ =e k ´IÒ (:§K- P(k) = T(k)" eÃIÒ:½ k = N§K= Step 5¶ÄK§= Step 4" IEÆ êÆï