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

正文內(nèi)容

最短路徑算法的研究畢業(yè)設(shè)計(jì)-資料下載頁(yè)

2024-11-16 18:54本頁(yè)面

【導(dǎo)讀】管理問題、工程問題及實(shí)際生活問題中的應(yīng)用,為企業(yè)和個(gè)人提供方便的選擇方法。同時(shí),也為其他的同學(xué)提供一些解題的思路與方法,為他們提供有利的資源。用蟻群算法來解決浙江旅行商問題。為初始條件,通過MATLAB程序計(jì)算最短路徑,并畫出最短路線圖。

  

【正文】 ) { if (G[i][j] == 0) 23 G[i][j] = MAX。// 沒有路徑的兩個(gè)點(diǎn)之間的路徑為默認(rèn)最大 if (i == j) G[i][j] = 0。// 本身的路徑長(zhǎng)度為 0 } for (int i = 0。 i row。 i++) // 初始化為任意兩點(diǎn)之間沒有路徑 for (int j = 0。 j row。 j++) spot[i][j] = 1。 for (int i = 0。 i row。 i++) // 假設(shè)任意兩點(diǎn)之間的沒有路徑 onePath[i] = 1。 for (int v = 0。 v row。 ++v) for (int w = 0。 w row。 ++w) length[v][w] = G[v][w]。 for (int u = 0。 u row。 ++u) for (int v = 0。 v row。 ++v) for (int w = 0。 w row。 ++w) if (length[v][w] length[v][u] + length[u][w]) { length[v][w] = length[v][u] + length[u][w]。// 如果存在更短路徑則取更短路徑 spot[v][w] = u。// 把經(jīng)過的點(diǎn)加入 } for (int i = 0。 i row。 i++) { // 求出所有的路徑 int[] point = new int[1]。 for (int j = 0。 j row。 j++) { point[0] = 0。 onePath[point[0]++] = i。 outputPath(spot, i, j, onePath, point)。 path[i][j] = new int[point[0]]。 for (int s = 0。 s point[0]。 s++) path[i][j][s] = onePath[s]。 } } } void outputPath(int[][] spot, int i, int j, int[] onePath, int[] point) {// 輸出 i // 到 j 24 // 的路徑的實(shí)際代碼, point[]記錄一條路徑的長(zhǎng)度 if (i == j) return。 if (spot[i][j] == 1) onePath[point[0]++] = j。 // ( +j+ )。 else { outputPath(spot, i, spot[i][j], onePath, point)。 outputPath(spot, spot[i][j], j, onePath, point)。 } } public static void main(String[] args) { int data[][] = { { 0, 27, 44, 17, 11, 27, 42, 0, 0, 0, 20, 25, 21, 21, 18, 27, 0 },// x1 { 27, 0, 31, 27, 49, 0, 0, 0, 0, 0, 0, 0, 52, 21, 41, 0, 0 },// 1 { 44, 31, 0, 19, 0, 27, 32, 0, 0, 0, 47, 0, 0, 0, 32, 0, 0 },// 2 { 17, 27, 19, 0, 14, 0, 0, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0 },// 3 { 11, 49, 0, 14, 0, 13, 20, 0, 0, 28, 15, 0, 0, 0, 15, 25, 30 },// 4 { 27, 0, 27, 0, 13, 0, 9, 21, 0, 26, 26, 0, 0, 0, 28, 29, 0 },// 5 { 42, 0, 32, 0, 20, 9, 0, 13, 0, 32, 0, 0, 0, 0, 0, 33, 0 },// 6 { 0, 0, 0, 0, 0, 21, 13, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0 },// 7 { 0, 0, 0, 0, 0, 0, 0, 19, 0, 11, 20, 0, 0, 0, 0, 33, 21 },// 8 { 0, 0, 0, 0, 28, 26, 32, 0, 11, 0, 10, 20, 0, 0, 29, 14, 13 },// 9 { 20, 0, 47, 30, 15, 26, 0, 0, 20, 10, 0, 18, 0, 0, 14, 9, 20 },// 10 { 25, 0, 0, 0, 0, 0, 0, 0, 0, 20, 18, 0, 23, 0, 0, 14, 0 },// 11 { 21, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 27, 22, 0, 0 },// 25 12 { 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0 },// 13 { 18, 41, 32, 31, 15, 28, 0, 0, 0, 29, 14, 0, 22, 0, 0, 11, 0 },// 14 { 27, 0, 0, 0, 25, 29, 33, 0, 33, 14, 9, 14, 0, 0, 11, 0, 9 },// 15 { 0, 0, 0, 0, 30, 0, 0, 0, 21, 13, 20, 0, 0, 0, 0, 9, 0 } // 16 }。 for (int i = 0。 i 。 i++) for (int j = i。 j 。 j++) if (data[i][j] != data[j][i]) return。 FLOYD test=new FLOYD(data)。 for (int i = 0。 i 。 i++) for (int j = i。 j data[i].length。 j++) { ()。 (From + i + to + j + path is: )。 for (int k = 0。 k [i][j].length。 k++) ([i][j][k] + )。 ()。 (From + i + to + j + length : + [i][j])。 } } } 26 第 3 章 最短路徑 算法的比較 最短路徑 問題是圖論研究中的一個(gè)經(jīng)典算法問題,旨在尋找圖(由結(jié)點(diǎn)和路徑組成的)中兩結(jié)點(diǎn)之間的最短路徑。 算法具體的形式包括: 確定起點(diǎn)的最短路徑問題:即已知起始結(jié)點(diǎn),求最短路徑的問題。 確定終點(diǎn)的最短路徑問題:與確定起點(diǎn)的問題相反,該問題是已知終結(jié)結(jié)點(diǎn),求最短路徑的問題。在無向圖中該問題與確定起點(diǎn)的問題完全等同,在有向圖中該問題等同于把所有路徑方向反轉(zhuǎn)的確定起點(diǎn)的問題。 確定起點(diǎn)終點(diǎn)的最短路徑問題:即已知起點(diǎn)和終點(diǎn),求兩結(jié)點(diǎn)之間的最短路徑。 全局最短路徑問題:求圖中所有的最短路徑。 Floyd 求多源、無負(fù)權(quán)邊的最短路。用矩陣記錄圖。時(shí)效性較差,時(shí)間復(fù)雜度O(V^3)。 FloydWarshall 算法( FloydWarshall algorithm)是解決任意兩點(diǎn)間的最短路徑的一種算法,可以正確處理有向圖或負(fù)權(quán)的最短路徑問題。 FloydWarshall 算法的時(shí)間復(fù)雜度為 O(N^3),空間復(fù)雜度為 O(N^2)。 FloydWarshall 的原理是動(dòng)態(tài)規(guī)劃: 設(shè) Di,j,k 為從 i 到 j的只以 (1..k)集合中的節(jié)點(diǎn)為中間節(jié)點(diǎn)的最短路徑的長(zhǎng)度。 若最短路徑經(jīng)過點(diǎn) k,則 Di,j,k = Di,k,k1 + Dk,j,k1; 若最短路徑不經(jīng)過點(diǎn) k,則 Di,j,k = Di,j,k1。 因此, Di,j,k = min(Di,k,k1 + Dk,j,k1 , Di,j,k1)。 在實(shí)際算法中,為了節(jié)約空間,可以直接在原來空間上進(jìn)行迭代,這樣空間可降至二維。 FloydWarshall 算法的描述如下: for k ← 1 to n do for i ← 1 to n do for j ← 1 to n do if (Di,k + Dk,j Di,j) then 27 Di,j ← Di,k + Dk,j。 其中 Di,j 表示由點(diǎn) i到點(diǎn) j的代價(jià),當(dāng) Di,j 為 ∞ 表示兩點(diǎn)之間沒有任何連接。 Dijkstra 求單源、無負(fù)權(quán)的最短路。時(shí)效性較好,時(shí)間復(fù)雜度為 O( V*V+E)。 源點(diǎn)可達(dá)的話, O( V*lgV+E*lgV) =O( E*lgV)。 當(dāng)是稀疏圖的情況時(shí),此時(shí) E=V*V/lgV,所以算法的時(shí)間復(fù)雜度可為 O( V^2) 。若是斐波那契堆作優(yōu)先隊(duì)列的話,算法時(shí)間復(fù)雜度,則為 O( V*lgV + E)。 BellmanFord 求單源最短路,可以判斷有無負(fù)權(quán)回路(若有,則不存在最短路),時(shí)效 性較好,時(shí)間復(fù)雜度 O( VE)。 BellmanFord 算法是求解單源最短路徑問題的一種算法。 單源點(diǎn)的最短路徑問題是指:給定一個(gè)加權(quán)有向圖 G和源點(diǎn) s,對(duì)于圖 G中的任意一點(diǎn) v,求從 s 到 v 的最短路徑。 與 Dijkstra 算法不同的是,在 BellmanFord 算法中,邊的權(quán)值可以為負(fù)數(shù)。設(shè)想從我們可以從圖中找到一個(gè)環(huán)路(即從 v出發(fā),經(jīng)過若干個(gè)點(diǎn)之后又回到 v)且這個(gè)環(huán)路中所有邊的權(quán)值之和為負(fù)。那么通過這個(gè)環(huán)路,環(huán)路中任意兩點(diǎn)的最短路徑就可以無窮小下去。如果不處理這個(gè)負(fù)環(huán)路,程序就會(huì)永遠(yuǎn)運(yùn)行下去。 而BellmanFord 算法具有分辨這種負(fù)環(huán)路的能力。 28 第 4 章 最短路徑算法的應(yīng)用 TSP 問題的介紹 TSP 問題,即 旅行商問題,是一種典型的組合最優(yōu)化問題 ,可描述為某旅行商欲往 n 個(gè)城市推銷貨物,從某個(gè)城市出發(fā),沿途經(jīng)過各個(gè)城市一次后返回出發(fā)城市,要確定一條行走的路線, 計(jì)算途徑 n個(gè)城市的最短距離, 即給定n個(gè)城市和兩兩城市之間的距離,確定一條經(jīng)過每個(gè)城市并且僅經(jīng)過一次的路線,要求總路徑最短。 TSP 分為 2類,即對(duì)稱 TSP 和不對(duì)稱 TSP。 對(duì)于城市數(shù)目為 n的地圖 , 共有 n 種不同的路徑。城市越多 ,可能的路徑也越多。而且路徑的增加速度非??烨沂欠蔷€形的。當(dāng) n 很大時(shí) , 去嘗試每一種可能的路徑是不可能的 , 所以需要設(shè)計(jì)一個(gè)有效的算法去尋找最短的路徑。 TSP 問題算法的介紹 貪心算法 貪心算法的主要思想是永遠(yuǎn)選擇當(dāng)前最短的路徑。這是解決 TSP問題的最簡(jiǎn)便的算法。貪心算法容易實(shí)現(xiàn)但是效率不好。如下圖所示 :有 4 個(gè)城市 :A, B, C和 D。距離從 A 到 B 是 5 公里 , A 到 C 是 6 公里 , A 到 D 是 9 公里 , B 到 C 是 3公里 , B 到 D 是 7 公里, C 到 D 是 8 公里。假設(shè)我們一開始在 A, 比較 A 到其他點(diǎn)的 路徑長(zhǎng)度 , 找出 A 到 B 是最短的路徑 (5 公里 )。 我們從 A 到 B, 然后設(shè)定 A和 B 之間的距離無限大。在 B我們找出 B 到 C(3 公里 )是最短的路徑。如此然后去 C, 再到 D。所以 , 此算法則總是選擇最短的路徑。 29 模擬退火算法 模擬退火算法是一種求解大規(guī)模組合優(yōu)化問題的方法 , 對(duì)于 NP完全組合優(yōu)化問題尤其有效。模擬退火算法來源于固體退火原理 , 將固體加溫至充分高 , 再讓其緩慢降溫 (即退火 ), 使之達(dá)到能量最低點(diǎn)。反之 , 如果急速降溫 (即淬火 )則不能達(dá)到最低點(diǎn)。加溫時(shí) , 固體內(nèi)部粒子隨溫升變?yōu)闊o序狀 , 內(nèi)能增大 , 而緩慢降溫時(shí) 粒子漸趨有序 , 在每個(gè)溫度上都達(dá)到平衡態(tài) , 最后在常溫時(shí)達(dá)到基態(tài) ,內(nèi)能減為最小。 根據(jù) Metropolis 準(zhǔn)則 , 粒子在溫度 T時(shí)趨于平衡的概率為 exp( E/(kT)), 其中 E為溫度 T時(shí)的內(nèi)能 , E為其改變量 , k為 Boltzman 常數(shù)。用固體退火模擬組合優(yōu)化問題 , 將內(nèi)能 E模擬為目標(biāo)函數(shù)值 f, 溫度 T 演化成控制參數(shù) t, 即得到解組合優(yōu)化問題的模擬退火算法 : 由初始解 i和控制參數(shù)初值 t開始 , 對(duì)當(dāng)前解重復(fù)產(chǎn)生“新解→計(jì)算目標(biāo)函數(shù)差→接受或舍棄”的迭代 , 并
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1