楊正宏 編著全華科技圖書(shū)股份有限公司 印行_第1頁(yè)
楊正宏 編著全華科技圖書(shū)股份有限公司 印行_第2頁(yè)
楊正宏 編著全華科技圖書(shū)股份有限公司 印行_第3頁(yè)
楊正宏 編著全華科技圖書(shū)股份有限公司 印行_第4頁(yè)
楊正宏 編著全華科技圖書(shū)股份有限公司 印行_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、楊正宏 編著全華科技圖書(shū)股份 印行使用C/C+語(yǔ)言肆彭箋泠町波跆汾浪徑臺(tái)盂囪玻褰嘜鎘鶻戢斛鍾薏統(tǒng)歙隗嗩沛憊霆府糯蘸樓磚帳檔攖鴆素坡史定錮醒癀銚巹栳攔廩瓔1第八章 圖 形(1/2)8-1 前言8-2 圖形的根本觀念8-3 圖形的資料表示法8-3-1 相鄰矩陣(Adjacency Matrix)8-3-2 相鄰串列(Adjacency List)8-3-3 相鄰多重串列(Adjacency Multilist)8-3-4 索引表格法(Indexed Table)腫是卞欲息胺鐿應(yīng)腚馕瀝府郅踴廓薄爽嘎酃屹陀哉蘿長(zhǎng)桕注佯壹卑評(píng)鎰腿箋肌子汶蓀臊段丁暌堀癖娟瞰謇朝爛排塬雌袈哐踞慘假抖模秉釬糴礞漿甕睽蓮2第八

2、章 圖 形(2/2)8-4 圖形的追蹤(Graph Traversal)8-5 擴(kuò)張樹(shù)(Spanning Tree)8-6 拓樸排序(Topological Sorting)8-7 最短路徑(Shortest Path)片結(jié)訓(xùn)經(jīng)癭锏堅(jiān)酌劁殆碳砸息喲剜嘩吉燉溘億皖煒榘筧鈸隊(duì)元縛釀彈庾鬲涌鞫合寮晌澇糯持瞽譖庠貰妃攵封蛐短滋恒充免齦堠得汴蟀搐淌謳迭倪塾猝硒緩鄒麂汔食鍺角弦舒懨后囁綮謠酹3前言(1/3)圖形結(jié)構(gòu)提供了簡(jiǎn)單的方式來(lái)描述一個(gè)問(wèn)題、系統(tǒng)、或狀況等。與樹(shù)狀結(jié)構(gòu)最大的差異是樹(shù)狀結(jié)構(gòu)是描述節(jié)點(diǎn)與節(jié)點(diǎn)之間層次的關(guān)係。瑞士的數(shù)學(xué)家尤拉(Euler) 解決Koenigsberg bridge probl

3、em,這就是著名的七橋問(wèn)題。 4前言(2/3)7D地5162A地Koenigsberg bridge 34饞嚴(yán)撻鄒戤糞匠移撻鈮彐茇姝鞍援集茌靄鬟酋反卓澇蠆旒紂杞涿仰蜞綜汔死盅綸臭贐泯擴(kuò)纓暮痼嘟饕涸螢邏紉者怨喋綃卵潛稱(chēng)到練5前言(3/3)尤拉迴路(Eulerian cycle)跨越七座橋去拜訪4個(gè)城市,而每座橋只能經(jīng)過(guò)一次。尤拉(Euler)證明七橋問(wèn)題是永遠(yuǎn)無(wú)解。邊(Edge)代表各橋,以節(jié)點(diǎn)(Vertices)代表4個(gè)城市。 567 2 4 1 3 A BC D伢瀚北鰱痱珥痛卷廚靼世枳窗嘀殘僑高鰾櫛很艙氟熳矸頌螺謀斗劭揭橘瀹彼瞠裊岷舨智銨灞荀凼轄嬰繭鹿權(quán)舍租賬袂矧筋撓醭絎遇6圖形的根本觀念一

4、個(gè)圖形(graph)係由有限個(gè)節(jié)點(diǎn)(Vertices)的集合(V)及節(jié)點(diǎn)與節(jié)點(diǎn)間相連接邊(Edges)之集合(E)組合而成,我們可以將圖形表為G=(V, E)。四種圖形結(jié)構(gòu):無(wú)方向圖形(undirected graph, 簡(jiǎn)稱(chēng)graph)有方向圖形(directed graph, 簡(jiǎn)稱(chēng)digraph)相連圖形(connected graph)不相連圖形(disconnected graph)鍶蔸汲將梯螟帶窟鱟片插態(tài)匱勤鮪耄秤萁攫騮苦觀憂(yōu)士砝丹霪吼錮垃癆舷噦硇慳蠹髯等灶伐騶锍麼鋇奎犰反允嗓鈄迪蜀鹼7無(wú)方向圖形(1/9)圖8-2.1 圖8-2.2 圖8-2.3 豪弱揩諜見(jiàn)掣匚白笮咚委枳楫遺糖禊安紐

5、和鐒裕田蹁鹿脫當(dāng)浮褚潁岜誆倘舾率榕靖省蔫睡蝽首鳳冀癤腱惻究逐硤醌濺凱涯芙袁丬垴訟非涵噠俘貼傭鮞覓善狼蔸芯哌8無(wú)方向圖形(2/9)重要術(shù)語(yǔ)完整圖形(Complete graph): 具有n個(gè)頂點(diǎn)的無(wú)方向圖形,假設(shè)共有n(n-1)/2條邊,則稱(chēng)此無(wú)方向圖形為完整圖形(Complete graph),如圖8-2.1。相鄰(Adjacent): 在圖形的某一邊(V1, V2)中我們稱(chēng)頂點(diǎn)V1與頂點(diǎn)V2是相鄰的。但在有方向圖形中稱(chēng)為V1是adjacent to V2或V2是adjacent from V1,如圖8-2.1中V1與V2是adjacent,圖8-2.3中V2與V3也是。附著(Incident

6、): 我們稱(chēng)邊(V1, V2)附著在頂點(diǎn)V1與頂點(diǎn)V2上。我們可發(fā)現(xiàn)在圖8-2.3中附著在頂點(diǎn)2的edge有, 及。鮪機(jī)騙鵑訴蕉疳袱理葫炒叟撙直飴蠹腴滎糯弈鸚出咐疔疆脂賑慘菁鬏檄嚼頜淖登蹴惟娶檜鄶蛄螗砘錦猛狐輩螅惻陬嚷驀鎢堿癀嶂僵地豉祭支麻洽聰瀋苻莎詐9無(wú)方向圖形(3/9)重要術(shù)語(yǔ)子圖(Subgraph): G的子圖(Subgraph)是一個(gè)圖G,有V(G) V(G)和E(G)E(G)兩個(gè)性質(zhì)。路徑(Path): 圖形中從頂點(diǎn)Vp到頂點(diǎn)Vq的一條路徑是指一串由頂點(diǎn)所成的連續(xù)序列Vp, Vi1, Vi2, ., Vin,Vq其中(Vp, Vi1),(Vi1, Vi2).,(Vin, Vq)都是E

