正在加载图片...
第九章图与网络 算法思路 若P=u.vU是从到的最短路,则P=1…u…v必然为到v的最 短路(若(v吧)≠0,则W(P)<W(P).否则若P"为至v的最短路,W(Pm)<W(P), 则由P”和边叫,构成一条至的长度小于P的路径这与P为至巴的最短路 矛盾.如图917所示,假定1吃路4是防至4的最短路,则物2一定是至吃的最 短路,这是因为,货间如果还有更短的路,如吃,则防购必为至4间的比 234更短的路,这与假设矛盾. 图917 因此得出寻找指定两点间最短路的方法是:由起点出发,逐步比较到附近各点所有可 能路的长短,从而求出从起点到其它各点的最短路线及其长度先给图G的每个顶点记一 个数(称为标号)临时标号(简称T标号)或者固定标号(简称P标号).T标号表示从起点 到这一点的最短路长度的上界,P标号则是从起点到这一点的最短路长.每一步把某个点 的T标号改变为P标号,已得P标号的点不再改变其标号,这样,一且终点得到P标 号算法停止 算法步骤 用表示图中两点与巧之间的距高,若,与吗之间没有连线,令=+,(在 实际计算中,可用任一足够大的数代替).显然可令图中每个顶点:=0. 第一步:给起点标上固定的标号P()=0,并打上“*”号.给其它各点标上临时 标号,如起点到该点有边直接相连,就标T(心)=,否则T()=+∞.在编制计算机程 序时,也可以把其它各点都标上T标号为T)=+,0=2,3,n).并在T标号后面 注明从那一点来 第二步:在所有T标号中选取最小的,将其改为P标号(钉 ),并重新计算 有T标号的其它各点的T标号.计算的方法是:设顶点是刚得到P标号的点.把与顶 点有边直接相连而又属于T标号的各顶点的标号,改为下列T标号: T(vj)=min{T(vj),P(vi)+wij} 第三步:重复第二步,直至所有的顶点得到P标号止.然后从各个顶点反向追踪到起 点,这样就可以找出最短路,从各个顶点的P标号可以看出起点到该点的最短距离 至此,我们求出起点至终点包括中间各个顶点的最短路及其长度. 例4.求图9-15中1至其它各点的最短路长度. 解用Dijkstra算法迭代过程如图9-18所示6 ⑥✌⑦✌⑧⑩⑨✘❶✖❷✘❸ ❹✌❺✌❻✌❼: ❽ P = v1 . . . u . . . vvj ❉✂✞ v1 ✡ vj õ✭✂✮❹ø, ❾ P 0 = v1 . . . u . . . v ✍✂❿✻ v1 ✡ v õ✭ ✮❹ø (❽ w(vvj ) 6= 0, ❾ W(P 0 ) < W(P)). ➀✂❾❽ P 00 ✻ v1 ➁ v õ✭✂✮❹ø,W(P 00) < W(P), ❾ r P 00 ❘✙ vvj ➂✌➃❳✌➄ v1 ➁ vj õ✫✌✬✌➅✌s P õø✌➆, ➇✌➈ P ✻ v1 ➁ vj õ✭✌✮✟ø ➉✌➊. ✁✌✑ 9–17 ✒ ✢ , ➋✌✔ v1v2v3v4 ❉ v1 ➁ v4 õ✭✌✮✟ø, ❾ v1v2v3 ❳✌✔❉ v1 ➁ v3 õ✭ ✮✁ø. ➇ ❉✤➌✤✻ v1,v3 ✥✁✤➍✤➎▲✁û✮ õø, ✁ v1v5v3, ❾ v1v5v3v4 ✍ ✻ v1 ➁ v4 ✥✁õ➐➏ v1v2v3v4 û ✮ õø, ➇✌➈✌➋✝➉✌➊. ✑ 9–17 ➌✌➑②✌❇✌➒✌➓✌➔✌✔✣✌✠✌✥✭✌✮✟øõ✌✯✌✐✌❉: r✘→✌✠❇✌➣, ↔✌↕ ➏✘➙✡✌➛✌➜✗ ✠✒ ▲❄ ➝ø õ✫✂✮, ✞✂➞☞✂❇ ✞✂→✂✠✡✂❊✂❋✗ ✠❹õ✭✂✮✟ø✟÷✂➟❊✫✌✬. ➠✂➡✂✑ G õ✂➢✂❂✂➤✂✠✂➥❳ ❂✌✛ (● ✻✌➦✌➧) ➨✌➩➦✌➧ (➫✌● T ➦✌➧) ✪✌➭✖➯✔ ➦✌➧ (➫✌● P ➦✌➧).T ➦✌➧✌✜✌✢✌✞✌→✌✠ ✡➇✌❳✠✟õ✭✌✮✟ø✌✫✌✬õ✌❀✌➲,P ➦✌➧❾❉✌✞✌→✌✠✡➇✌❳✠✟õ✭✌✮✟ø✌✫. ➢ ❳✌↕✵✌➳❂✌✠ õ T ➦✌➧✌➵✌➸✌✻ P ➦✌➧, ➺✘② P ➦✌➧✟õ✌✠✈✌➻➵✌➸❊ ➦✌➧, ➇✌➼, ❳✌➽✌➾✠ vn ②✡ P ➦ ➧ , ❤✌✐✌➚✌➪. ❹✌❺✌➶✌➹: ❯ wij ✜✂✢✑◆✕✣✂✠ vi ➈ vj ❍ ✥❹õ✦✂✧, ❽ vi ➈ vj ❍ ✥✂➘✂▲✂➴÷, ➷ wij = +∞,(☎ ③✌④✌➬✌❤ ✕, ❄ ❯✌➮❳✌➱✌✃✌❐õ✌✛✌❒✌❮). ❰✌❿✌❄✌➷✌✑✖✕➢✌❂✌➤✌✠ wii = 0. Ï✌Ð✌➶: ➡ →✌✠ v1 ➦✌❀ ➯✔ õ✌➦✌➧ P(v1) = 0, Ñ✌Ò❀ “∗” ➧ . ➡❊✌❋✗ ✠✌➦✌❀➨✌➩ ➦✌➧, ✁→✌✠✡✌Ó✠✌▲✙✌Ô✌Õ✌Ö➴ , × ➦ T(vj ) = w1j , ➀✌❾ T(vj ) = +∞. ☎✌Ø✌Ù➬✌❤✌Ú✌Û Ü➩, Ý✌❄✌❅ ✵✌❊✌❋✗ ✠✌❈✌➦✌❀ T ➦✌➧✌✻ T(vj ) = +∞,(j = 2, 3, . . . , n). Ñ✌☎ T ➦✌➧①✌Þ ß✖à✞✌á❳ ✠✌â. Ï✌ã✌➶: ☎✌✒▲ T ➦✌➧ ✕✘★✌ä✌✭✌➅õ , ✾✌❊➵✌✻ P ➦✌➧ (Ò ❀ “*” ➧ ) , Ñ✌åü✌➬✌❤ ▲ T ➦✌➧✌æ❊✌❋✗ ✠✌æ T ➦✌➧. ➬✌❤✌æ✌✯✌✐✌❉: ✝✌➤✌✠ vi ❉✌ç②✡ P ➦✌➧✌æ✌✠. ✵➈ ➤ ✠ vi ▲✙✌Ô✌Õ✌Ö➴✌➞✱✌è✌s T ➦✌➧✌æ✗ ➤✌✠ vj æ✌➦✌➧, ➵✌✻✌é✌ê T ➦✌➧: T(vj ) = min{T(vj ), P(vi) + wij}. Ï✌ë✌➶: å✌ì✌í✌î✌↕, Ô➁✒ ▲✌æ✌➤✌✠②✡ P ➦✌➧✌➪. ❿✌①✞ ✗ ❂✌➤✌✠✌ï✖▼✘ð✌ñ✡→ ✠ , ➇✌➼✌×✌❄✌❅✌➓✌❇✌✭✌✮✟ø, ✞ ✗ ❂✌➤✌✠✌æ P ➦✌➧❄✌❅✌❆✌❇ →✌✠✡✌Ó✠✌æ✭✌✮✦✌✧. ➁➑ , ò■☞✌❇ →✌✠ v1 ➁➾ ✠ vn ó✌ô ✕✥✗ ❂✌➤✌✠✌æ✭✌✮✟ø✌➟❊✫✌✬. õ 4. ☞✌✑ 9–15 ✕ v1 ➁✌❊✌❋✗ ✠✌æ✭✌✮✟ø✌✫✌✬. ö : ❯ Dijkstra ❤✌✐✌÷✌❒✌ø✌Û✁✌✑ 9–18 ✒ ✢
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有