freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于dijkstra的最短路徑搜索算法的優(yōu)化及應(yīng)用—論文(編輯修改稿)

2024-12-13 19:54 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 為距離 4+邊 2,4 的長(zhǎng)度 距離 2,所以不更新 ) 醫(yī)院 1 已 標(biāo)號(hào) 距離 0 醫(yī)院 2 未標(biāo)號(hào) 距離 ∞ 醫(yī)院 3 已 標(biāo)號(hào) 距離 4 醫(yī)院 4 未標(biāo)號(hào) 距離 9 12 4 5 6 醫(yī)院 1 已 標(biāo)號(hào) 距離 0 醫(yī)院 2 未標(biāo)號(hào) 距離 ∞ 醫(yī)院 3 未標(biāo)號(hào) 距離 4 醫(yī)院 4 未標(biāo)號(hào) 距離 ∞ 12 4 5 6 10 找所 有未標(biāo)號(hào)中距離最短的頂點(diǎn)為 醫(yī)院 2,將 2做標(biāo)號(hào) ,已沒有與 2相鄰的未標(biāo)號(hào)頂點(diǎn)需要更新了 再次找所有未標(biāo)號(hào)中距離最短的頂點(diǎn)已找不到 ,得結(jié)果 d(2)=12,d(3)=4,d(4)=9. Dijkstra算法的優(yōu)缺點(diǎn) Dijkstra 算法能夠保證 100%找到最優(yōu)解,但其搜索速度較慢,搜索效率非常低,時(shí)間花費(fèi)較多,一般只能用于離線的路徑規(guī)劃問題。 如節(jié)點(diǎn)數(shù)為 n的圖,用 Dijkstra算法計(jì)算最短路徑總共需要迭代 n一 1次,每次迭代都新加一個(gè)節(jié)點(diǎn)到臨時(shí)節(jié)點(diǎn)集合中 ,由于第 i次迭代時(shí)不在臨時(shí)節(jié)點(diǎn)集合中的節(jié)醫(yī)院 1 已 標(biāo)號(hào) 距離 0 醫(yī)院 2 已 標(biāo)號(hào) 距離 ∞ 醫(yī)院 3 已 標(biāo)號(hào) 距離 4 醫(yī)院 4 已 標(biāo)號(hào) 距離 9 12 4 5 6 醫(yī)院 1 已 標(biāo)號(hào) 距離 0 醫(yī)院 2 未標(biāo)號(hào) 距離 12 醫(yī)院 3 已 標(biāo)號(hào) 距離 4 醫(yī)院 4 以 標(biāo)號(hào) 距離 9 12 4 5 6 11 點(diǎn) 數(shù)為 ni.即第 i次迭代需對(duì) ni個(gè)節(jié)點(diǎn)進(jìn)行處理,因此其所需的處理數(shù)為11( 1)() 2ninnni?????? ,對(duì) n個(gè)節(jié)點(diǎn)網(wǎng)絡(luò)的時(shí)間復(fù)雜度是 O(n2)。在實(shí)際應(yīng)用當(dāng)中,使用 Dijkstra算法查找最短路徑時(shí)耗費(fèi)大量的時(shí)間進(jìn)行數(shù)據(jù)的比較,本文對(duì) Dijkstra算法進(jìn)行分析,通過改變算法實(shí)現(xiàn)減少不必要節(jié)點(diǎn)計(jì)算的時(shí)間,提高算法的效率達(dá)到對(duì)其進(jìn)行優(yōu)化。 下一個(gè)例子說明 Dijkstra算法存在的缺陷: 例:圖 G(V, E, W),求從 v1出發(fā)到其 它各個(gè)頂點(diǎn)的最短路徑長(zhǎng)度。 圖 權(quán)圖 G 解: wi表示由源 v1到點(diǎn) vi的最短距離; S表示已求出最短路徑的頂點(diǎn)集合,其初始值為 S{v1}; k表示剛選出的頂點(diǎn)的編號(hào);選出 vk后修改 U中各頂點(diǎn)的距離的方法為:wi=min{wi, dki}; 下表通過 Dijkstra算法來求解圖 : v1 初始 第一步 第二步 第三步 … v2 15 9 v3 ∞ ∞ v4 4 v5 ∞ ∞ v6 ∞ 10 v7 ∞ ∞ S={v1} v4 v2 k 12 w S v1,v4 v1,v2,v4 在上表中選出頂點(diǎn) v4加入到 S時(shí)一共進(jìn)行了 6次比較,其中四次是與 ∞作比較,也就是說這四次完全沒有必要進(jìn)行比較。當(dāng)選出 v4后,需要對(duì) U中的各個(gè)頂點(diǎn)的距離進(jìn)行調(diào)整,在調(diào)整過程中利用到 wi =min{wi, w4+d4i}其中 i≠1, 4(1, 4已經(jīng)在 S中 )即需要對(duì) wi和 w4+d4i進(jìn)行比較,但我們?cè)趯?duì) w3,w5,w7進(jìn)行調(diào)整時(shí)可以發(fā)現(xiàn)由于 d43,d45, d47 ? E(G)即它們的權(quán)值為 ∞,所以調(diào)整時(shí)是沒有必要進(jìn)行 比較的,在這里多進(jìn)行了 3次比較。后面的各步也都出現(xiàn)類似的情況 (后略 ),尤其是當(dāng)圖的邊數(shù)相對(duì)較少時(shí)更為明顯。 以 Dijkstra 算法為基礎(chǔ)算法進(jìn)行優(yōu)化的原因 Dijkstra算法與其他主流算法的比較 [5] 搜索速度比較 對(duì) 5張圖分別采用 Dijkstra算法、 A*算法、遺傳算法進(jìn)行路徑規(guī)劃,他們各自花費(fèi)的時(shí)間如表 。 表 三種算法在搜索速度上的對(duì)比 節(jié)點(diǎn)數(shù) 搜索速度 Dijkstra算法 A*算法 遺傳算法 16 1 1 2 32 4 2 4 43 7 3 6 62 15 5 9 78 25 7 12 由表 :當(dāng)?shù)貓D節(jié)點(diǎn)個(gè)數(shù)和弧的條數(shù)比較少時(shí),三種算法所花費(fèi)的時(shí)間差不多,當(dāng)節(jié)點(diǎn)個(gè)數(shù)和弧的條數(shù)比較多時(shí), A*算法最快,遺傳算法其次,Dijkstra算法最慢,而且這種差距將隨節(jié)點(diǎn)和弧數(shù)量的增加而變得更加明顯。對(duì)于實(shí)際地圖而言,由于節(jié)點(diǎn)與道路的數(shù)量一般都很的大, Dijkstra算法在搜索速度方 13 面弱勢(shì)明顯。 搜索成功率比較 對(duì)于具有 n個(gè)節(jié)點(diǎn)的地圖,其待規(guī)劃節(jié)點(diǎn)的個(gè)數(shù)為 n1(除起點(diǎn)節(jié)點(diǎn)外,其他均可作為待規(guī)劃節(jié)點(diǎn)),由于每個(gè)待規(guī)劃節(jié)點(diǎn)對(duì)應(yīng)于一條最短路徑,所以對(duì)每張具有n個(gè)節(jié)點(diǎn)的 地圖而言,應(yīng)該規(guī)劃出 n1條最短路徑。 對(duì) 5張地圖分別采用三種算法進(jìn)行路徑規(guī)劃,三者各自搜索到最短路徑的情況如表 。表中括號(hào)外數(shù)據(jù)為各算法實(shí)際得到最短路徑數(shù),括號(hào)內(nèi)數(shù)據(jù)則為各算法實(shí)際得到路徑數(shù)和應(yīng)該規(guī)劃出的最短路徑數(shù) n1之比。 表 三種算法在搜索質(zhì)量方面的對(duì)比 節(jié)點(diǎn)數(shù) Dijkstra算法 A*算法 遺傳算法 16 15(100%) 12(80%) 15(100%) 32 31(100%) 25(81%) 29(94%) 43 42(100%) 32(76%) 38(90%) 62 61(100%) 40(66%) 56(92%) 78 77(100%) 45(58%) 71(92%) 由表 :當(dāng)?shù)貓D節(jié)點(diǎn)個(gè)數(shù)和弧數(shù)量比較多時(shí), Dijkstra算法是一種遍歷算法,每次能保證 100%搜索到最短路徑,遺傳算法搜索到最短路徑的成功率比Dijkstra算法低一些, A*算法最低,且這種差距在節(jié)點(diǎn)數(shù)和弧數(shù)量越大時(shí)更加明顯。 14 第 3章 Dijkstra優(yōu)化算法研究 多種 Dijkstra 優(yōu)化算法的研究 [6] 第一類優(yōu)化算法 ——減小算法中成功搜索的搜索范圍 減小算法中成功搜索的搜索范圍以盡 快到達(dá)目標(biāo)節(jié)點(diǎn)。在對(duì)現(xiàn)實(shí)問題中的交通圖初始化為網(wǎng)絡(luò)拓?fù)鋱D時(shí),雖然終點(diǎn)已知,而源點(diǎn) 尚未確定,但依據(jù)常識(shí)離案發(fā)地段最近的派出所應(yīng)為案發(fā)地段所在轄區(qū) 派出所,或其周邊派出所,也就是源點(diǎn)的選取范圍可以確定。利用 MapObjects2組件提供 的 (expression)記錄集篩選方法,根據(jù)案發(fā)地段 (終點(diǎn) )的不同,動(dòng)態(tài)選取案發(fā)地段所在轄區(qū)及相鄰轄區(qū)的道路圖層及派出所圖層數(shù)據(jù)進(jìn)行最短路徑查詢,從而有效地減少了拓?fù)鋱D中節(jié)點(diǎn)總數(shù) n的值。 第二類優(yōu)化算法 ——改進(jìn)算法的存儲(chǔ)結(jié)構(gòu) 在實(shí)際工作中,還要建立起空間數(shù)據(jù)結(jié)構(gòu)。網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)使用的是 ―邊和節(jié)點(diǎn) ‖的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是建立在圖論的基礎(chǔ)上,節(jié)點(diǎn)可用來定義邊的連接關(guān)系。對(duì)于網(wǎng)絡(luò)數(shù)據(jù)的存儲(chǔ),傳統(tǒng)的是采用圖論中的鄰接矩陣方法,其存儲(chǔ)量為 N N(N為網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù) )。通常的地理網(wǎng)絡(luò),盡管節(jié)點(diǎn)很多,但與節(jié)點(diǎn)相關(guān)聯(lián)的節(jié)點(diǎn)數(shù)目并不多,一般都為稀疏圖,將會(huì)浪費(fèi)大量的空間。若采用鄰接表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),其存儲(chǔ)量為 E(E為節(jié)點(diǎn)列表中,同節(jié)點(diǎn)關(guān)聯(lián)的所有邊的數(shù)目 ),可節(jié)省大量的存儲(chǔ)空間,尤其是在表示與節(jié)點(diǎn)和邊相關(guān)信息較多的地理網(wǎng)絡(luò)時(shí),更為有效。但鄰接表卻難 以判斷兩節(jié)點(diǎn)之間的關(guān)系,因此本文提出利用。 NET框架提供的特殊類Hashtable。 .NET框架包含特殊類,比如通常所說的集合類用于存儲(chǔ)對(duì)象。與數(shù)組類似,集合類可以把對(duì)象放入容器中,然后再取出.但集合的使用方法與數(shù)組不同,擁有用于插入和刪除項(xiàng)的專用方法。使用 Hashtable最大的優(yōu)點(diǎn)就是大大降低數(shù)據(jù)存儲(chǔ)和查找的時(shí)間花費(fèi),幾乎可看成是常數(shù)時(shí)間。 15 本文對(duì) Dijkstra 優(yōu)化算法的研究 本文采用第一類優(yōu)化算法減小搜索范圍的思路對(duì) Dijkstra算法進(jìn)行優(yōu)化。 優(yōu)化算法的目標(biāo) Dijkstra算法用來求解圖上從任 一節(jié)點(diǎn) (源點(diǎn) )到其余各節(jié)點(diǎn)的最短路徑。其時(shí)間復(fù)雜度為 O(N2);采用鄰接矩陣存儲(chǔ)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),需要 (NN)的存儲(chǔ)空間,隨著節(jié)點(diǎn)數(shù) N的增大,其計(jì)算效率和存儲(chǔ)效率越低。針對(duì)此問題,提出了 Dijkstra算法的改進(jìn),本文在對(duì)傳統(tǒng) Dijkstra算法分析的基礎(chǔ)上,對(duì)其進(jìn)行了優(yōu)化,優(yōu)化算法只對(duì)最短路徑上節(jié)點(diǎn)的鄰居做處理,而不涉及到其他節(jié)點(diǎn)。 優(yōu)化算法思路 Dijkstra算法基本方法:設(shè) wj是從源點(diǎn) s到節(jié)點(diǎn) j的最短路徑長(zhǎng)度; pj是從 s到 j的最短路徑中 j點(diǎn)的前一節(jié)點(diǎn)。 S是標(biāo)識(shí)集合; T是未標(biāo)識(shí)集合; M是節(jié)點(diǎn)集合. dij提節(jié)點(diǎn) i到節(jié)點(diǎn) j的距離 (i與 j直接相連,否則 dij = ∞).算法步驟如下: Step0: S = {s}; T = MS; wj = dij(j∈ T, s與 j直接相連 )或 wj = ∞(j ∈ T, s與 j不直接相連 )。 Step1:在 T中找到節(jié)點(diǎn) i,使 s到 i的距離最小,并將 i劃歸到 S。 (可從與 s直接相連的 j中考慮 ) 若 dsi = min dsj j與 s直接相連,則將 i劃歸到 S中,即 S ={s, i}, T = T{i}; j∈ T pi =s。 Step2:修改 T中 j節(jié)點(diǎn)的 wj值: wj = min(wj,wi + dij);若 wj值改變,則 pj = i. j∈ T i∈ S Step3:選定所有的 wj最小值,并將其劃歸到 S中: wi = min wj; S=S∪ {i}; T=T{i};若 │S│= n, 所有節(jié)點(diǎn)已標(biāo)識(shí),則算法終 j∈ T 止,否則,轉(zhuǎn)人 Step2。 通過分析傳統(tǒng) Dijkstra算法的基本思路,傳統(tǒng) Dijkstra算法存在如下兩點(diǎn)不足: 16 (1)當(dāng)從未標(biāo)記節(jié)點(diǎn)集合 T中選定一個(gè)節(jié)點(diǎn) k作為轉(zhuǎn)接點(diǎn)后時(shí),需掃描未標(biāo)記節(jié)點(diǎn)集合 T中的節(jié)點(diǎn) j并更新其 wj值,而未標(biāo)記節(jié)點(diǎn)集合 T中往往包含 大量與轉(zhuǎn)接節(jié)點(diǎn) k 不直接相連的節(jié)點(diǎn) i(即 dki = ∞); (2)在未標(biāo)記節(jié)點(diǎn)集合 T中選擇一個(gè) w值最小的節(jié)點(diǎn)作為下一個(gè)轉(zhuǎn)接節(jié)點(diǎn),然而下一個(gè)轉(zhuǎn)接節(jié)點(diǎn)往往是與標(biāo)記節(jié)點(diǎn)集合 S中的節(jié)點(diǎn)直接相連的。 優(yōu)化算法描述 基于上述兩點(diǎn)不足,對(duì)傳統(tǒng) Dijkstra算法進(jìn)行優(yōu)化,算法優(yōu)化思路為:首先從源點(diǎn) s的鄰居集合 NBS(與 s直接相連的節(jié)點(diǎn)集合 )中選擇距離最小的鄰居節(jié)點(diǎn) k作為轉(zhuǎn)接點(diǎn),同時(shí)將劃歸到標(biāo)識(shí)集合 S(初始時(shí), S為 {s})。然后對(duì) k鄰居集合與標(biāo)識(shí)集合的差集 (NBk S)中節(jié)點(diǎn)的值進(jìn)行更新,從標(biāo)識(shí)集合 s中所有節(jié)點(diǎn)的鄰居集合 的并集與標(biāo)識(shí)集合的差集 (∪ NBs S, i∈ S)中選擇一個(gè) wk值最小的節(jié)點(diǎn)作為下一個(gè)轉(zhuǎn)接點(diǎn),并劃歸到標(biāo)識(shí)集合 S中。重復(fù)上述過程,直到所有的節(jié)點(diǎn)都被標(biāo)識(shí)過,即 │S│=n,算法結(jié)束。 設(shè) NBi為節(jié)點(diǎn) i的鄰居集合; S為標(biāo)識(shí)集合; wj是從源點(diǎn) s到節(jié)點(diǎn) j的最短路徑長(zhǎng)度; pj是從 s到 j的最短路徑中 j點(diǎn)的前一節(jié)點(diǎn); dij是節(jié)點(diǎn) i到節(jié)點(diǎn) j的距離。算法步驟如下: Step0:初始化 S = {s}; wi = dsi(i∈ NBs);否則 = ∞(I ? NBs); pi=s。 Step1:若 dsk = min dsj ,則 S = S ∪ { k}。 j∈ NBs Step2:修改 NBk S中的 wj值: wj = min { wj,wk +dkj };若 wj值改變,則 pj = k。 j∈ NBs S Step3:選定 NBi S(i∈ S)中的 wj最小值,并將其劃歸到 s中: wk = min wj; S = S ∪ {k};若 │s│= n;所有節(jié)點(diǎn)已標(biāo)識(shí),則算法終止, j∈∪ NBs–S i∈ S 否則,轉(zhuǎn)到 Step2. 圖 G7,對(duì) G7分別用 Dijkstra算法和優(yōu)化了的 Dijkstra算法進(jìn)行求解,則可得從 v1到其余各節(jié)點(diǎn)的最短路徑。 17 圖 非負(fù)權(quán)值圖 經(jīng)典 Dijkstra算法求解過程: Step0:初始化 S = (v1), w1 = 0, T = (v2,v4, v3,v5, v6,v7); Step1: w4 = d14 = mind1j = 2( d12 = d14,任選其一,本文選 v4), S = (v1,v4), T = j∈ T (v2,v3,v5,v6,v7); Step2: T = (v2,v3,v5,v6,v7) w2 = min{w2, w4 + d42}= min{2, 4}= 2, w3 = min{w3, w4 + d43}= min{5,5} = 5 2 = w2, w5 = min{w5, w4 + d45} = {∞, 3} = 3 2 = w2, w6 = min{w6, w4 + d46} = ∞, () w7 = min{w7, w4 + d47} = ∞,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1