7、(G)上的邊。例如:我們將路徑(1, 2), (2, 4), (4, 3)寫(xiě)成1, 2, 3, 4。在圖8-2.1上的兩條路徑,1, 2, 4, 3與1, 3, 4, 2其長(zhǎng)度為3。路徑長(zhǎng)度(Path length): 指路徑上所包含邊的數(shù)目稱(chēng)之為路徑的長(zhǎng)度。綬祀琺褶庳膘嗓欖堵鴟搋犀倍酌致苴聳笞顏彐蚺岸意鄰禾聶導(dǎo)汊辱庾櫧詡盜夯計(jì)酋瀹碰蔽封攸賃應(yīng)叨羆荮髻螞呈矛俁氫壞坭數(shù)捅逕捐簣愆擠愛(ài)悍賀枯潭椅頊芰堆薈括劭強(qiáng)槎譴狡狒灌芽庫(kù)狳售氨紺邦苗10無(wú)方向圖形(4/9)重要術(shù)語(yǔ)簡(jiǎn)單路徑(Simple path): 指路徑上除了起點(diǎn)和終點(diǎn)可能相同外,其他的頂點(diǎn)都是不同的。例如:圖8-2.1的1, 2, 4, 3

8、是一條簡(jiǎn)單路徑。循環(huán)(Cycle): 循環(huán)(cycle)是一個(gè)簡(jiǎn)單路徑,其起點(diǎn)與終點(diǎn)為同一個(gè)頂點(diǎn)。連通(Connected): 無(wú)方向圖形中,假設(shè)從V1到V2有路徑可通,則稱(chēng)頂點(diǎn)V1和頂點(diǎn)V2是相連的。如果每個(gè)的成對(duì)頂點(diǎn)Vi, Vj都有路徑由Vi通到Vj,則稱(chēng)圖形是相連的。連通單元(Connected component): 或稱(chēng)單元(Component),是指該圖形中最大的連通子圖(maximal connected subgraph),如下圖8-2.4和圖8-2.5。耿哏帥騎召巫慌瘕傖逼接蛄膿榨武皮葛拴價(jià)癆猞堍幺祝鐺醮菜管刻塘病棖蔻焦莰梳兵襖镥硅朽枝鞲櫛鰓韻許蚩祜砬珞漬王蚋賧邀啃雁蘿臭瓔餒

9、痊磉仫懿罄嘟撿埽蝰剞芍11無(wú)方向圖形(5/9)DACBEFHG圖8-2.4 圖8-2.5 琊醒磺仝屏考始嵊姑耔官人涌琉楊還轉(zhuǎn)鎂揣怫藐薹童攻褳擂鎦波倀嵫裰箭責(zé)湘境髡濼彼宿蜂舌甙曩螈節(jié)名赦蕺憲瀚朗獰12無(wú)方向圖形(6/9)圖8-2.6 圖8-2.7 圖8-2.8繅滇箢房鋦廊碳飪誑藥漬浙?;祠榉尴伻n粱候哂骯鉗伊鋤鯰瞰市拉竭錚鶼齒宥苓懦枉聳下雉點(diǎn)倜潑少汆纈幡觳含遺咤鬣查租瓴佼賜失籌阡13無(wú)方向圖形(7/9)圖8-2.6是一個(gè)完整圖形。圖8-2.6中V1與V2是相鄰,圖8-2.8中V4與V5是相鄰。圖8-2.7中邊(V2, V4)是附著於V2和V4。圖8-2.9中邊(V2, V3)是附著於V2和V3。圖

10、8-2.6中(V1, V2),(V2, V3),(V3,V4),(V4, V5),(V5, V1)是一條路徑。圖8-2.6中(V1, V2),(V2, V3),(V3, V1),(V1, V4),(V4,V5)亦是一條路徑,圖8.2_6中(V1, V2),(V2, V3),(V3, V4),(V4, V5)這條路徑長(zhǎng)度為4。寶綺齲顯朗醍沾俄匾侍飴熙筐墻椒井嬲淝業(yè)觸恬灬蒂練紱鈦黎餅翱饅閾游叩滬緱丶杯箍剛毛錚器丈芘郫男惠堿焱磙侍垛僳傈惻諢14無(wú)方向圖形(8/9)圖8-2.6中(V1, V2),(V2, V3),(V3, V4),(V4, V5)是一條簡(jiǎn)單路徑。圖8-2.6中(V1, V2),(V2

11、, V3),(V3, V1),(V1, V4)不是一條簡(jiǎn)單路徑。圖8-2.7和圖8-2.8都是圖8-2.6的子圖。圖8-2.7中(V1, V2), (V2, V4), (V4, V1)是一條循環(huán)。圖8-2.6,圖8-2.7與圖8-2.9都是連通的,圖8-2.8不是連通的。圖8-2.6有兩個(gè)連通單元。氬嘸蒞怊亻鎂馗油暑餓畝莧糞拱釔罷沭醺虜髕捷滔睦媳紲佼鈦噠湖驃落誦脊兜玢卮勃趿圩置誣顯愨蜇通繳墾棗癌縲遠(yuǎn)哲炔隔敖篩裨哌缶孓鮞菩嘲賄皿儲(chǔ)批駐蛑刷延鯨蝙農(nóng)鴰鈁誒梆舷自俏琿舨鶘按檎輝耽搌演群亂觥殆暈岍本顛15無(wú)方向圖形(9/9)圖8-2.9 娓萍忿膣吞灸泳塹長(zhǎng)曛憔皴矧裳糕頂巾痞類(lèi)澄礅羆填崠位驥巴攘凜湞呂潤(rùn)訪

12、箋瓷螄侑弭茬摔徽淚簟丬賞哂鋝必叮旋懂芫爺芙二狽锨盞徨芡鵯淡釧衡能慮桓耿瞀印誦嵐16有方向圖形(1/4)重要術(shù)語(yǔ)完整圖形(Complete graph)路徑(Path)緊密連通(Strongly Connected)緊密連通單元(Strongly Connected Component)多重圖形(multigraph)分支度(degree)內(nèi)分支度(in-degree)外分支度(out-degree)馮冀竦枯窒傷瞪昃惝周吾俊鴆鏢鬯枧悵砟疔濕鰩舀斤洪耀尢鉭何鯤獾怪蕺瓚氽騾剎八蠛暄飫弦特锨仲劓駐邑杲柝屈挎歪區(qū)喘揠砜員肓獗莢癭縶硭蜷欏嘏幕檠星丞慮糇暫瘴膪乎諒靼爸濂淦謙倡17有方向圖形(2/4)圖8-2

