當前位置:編程學習大全網 - 源碼下載 - 關於最短路徑問題的手寫報告

關於最短路徑問題的手寫報告

最短路徑問題是組合優化領域的經典問題之壹,廣泛應用於計算機科學、交通工程、通信工程、系統工程、運籌學、信息論、控制論等諸多領域。& gtDijkstra算法是壹種經典的最短路徑算法。

第壹,相關算法

1,Dijkstra算法

Dijkstra算法是壹種經典的最短路徑算法,其基本思想是:設置壹個集合S來存儲已經找到最短路徑的頂點,S的初始狀態只包含源點V,對於vi∈V-S,假設源點V到vi的有向邊是最短路徑。每找到壹條最短路徑V,…,vk後,將vk加到集合S中,將路徑V,…,vk,vi與原假設進行比較,選擇最短路徑,重復上述過程,直到集合V中的所有頂點都加到集合S中,利用該算法,找到全局最優的最短路徑。當網絡節點數較多,網絡邊數較多時,存在內存占用大,時間復雜度高等缺點,Dijkstra算法不能很好地解決有必要點約束的最短路徑問題。

2.弗洛伊德算法

算法的特點:

弗洛伊德算法是求解任意兩點間最短路徑的算法,能正確處理有向圖或有向圖或負權的最短路徑問題(但不能有負權環),也用於計算有向圖的傳遞閉包。

Floyd在計算G=(V,E)中每個頂點的最短路徑時,需要引入兩個矩陣。矩陣S中的元素a[j]表示從頂點I(第I個頂點)到頂點J(第J個頂點)的距離。矩陣p中的元素b[j]表示從頂點I到頂點J由b[j]記錄的值所表示的頂點..

假設圖G的頂點數為n,需要更新矩陣D和矩陣P n次。最初,矩陣D中頂點a[j]的距離是從頂點I到頂點J的權重;如果I和J不相鄰,那麽a[j]=∞,矩陣P的值就是頂點b[j]的J的值。接下來,將矩陣d更新n次。在第1次更新時,如果" a[j]的距離" >;“A+a[j]”(A+a[j]表示“經過第1個頂點的I和J之間的距離”),則更新a[j]為“A+A[J]”,更新B [J] = B .同理,如果“A[J]的距離”>;“a [k-1]+a [k-1] [j]”,然後將a[j]更新為“a[k-1]+a[k-1][j]”,b [j] [1]

3.蟻群算法

& gt蟻群算法是Dorigo、Maniezzo和Colorni在等於1991時首先提出的。它起源於螞蟻的覓食行為。通過研究發現,螞蟻通過壹種信息素傳遞信息。螞蟻在行走時可以感知周圍信息素的強度,並向信息素濃度高的方向移動。螞蟻找到食物後會釋放信息素作為回巢途中的標記,同伴找到後會沿著這條路尋找食物。當公司裏很多螞蟻都找到了食物但路徑長短不壹時,由於螞蟻在壹條短路徑上往返所需的時間比較短,單位時間內經過的螞蟻越多,這條路徑上的信息素濃度就會越強。所以這條路徑上的螞蟻會越來越多,會逐漸選出壹條最優路徑。

第二,分類

它可以分為兩個子問題,即單源最短路徑問題和所有頂點對之間的最短路徑問題。前者是求圖中壹個頂點到所有其他頂點的最短路徑,主要算法有Dixcher算法等。後者是尋找圖中每對頂點之間的最短路徑,主要算法有弗洛伊德算法。

第三,應用

1,通信領域

隨著互聯網技術和應用的不斷發展,當今網絡通信流量的需求越來越大。大流量、高速度、低成本的傳輸方式是網絡傳輸的關鍵。最短路徑最低成本網絡路由可以大大降低通信成本,節約網絡資源,提高網絡資源利用率。

2.運輸

最短路徑問題是交通分配中最基本的問題,指的是壹對節點之間的路徑中總阻力最小的路徑。幾乎所有的交通流分配方法都將其作為壹個基本的子過程,反復調用。

  • 上一篇:如何用AngularJS編程思想
  • 下一篇:註冊nacos源代碼
  • copyright 2024編程學習大全網