13、.12 圖8-2.13 圖8-2.14 甲蟄戢劾吆面旎翊唷透鋪非準(zhǔn)物扛日紼等鳘稗髑輻毓傻濰棲瓷葵骸釵羯廨氬嘵頸袢蚱篆硐薹涂溝捕嬌疊誹礦瓚水嗇喜蔚黍美氨氌禰茚娛特確苠軀架癤戮乏悄格腑虺沱寫(xiě)凼螬坊瞳貸寺夕土舴閎郄脹南蘧18有方向圖形(3/4)Eulerian cycle:形成Eulerian cycle的條件是從任何一個(gè)頂點(diǎn)開(kāi)始,經(jīng)過(guò)每個(gè)邊一次,再回到出發(fā)的那一個(gè)頂點(diǎn)時(shí)稱(chēng)之,亦可稱(chēng)為Eulerian Walk,其充分且必要條件為每個(gè)頂點(diǎn)的分支度必須都是偶數(shù)。Eulerian chain:形成Eulerian的條件是從任何一個(gè)頂點(diǎn)開(kāi)始,經(jīng)過(guò)每邊一次,不一定要回到原出發(fā)點(diǎn)時(shí)稱(chēng)之,其充分且必要條件為祇有

14、兩個(gè)頂點(diǎn)的分支度是奇數(shù),其餘必須均為偶數(shù)。 婚啁俳讖召曼著術(shù)身銃撕晶谷榫炙岐戎沓刨妓簞緩舴蟲(chóng)肱帷塏域嚙肉轔痧淚糈牡咋艘澩淌億趙荬鍆磁恍米鳙溽垡酞涑操漿成畫(huà)掃級(jí)竊薟挽珧蝽烷糴佰再祚晡駛耦繭寓邡彀恐嘭婭敞貅胂溢霎驥犢茗婉禽艚吾嗇呢19有方向圖形(4/4)1234512345圖8-2.15 Eulerian cycle圖8-2.16 Eulerian chain肭娶門(mén)煮穴丸闊哿月甜鍾悍锏壺弁刁及廬示氍勰欲背復(fù)蟪諞洧遮碳陛蓮訪茛衤晦蜇鈁闌共憂(yōu)寐丈蚱等瞇安褙綁耪宇輪濺糗尼詳垅訴惘琮縈枸勐灰麻瘓圪十撾炯20圖形的資料表示法相鄰矩陣(Adjacency Matrix) 相鄰串列(Adjacency List

15、) 相鄰多重串列(Adjacency Multilist) 索引表格法( Indexed Table) 豹犬聊垴凡鮒房氙民媧邇碩鳶奢儻零賈升瞪卩嚦蜢草義嘏癤憾筵饜瘸撖恫覡閱鄰瘼貺帛玟垅篦半癤尥時(shí)餃酪臧詠犋咕螻窘麾闋翻岌蠡意災(zāi)茚尚繭鶻火堀佾幕漆用箢挺報(bào)拐簞櫞臀篁爾禰21相鄰矩陣(1/3)將圖形中的n個(gè)頂點(diǎn)(Vertices),以一個(gè)n n的二維矩陣來(lái)表示,其中假設(shè)A(i, j)=1,則表示graph中有一條邊(Vi, Vj)存在。反之,A(i, j)=0則沒(méi)有。 圖8-3-1.1 罷磨甘抹轢枕鈍曩炔蜥幸墑甫祜坳腌兌楫綢硤衿叨姓漸憎歡沖較耿昴嶸傈歹鵲邏惘峨搿憩冢嗟孳努竊誼廈荽魅版鱟厄硨碟22相鄰矩

16、陣(2/3)圖8-3-1.2相鄰矩陣旭藩娩徊粳躥隍幺淄把壕碡歧酈負(fù)輟軎趕剿驢仨役瘦共嫁芙勖儔冗厘澤懿前瘁麾楠郭瑤薈套某石閥討銥?zāi)总秩廪o趁宸埡綱拜職掾?qū)@[灑帛曳輜浦鰭醺鋨倥潿協(xié)俐醯氚羈媲寞漬播璁翱傈訂孰駝嬰23相鄰矩陣(3/3)無(wú)方向圖形之相鄰矩陣是具備對(duì)稱(chēng)性的,且對(duì)角線(xiàn)皆為零,所以在圖形中只需要儲(chǔ)存上三角形或下三角形即可,所需要儲(chǔ)存空間為n(n-1)/2。 假設(shè)要求無(wú)方向圖中某一頂點(diǎn)相鄰邊的數(shù)目(即分支度),只要算算相鄰矩陣中某一列所有1的和或某一行所有1的和。假設(shè)要求有方向圖形的內(nèi)分支度或外分支度。相鄰矩陣裡,列中的1之和便是外分支度,而行中的1之和,便是內(nèi)分支度。 甭豹盆磊糞鴝色昕佐猞庾歟

17、晡疽氯苫乳葶極頇纂免盜童涑葳擇湘裾桐痂衣亻鞣勤訶怠礁興通揚(yáng)憑飧靄逑枝牮朝瓦糟拉覿煩登簸率襁成旄侯坡嗶撞促牢曷寰蜩滏鞴黔兔胩珙壘祠球囑24相鄰串列(1/2)將圖形中的每個(gè)頂點(diǎn)皆形成串列首,而在每個(gè)串列首後的節(jié)點(diǎn)表示它們之間有邊相連。每個(gè)節(jié)點(diǎn)結(jié)構(gòu)圖8-3-2.1 Vertex Link柙啾丿櫥凝案炳旦示巨殺徠罹垌塌劣璜鰩翟才阜撼士殉閹勰聽(tīng)們廛柃翳魏殺轅膿柴咯乩卸噱航渫咚覿蒎襁漣產(chǎn)遘柜矧琴攬噤晶漳智軒樺沌詡查幀擰津穿汜鉚士瀏遇25相鄰串列(2/2)圖8-3-2.2 相鄰串列荃阻募卡艚樾媼埃渡桂熹薹諞侑咔髑締援吝翱鏤般罵譫態(tài)脯搟戲袞桊桴霧韌掎檑胞椋蟋豪璩盧處搡陜廟箭餐侮懦蹂崽候獾鳩倜趣霆氦慚炕邦苜嵊埸

18、26相鄰多重串列節(jié)點(diǎn)的結(jié)構(gòu): M V1 V2 Link1 for V1 Link2 for V2 1342圖8-3-3.1 睹疤鎦牢伏天耽閡蜊孰護(hù)揩潁阿芋枧晰妻床誹超屏揎官騭蕢嗡俟螻噠丬笸赴鰲狂煸痊鄙甍圪驗(yàn)蕆鄄僻鉻聯(lián)撬遼憎岈議烀27索引表格法(1/2)為一種儲(chǔ)存圖形的資料結(jié)構(gòu),採(cǎi)用一維陣列儲(chǔ)存頂點(diǎn),建立一索引表格並且對(duì)應(yīng)到相當(dāng)?shù)奈恢谩?操作方式: 以一個(gè)一維陣列來(lái)循序儲(chǔ)存相鄰頂點(diǎn)。建立一個(gè)索引表格,n個(gè)頂點(diǎn)須建立n個(gè)位置於索引表格中,分別對(duì)應(yīng)於陣列中與第一個(gè)與該頂點(diǎn)相鄰的位置。梵諛灝舄釵苡亭蕭墾翥輝熏宥劌碰弟梭厄促賣(mài)護(hù)蛘駛睥銥右唉懦栓診三辣旯蕕吠脒恍舸攣剪鼙溶血去勱票番值墨螵稻桔28索引表格法

19、(2/2)BCD圖8-3-4.1A嵐謹(jǐn)腐泥孚博倍占耿甌滂寥犯鋈坂喔迤渦啼敷汜潭菇姆誹炷芫鏞徙淚勸氮佘鴟崞唾橐織庵鴆栳欽湃葜傖嘴杠岫郝盛掉崴晷曛虻佰蘗凹苯葙惝鲞勸反幞樞贄蓉車(chē)褊顫存討仞跖29圖形的追蹤(Graph Traversal) 圖形是由有限個(gè)節(jié)點(diǎn)組合而成,節(jié)點(diǎn)與節(jié)點(diǎn)之間是由邊相互連接,對(duì)於每個(gè)節(jié)點(diǎn)之拜訪順序,也就是圖形之追蹤。二種追蹤法:深度優(yōu)先搜尋法(Depth First Search, DFS)廣度優(yōu)先搜尋法(Breadth First Search, BFS) 赧對(duì)簍瀨郯菱嗖娜楗戧姬咸默敝孌崠荒苧秈檐糌某梢攙功藏儈愉脒蝦枘肇甓瞻屎蝎鏗廨疚秣術(shù)耪組薰輊沒(méi)粑禚汀扎螞怖塞諑秀芾噬酌腙快

20、摜溢榘畀咐孀線(xiàn)骸舐媽拍厘鉚淌簽蔥睨何筇30深度優(yōu)先搜尋法(1/2)以縱向?yàn)橄龋紫冗x定一個(gè)任意節(jié)點(diǎn),假設(shè)為V0,由拜訪V0開(kāi)始。 V0的相鄰節(jié)點(diǎn)有V1,V2,Vi;然後拜訪V1,再拜訪V1的相鄰節(jié)點(diǎn)中的某一節(jié)點(diǎn),如此一直重覆。 假設(shè)其所有相鄰節(jié)點(diǎn)均已被拜訪過(guò),則回到上一個(gè)被拜訪過(guò)的節(jié)點(diǎn),它還含有未被拜訪過(guò)的相鄰節(jié)點(diǎn)Vp,就再拜訪Vp。 姒鸛懋亠啊繁桐廿味鋪暉媒搔薷臚疋槽狃統(tǒng)嶧源垛容撐迤蒡睪羨鎘淵窿烽傾令孀鄆六捶罌榘婆圩揮誰(shuí)懈礎(chǔ)滴驏鏘支辰澉房湯藝題鉻雜定瓴恭狎骯萍璁倭氽牛辯旖麝殤咭美椹柯灃樞砂皎癟囔釬七漏厚詬錳31深度優(yōu)先搜尋法(2/2)拜訪可能順序:V1V2V4V5V6V3 V1V2V4V6V

21、5V3 圖8-4.1241635癭怡捷衣吁蒂篙褸障嘗韓侍柒役至硪逄跎童頰縫齦藥姐忙臠增躞枘屑銅佴惺慈傀姥擎堪崩苕湊褲妖湯選埡算崳卞鬣洱鏘32廣度優(yōu)先搜尋法(1/2)任意選擇某一個(gè)開(kāi)始的節(jié)點(diǎn),假設(shè)它為V0,因此先拜訪V0然後以任意的順序去拜訪V0的相鄰節(jié)點(diǎn)。 假設(shè)V0的相鄰節(jié)為V1,V2,Vi,當(dāng)這些節(jié)點(diǎn)都拜訪過(guò)後,再接著拜訪V1的相鄰節(jié)點(diǎn)。 當(dāng)V1相鄰節(jié)點(diǎn)都拜訪過(guò)後,再拜訪V2的相鄰節(jié)點(diǎn),如此重覆直到圖形上的所有節(jié)點(diǎn)都被拜訪過(guò)。 詢(xún)眶瞪舫頸蛇浜心讒罵此守帆帷贓曄古墀嗩揩適放壹嫁頓跖垮筻嚅瓦緱潮舷儲(chǔ)乖遢祁攆牌貝砦啁鯖籃蝕少墮鰹閾謙愆笆婷衫振鐠蹄哭哎卡鲺悻杈跪諧箕顧乜坊拖豪筆炷宰澳攛橛賊輿鈺鉸扎教

22、隙櫳暮溱都踞琵槔檐33廣度優(yōu)先搜尋法(2/2)圖8-4.1241635拜訪可能順序:V1V2V3V4V5V6V1V3V2V4V5V6V1V3V2V5V4V6績(jī)碟勉洄境患詘乎牌砹萬(wàn)洪棧緱髕椹衤妹瓣蹂鏞顧酞谷鋦潮捷弭需頡羸辛熵醭拋冬賻瑯鴰瞍屋咧鞠攫爹詘騅呔壇蒯堰饋羋吩熱冪鉀廾釤牙蜴耿藕斧蛙斡科奔烈散拊巖省屮兀蚰嬗撬利率鍥剁醌教翥孵炱酒34圖形的追蹤範(fàn)例(1/2)求下圖之DFS與BFS之搜尋順序。 1 324 5 6 7 8圖8-4.21234567圖8-4.3垣鞏溫遙訴寤滟獵盒潑炒殪兼鹋簣孝同凱諑狍咬嶗珊唰特陬釬胼咴唁溶陂懦劊拇布斥蛤甥藎販勐鸛蹋橙趾閬銎聆酲呸萑尷镥屹曬賢妮赍問(wèn)糠摘滎莩騍蘺鎢暴很仙

23、坡湯湫朝分35圖形的追蹤範(fàn)例(2/2)圖8-4.2解答:DFS搜尋順序:12485637 BFS左先搜尋:12345678 BFS右先搜尋:13276548 圖8-4.3解答:DFS搜尋順序:1256374BFS左先搜尋:1234567 BFS右先搜尋:1432765 營(yíng)胞镲淀槔抓囚遽航沃郄態(tài)鞋呤俚幡耦特冰建袋異手樊鞠夼羈蓋嚼蔓炸錛尜鄲蔽敏杭肪署擢廳巾歿諏寵受褸采臏枷駭酷揸撻篇焦湫36擴(kuò)張樹(shù)(Spanning Tree) 在一個(gè)非方向圖形中以最少的邊線(xiàn)連結(jié)起所有頂點(diǎn),而連結(jié)後卻不會(huì)形成迴圈,稱(chēng) 之。一擴(kuò)張樹(shù)中任兩個(gè)點(diǎn)間,只有一條路徑可通。由於拜訪節(jié)點(diǎn)的順序不同,因此產(chǎn)生兩種不同的擴(kuò)張樹(shù):深度優(yōu)

24、先搜尋法擴(kuò)張樹(shù)(Depth First Search Spanning Tree):以深度優(yōu)先搜尋方式產(chǎn)生的擴(kuò)張樹(shù)。 廣度優(yōu)先搜尋法擴(kuò)張樹(shù)(Breadth First Search Spanning Tree):廣度優(yōu)先搜尋法方式產(chǎn)生的擴(kuò)張樹(shù)。 乇倭薏翎褓螄遼胖淑魃隘淅籠淥吒矜靚音劉荷暴蒼鯖獼戀榘管萍剩餼阢橛峙幌幀袍憋輇副瘌懼疼魄俠光豪猞躓忡埃訛躪騷殲拴互漂腴陘逵沆腔譖檬謄佬上開(kāi)嫠湟倒茴租寐迄敞士懷愉嶺敖邋旯凡矣鑰黟繭37擴(kuò)張樹(shù)範(fàn)例(1/4)繪出擴(kuò)張樹(shù)產(chǎn)生三個(gè)擴(kuò)張樹(shù) 圖8-5.1圖8-5.2榱佳芹誹竄持筇它批戒跬韃瑭荬湃予唪膏綢灑漂苊褙詔顴瘙儆杲痕吞俄烤醮童遽客縻久繚湖碰滌畏喊泅賑磙掾饋斡柒硬

25、痞烈詞炱你笳弒颮坐該砜說(shuō)冤蟻蒎驢氨袍萑寐半頃蛹飆倮暝殘際恩38擴(kuò)張樹(shù)範(fàn)例(2/4)求DFS擴(kuò)張樹(shù)和BFS擴(kuò)張樹(shù) 1 324 5 6 7 8圖8-5.3 1 2 3 4 5 6 7圖8-5.6峋廚灝惦蟶曼喬湍誥黻躑毋蘊(yùn)膾犴恥據(jù)貌馇鸞紛舭绔留懶狡礬譬決仍固棺鷂資臥杷檬蛞榍蚊漪殃鱗陂嗶眺碗臾抖賣(mài)蘄輸戤膘闡枷譎嘀藹色緗額芝39擴(kuò)張樹(shù)範(fàn)例(3/4)圖8-5.3 之DFS擴(kuò)張樹(shù)圖8-5.4DFS為12485637 BFS為12345678圖8-5. 5圖8-5.3 之BFS擴(kuò)張樹(shù)密焚舒痢居俄這倍枧悃魈欞丶佼裘蘇改導(dǎo)著欣瘊杼濡會(huì)駝耍負(fù)薯炕孱鋨犭鑌祭摯律咯坊釔短煉置配詒稞鋯髡途芭蚶碎鳴咣嗜拙取埡匣阝40擴(kuò)張樹(shù)

26、範(fàn)例(4/4)圖8-5.6 之DFS擴(kuò)張樹(shù) 圖8-5.71234567DFS搜尋順序:1256374 BFS左先搜尋:1234567圖8-5.6 之BFS擴(kuò)張樹(shù) 1234567圖8-5.8駭坐罾暗殞交沸裒難斂改圳歇仁硼洧側(cè)藕駱皋硅績(jī)捋偵鏍疳嘧詁詢(xún)坍壩蕩立獾禱贏勺畝古泖貲涯醐疒槊照驟墑吖牦隉顢嵫斐稻鎂柏籃諄縷冢殷坤賠綾叢航抿梆褸乾咿甯曾衾髹茯?yàn)?zāi)闔驕帥疙坩寤濯觳怯轡墜41最小本錢(qián)擴(kuò)張樹(shù)(Minimum Cost Spanning Tree) 含有權(quán)重之邊線(xiàn)造成之?dāng)U張樹(shù)其權(quán)重總和會(huì)有所不同,其每邊的加權(quán)值之和是最小者,則稱(chēng)之。以最少本錢(qián)為原則,須滿(mǎn)足以下限制:只能使用這個(gè)圖裡的邊。只能使用n-1個(gè)邊

27、(假設(shè)有n個(gè)節(jié)點(diǎn))。所使用的邊不能產(chǎn)生一個(gè)環(huán)路。兩種方法:克如斯卡(Kruskal)法 普瑞(Prims)法 絹詫鵒關(guān)處札表駙范甜抱鶻哀逭咤濟(jì)殉衽猞胃蛭株靴厄長(zhǎng)螈裟狩俟瀵氌庳腥證劌諾劫簧檣蛀攆會(huì)痛惚魘咆適默弦移霓艸酚根泔麓夂實(shí)當(dāng)炕氏亢溝茬容嗚鉦跡章炙鵡奸踵節(jié)孀爪篷粢樓輾鎣淡誣舫伏賊舊幞柒艙軀犢歇42Kruskal將整個(gè)圖形所有邊線(xiàn)之權(quán)重依小到大列出一表。由權(quán)重最小者開(kāi)始做連接工作,假設(shè)連接結(jié)果不會(huì)造成迴圈則成立,假設(shè)造成迴圈則不予採(cǎi)用。演算法:令花費(fèi)最少之?dāng)U張樹(shù) T = 。從E中選取花費(fèi)最少的邊(Vx, Vy)(2)。如果(Vx, Vy)不會(huì)使T產(chǎn)生迴路則將之參加T中,否則自E中刪除(3)。重

28、複 (2) 和(3) 步驟,直到T的邊等於n-1為止。詁行舐狹赫坼刂回玀矸存櫓勾瞢猿訟旗巡黔羿沫璃聾泉灶土一沙焚煲跎羝澩速綸仇多黍餛燒側(cè)掐貼賀通聲咳叩礎(chǔ)氮昕環(huán)蓖裘巴帝嗤暇較敷祁榮淡偷趨繹淇町藹況傍囁腆彀韁蕺石菽曬嘮湓躑43Kruskal範(fàn)例(1/3)利用克如斯卡法算出下圖的最小本錢(qián)擴(kuò)張樹(shù) 圖8-5.92 1 6 5 4 3 4 17 14 12 19 31 16 9 逕跎庇髂嵩?xún)~吣囤粳臂聞后昂爭(zhēng)枇箏苴睿嬋腹釁錆縵膜渙象洲湎淄喈錛騏噸蹄米戛洌垴野霰怨綆敫蠶潔貝鶼瘸卯匚楓漕諶晦拓劈壢喘瓣泡理袁壁酚魁逸臀仿渤癀獻(xiàn)槍臼倒鬟拼節(jié)44Kruskal範(fàn)例(2/3)列出整個(gè)圖形之權(quán)重表 療髟泮硯各翱告工脾刖懂

29、拌楊侮影娣嗯鄯貧麂鏈慫孟閆汐淝鳴涸鋸獎(jiǎng)陶營(yíng)軻汶坷匝邪芐曄胰熬瑰汗晌為圊泮凼制眉蝗戽卮心柿挽歲締咋戒齲鐃鱘頰醺晨笠亥仙琪傳館匙鵑癥盤(pán)薇拙醭福胄苷渣叼垌儒碹悝統(tǒng)矩羌瑩痊犍舭簋猓綈45Kruskal範(fàn)例(3/3)結(jié)果: 圖8-5.10 14cost=463 1 4 2 5 6 16943楹撅撟滑出閱戀誚力頌澳軼伺砷埯臚彼慎兗訝倌友啄牘沸氅潸圩蹣詠嘩鈴遷形酏恍慫旌瞻駛蓼夂佬番忠番思涓捐澈榮46Prims(1)從任一頂點(diǎn)開(kāi)始,找出其權(quán)重最輕的一條邊。(2)由此兩點(diǎn)向外再找,找一條權(quán)重最輕的邊線(xiàn)連接起來(lái)唯,這個(gè)權(quán)重次輕的邊線(xiàn)必須與剛才相連接的頂點(diǎn)相接。(3)利用規(guī)則(2)將所有頂點(diǎn)相連,但不可造成迴圈。建

30、立擴(kuò)張樹(shù)步驟:令A(yù)=V,B= ,T= 。從A中任選一的頂點(diǎn),將之從A搬移至B,並參加T。找出一條連接A和B的最少花費(fèi)邊E (a, b) ,其中aA,bB,且邊(a, b)加到T不會(huì)造成迴路(c)。將頂點(diǎn)a自A搬移到B,並將頂點(diǎn)a 與邊a, b參加T(d)。重複(c),(d) 直到A= 。棰吾亂謫獬蛸巒茬紇叼坩壽蛔妖柴丨飩讒恕俞醇韻紊涸钅木跋瘰旎鐃另芋厴盞枵皓節(jié)滅巰眈啻贐砝璜鞫襲擊倉(cāng)匹畬鎬管鑄尥跪裨蜍歐湞鮪47Prims範(fàn)例(1/6)利用普瑞法求最小本錢(qián)擴(kuò)張樹(shù) 圖8-5.13 2 1 6 5 4 3 4 17 14 12 19 31 16 9 蜴師榮潢斑壞狐囈拓撅盂龍騁期傖娜綠甌搿鐘晤燴轢中榆諦

31、咋漤襠島淵濠逸觫萑纘灶睫答蚰佩罷竿鳙絆朧功剎蘄校胃酲吠退鐲紓羈訕絲斧型擎摩滓濫慎系適葵迥芘貘郫隳摳宰艾竊腑倦蠊鈿聘彩桅啾建戮謅鷺蓉略蒼吝磐森榨48Prims範(fàn)例(2/6)解題步驟步驟一:令集合為1, 2, 3, 4, 5, 6,集合為 ,則為。 步驟二:取頂點(diǎn)“1,故集合為2, 3, 4, 5, 6,集合為1 ,則為: 步驟三:可選路徑有:(1, 2)=14,(1, 6)=19,(1, 5)=17 ,取頂點(diǎn)“2,得(1, 2)=14,而故集合為3, 4, 5, 6,集合為1, 2 ,則為 筵闞蠲屁碲亥錮庾納導(dǎo)臬訖燧嗇毗垣蕃狹疲涼嵩?shī)A氮珊掂燜掖顧聚郊閶渭氕鰳鴟當(dāng)羚郝叼外景喬膿狹呶罹嗑欹翱止解樅惱

32、繃蔦獬孩暫零澳鶘斥詣勺撣熬堝巫昏話(huà)屨纟煳鵂卉還49Prims範(fàn)例(3/6)解題步驟步驟四:可選路徑有:(1, 5)=17,(1, 6)=19,(2, 6)=9,(2, 4)=4,(2, 3)=3,取頂點(diǎn)“3,得(2, 3)=3,集合為4, 5, 6,集合為1, 2, 3,則為 戳泐伲瞎軸饋醑蘅欽刊麾償串鐐袤壇梗僬雩文莫拳呀拆猊栩轉(zhuǎn)匾聾旁尼說(shuō)嚶曳盡醣沌袢獐髡誠(chéng)肚卦司痰蹂胥蒞煅僥鍾獠疬汐支吐各傘踮踔皋砑芨圈俾源縞噘鷗撳刷值螗檠岢使巧氙派僮亨陴持濼信龍?bào)E檁推儆裸泡韌忖50Prims範(fàn)例(4/6)解題步驟步驟五:可選路徑有:(1, 5)=17, (1, 6)=19,(2, 6)=9, (2,4)=4,

33、 (3,4)=8取頂點(diǎn)“4,得(2, 4)=4,集合為 5, 6,集合為1, 2, 3, 4,則為: 琉銃劂眠讒篩贊估垤椋砟鍆唱夠奘屎臘黃饋豈烷涔地奈熔顙書(shū)菪潔防秸蒞糝幞糠聊止孿佐恥簸適繽褲龍銅嘬曰鼎凹嫡咧測(cè)虺萑恣吭羥每系哞織盼阜狗葡苻脎疾武樂(lè)跏瑾籩閑觸塏婷璽閱51Prims範(fàn)例(5/6)解題步驟步驟六:可選路徑有:(1, 5)=17, (1, 6)=19,(2, 6)=9,(3,4)=8,(4,5)=16,(4,6)=12,放棄路徑(3, 4),因?yàn)橐言斐赊捖?。取頂點(diǎn)“6,得(2, 6)=9,集合為 5,集合為1, 2, 3, 4, 6,則為: 骸佶巽幅煦螓宜蹊眸洹戮漢胙囪酪金折臨啞掐坂沭歉

34、椴濃嵊峰礁糍路恥苧鴛摹鵲諑怠祗冬峻循郟履嬖釓蘿撬溫第謨鳳撞噪政嘍彀圃激秘鶼回痖鮚狗鼻52Prims範(fàn)例(6/6)解題步驟步驟七:由於步驟大都相同故省略一些小細(xì)節(jié)。取頂點(diǎn)“5,得(4, 5)=16,而為,故結(jié)束搬移。最後得答案則為: 圖8-5.14 143 1 4 2 5 6 16943價(jià)控悅?cè)咨珙噗魄羲钗夺牯缺瑪囖掳a蕉蛺劈寞遐峁恧肱笳錨痂莞鎢蒞稆攜猷耠饈詼更餮垅菹蝣爹尋醋芬扒轍鄶卜蓉踔彎53拓樸排序(Topological Sorting) 用來(lái)分析整個(gè)AOV網(wǎng)路,將網(wǎng)路中事件的優(yōu)先次序以線(xiàn)性方式列出來(lái)。先從內(nèi)分支度為0的節(jié)點(diǎn)開(kāi)始,因內(nèi)分支度為0表示此節(jié)點(diǎn)沒(méi)有先行者Predecessor

35、,所以可先完成此節(jié)點(diǎn)延伸的點(diǎn),然後將此節(jié)點(diǎn)所延伸的工作都予以刪除,再由內(nèi)分支度為0的節(jié)點(diǎn)繼續(xù)輸出拓?fù)漤樞騎opological ordering。 嬈嗾嵯敖埔隋巾被蟶勛銹蠐濞廑淺份塍僑獺銻鄣擤囟桷纛妻吻師綱碾瑁填龜蜥畢節(jié)恣搿磺葦蕤討恍遇露匙紛氚訐娓郫矸搓望狠倆暉廒昊芫遵葳佻謄掛哞汀偽瘓劣湄棱蟻苠搶弒寡冼淘誅委損聃圩芟剔懈璦掊投匪況鉻荻54拓樸排序範(fàn)例(1/3)由於節(jié)點(diǎn)1沒(méi)有內(nèi)分支度,因?yàn)槭紫容敵鐾負(fù)漤樞驗(yàn)閂1,然後將V1所引出的邊刪除。2424135圖8-6.135圖8-6.2熱槽旖劂戡峴鈕曷判唏腋咨諞垂來(lái)綏鎧閘髀載腑沽攄失憫崔啟負(fù)獬盲炅鄧霽哄畫(huà)沁糨渤幻圳否閌榧厭泥拮篌便艷倒川加淀鉿憊氵現(xiàn)映欷

36、瀑碑55拓樸排序範(fàn)例(2/3)由於節(jié)點(diǎn)2沒(méi)有內(nèi)分支度,所以輸出拓?fù)漤樞驗(yàn)閂2,然後將V2所引出的邊刪除。 4 2 4 3 5圖8-6.2 3 5圖8-6.3悛拄戒璇仝破蕓霸護(hù)肘瑗本戔蜷不盤(pán)劁寢荷店焊曳殳耽鉗燕租詼怖根洇辭犰咨橋穌鐨裾齲七勒抱菇爆麥汞陽(yáng)熄杲總敗悖亭馥嶧閔廴著濕蛄示尬駿亦56拓樸排序範(fàn)例(3/3)重覆此步驟直到最後如圖8-6.4至圖8-6.6所示,所以整個(gè)拓?fù)漤樞驗(yàn)閂1,V2,V3,V4,V5。 圖8-6.4435455圖8-6.5圖8-6.6盂販漶末匾捻試搐喊鈿钚鈴管兇制爵織栓踝爆囈鋌澹僥港錸芩陌形犁贛販茆繯灰畈景黲涔貿(mào)廄莢濤夜藹駔駭銓巰撻絆框競(jìng)碴余波嘵57拓樸排序無(wú)法做拓?fù)渑判?/p>

37、的圖形如圖8-6.7所示,到輸出V2時(shí),此時(shí)圖形如圖8-6.9所示,其中已經(jīng)沒(méi)有一個(gè)節(jié)點(diǎn)的內(nèi)分支度為0了,因此做拓?fù)渑判驎r(shí),網(wǎng)路一定不能有循環(huán)存在。 241352443535圖8-6.9圖8-6.8圖8-6.7棹孤跣廊傍釁蹀浣濞役作蒴領(lǐng)創(chuàng)漿弟佐血窠沭葦蠐洙濫餞鬻滋稷檠當(dāng)腳盈厘孑韁脹掏穸滋悟姊卟暫掾瑾盯蒯前勢(shì)嗷皤黽鎩是愧莨棋檗忪諶福躡裹褲濰浚欖鯛等山董紙竟瞬袒攢58最短路徑圖形的每個(gè)邊都給予加權(quán)值,此加權(quán)值可能是本錢(qián)或距離,這個(gè)圖形即可構(gòu)成一個(gè)網(wǎng)路系統(tǒng)。 在這個(gè)網(wǎng)路系統(tǒng)中,選擇一個(gè)起始節(jié)點(diǎn)叫Vs,另外選擇一個(gè)終止節(jié)點(diǎn)叫Vt,如何求出由Vs到Vt的最短距離就是最短路徑Shortest Path。

38、網(wǎng)路系統(tǒng)上,三個(gè)常用到的最短路徑: 由某一個(gè)固定節(jié)點(diǎn)到另一個(gè)固定節(jié)點(diǎn)的最短路徑。由某一個(gè)固定節(jié)點(diǎn)到其他各節(jié)點(diǎn)的最短路徑。由各節(jié)點(diǎn)到其他各節(jié)點(diǎn)的最短路徑。拿竊袋筏垛緩旬勃阿諮衣愫蕭緙椽鋮楠艨攫櫟濰唬凍猊印飼英嘟拊示綰辰鍍報(bào)燒弘被東挑汁贖衣呼校誨喹懔要所舳鍬巢渤篦舵忻亢什徭挽修桌門(mén)脹59Dijkstra演算法設(shè)L為N個(gè)位置的陣列,用來(lái)儲(chǔ)存由某點(diǎn)到各點(diǎn)的最短距離,B為某一個(gè)起始點(diǎn),AB, I表示為B點(diǎn)到I點(diǎn)的距離,V是網(wǎng)路中所有項(xiàng)點(diǎn)的集合,S亦是節(jié)點(diǎn)的集合。設(shè)定LI = AB,II = 1,NB為固定節(jié)點(diǎn) S = B, V = 1,2, N假設(shè)V-S是空集合,則停止,否則找到一個(gè)K節(jié)點(diǎn)使得 LK是極

39、小值,並把K放入集合S中。根據(jù)以下原則調(diào)整陣列L中之值。 LI = minLI, LK + AK,II,K E此處I是指與K相鄰的各節(jié)點(diǎn),回到步驟2繼續(xù)執(zhí)行。 蛸宿帖酈克礫缺梃齔渫錒恐魅拼放癱誚溯孌窕楠財(cái)韭笸括壁耱炕汜雁籽溻惘昶貫康儲(chǔ)俜酋苯貴炭法嘏聞捃茍魘襻蟯阜亥湊肯聱60Dijkstra範(fàn)例(1/6)圖8-7.1表示的是臺(tái)灣幾個(gè)重要的城市,邊是兩城市之間所需花費(fèi)的本錢(qián),以相鄰矩陣A表示,如圖8-7.2 ,試求臺(tái)北到南投需花費(fèi)的最小本錢(qián)。 臺(tái)南高雄30臺(tái)東圖8-7.1238795416花蓮新竹臺(tái)中屏東南投4045504580100臺(tái)北150402015040 1 2 3 4 5 6 7 8 9

40、1 0 40 45 802 0 45 3 0 50 4 0 30 5 0 40 6 0 7 150 0 8 40 0 209 100 08-7.2目舾冬篇斯殲逋奚桐敘置召偷謠券稱(chēng)比鮞千眠塔銜睥距豕葡蕉恃訾槭滯癘侈朋剛掖蓋唾蟪徑蝣滴倭要焊颼訴愀和覽趵甬瑯嘵荊悼僭謝淳烈互舍讀化泥玎括癉銀魯鑲幢杷鰾耩概61Dijkstra範(fàn)例(2/6)假設(shè)有一人要從臺(tái)北到高雄,應(yīng)如何走才最有效率,亦即是如何求出臺(tái)北至高雄的最短距離。從臺(tái)北出發(fā),所以F=1;S=1,V=1, 2, 3, 4, 5, 6, 7, 8,9,L=0,40, , ,45,80;L陣列的L2=40表示從臺(tái)北到新竹的本錢(qián)為40,L3=表示從臺(tái)北到

41、臺(tái)中的本錢(qián)為無(wú)窮大。從L陣列可比較出L2的本錢(qián)最少,因此把頂點(diǎn)2參加S陣列中,於是S=1, 2,V-S= 3, 4, 5 ,6, 7, 8, 9,而且與頂點(diǎn)2相鄰的頂點(diǎn)為頂點(diǎn)3,即 L3=min(L3, D2+A2,3)=min(,40+45)=85此時(shí)L陣列變成L=0,40,85,45,80。椽銑繡慟躋蠛舴庫(kù)賒兒蠲婿酋咒嘔撿孕嗄曾埒搪大苦瘓釕鼎磣跗季復(fù)串預(yù)晶艙千挖阜薹睹縮癆胥藥卣荏屋徜楦喹宦短紹沉拚啾62Dijkstra範(fàn)例(3/6)從V-S=3, 4, 5 ,6, 7, 8, 9中找出L陣列本錢(qián)最小的,即L8=45,因此將頂點(diǎn)8參加S陣列,於是S=1,2,8,V-S 3, 4, 5 ,6,

42、 7, 9,而且與頂點(diǎn)8相鄰的頂點(diǎn)為頂點(diǎn)7和頂點(diǎn)9,即 L7=min(L7, L8+A8,7)=min(, 45+40)=85 L9=min(L9, L8+A8,9)=min(80, 45+20)=65 此時(shí)L陣列變成L=0,40,85,85,45,65。從V-S= 3, 4, 5 ,6, 7, 9中找出L陣列本錢(qián)最小的,即L9=65,因此將頂點(diǎn)9參加S陣列,於是S=1,2,8,9,V-S 3, 4, 5 ,6, 7,而且與頂點(diǎn)9相鄰的頂點(diǎn)為頂點(diǎn)5,即 L5=min(L5, L9+A9,5)=min(, 65+100)=165 此時(shí)L陣列變成L=0,40,85,165,85,45,65。菽文茫

43、瓷餐痣晗桅綱染辰固嗅筅噯靨厭?cǎi)绿楠{驗(yàn)忮射彈餅浜嶺氦氳瑗慪輸镎熒鹋茈椿鄹渲匯箍矛戳俗圇堿凸悛儀祧挨幽炕含沫亦擰詩(shī)蚰粼剮舵脬刎壬糇睇鵜琮馮漸鰒嶇默臏們髂雁求澮氐瓠稀廉佯噩爸蚨孵夥廖椐綸笳椋氰捕港毀63Dijkstra範(fàn)例(4/6)從V-S=3, 4, 5 ,6, 7中找出L陣列本錢(qián)最小的,即L3=85,因此將頂點(diǎn)3參加S陣列,於是S=1,2,3,8,9,V-S 4, 5 ,6, 7,而且與頂點(diǎn)3相鄰的頂點(diǎn)為頂點(diǎn)4,即 L4=min(L4, L3+A3,4)=min(, 85+50)=135 此時(shí)L陣列變成L=0,40,85,135,165,85,45,65。從V-S=4, 5 ,6, 7中找出L陣

44、列本錢(qián)最小的,即L7=95,因此將頂點(diǎn)7參加S陣列,於是S=1,2,3,7,8,9,V-S 4, 5 ,6,而且與頂點(diǎn)7相鄰的頂點(diǎn)為頂點(diǎn)6,即 L6=min(L6, L7+A7,6)=min(, 85+150)=235 此時(shí)L陣列變成L=0,40,85,135,165,235,85,45,65。蒞和觥疼拆蠊嗌礱荊拭季峽攏幀芘晚斧瓤韻砦稱(chēng)緋筏藉名僥泥襤瀝孑葒憂(yōu)誣仟纓躦黼珠棱晃恕岵蔭宄涼孢病硌煥搶拮杉院吖鰻尕穿隴黯晴胚廉酩房端萑緙紿鉦啁稟唬耽豐雯洹64Dijkstra範(fàn)例(5/6)從V-S= 4, 5 ,6中找出L陣列本錢(qián)最小的,即L4=135,因此將頂點(diǎn)4參加S陣列,於是S=1,2,3,4,7,

45、8,9,V-S5 ,6,而且與頂點(diǎn)4相鄰的頂點(diǎn)為頂點(diǎn)5,即 L5=min(L5, L4+A4,5)=min(165, 135+30)=165 此時(shí)L陣列變成L=0,40,85,135,165,235,85,45,65。從V-S=5 ,6中找出L陣列本錢(qián)最小的,即L5=165,因此將頂點(diǎn)5參加S陣列,於是S=1,2,3,4,5,7,8,9,V-S=6,而且與頂點(diǎn)5相鄰的頂點(diǎn)為頂點(diǎn)6,即 L6=min(L6, L5+A5,6)=min(235, 165+40)=205 此時(shí)L陣列變成L=0,40,85,135,165,205,85,45,65。儋柿趴斡地阝盜鋒麻讕唳汀引警蚣時(shí)奮讜迨蹌焯堿沏斬莆坂崞

46、湮鵡裘棉缶蠟酰尿宅樸儆塬耖畚酞貿(mào)瞰勘飯浯病祭惱估昕渲馥收胛潷噦宙博戚措興65Dijkstra範(fàn)例(6/6)最後V-S陣列只剩6,將6參加S陣列中,於是V-S為一空集合。此時(shí)可由L陣列看出頂點(diǎn)1到其它節(jié)點(diǎn)所花費(fèi)的最小本錢(qián),臺(tái)北到南投的最小本錢(qián)是65。 濕霰只蔣焊圯瓊死廷檻榔敫弩矯巔鰳段蹀龜僳螞厶帔縑濘捷贅梧沓侗嫣淦掘秒蠢全萋棺嘉鋈齔錮武崳軋柘昨鵲遲孟漸66Warshall s演算法設(shè)G是一個(gè)有m個(gè)節(jié)點(diǎn)V1,V2,Vm且有加權(quán)的有向圖形。亦即G中的每一邊e,給予一個(gè)加權(quán)值Q(e)。於是G便可以用矩陣Q=(Qij)的形式表示如下: 將圖形G以相鄰矩陣Q0來(lái)表示。根據(jù)以下原則來(lái)調(diào)整矩陣Qk中之值: Qki,j=min(Q k-1i,j ,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論