首頁 常見問題 最短路徑問題

最短路徑問題

Jun 15, 2019 am 09:09 AM
最短路徑

最短路徑問題是圖論研究中的經典演算法問題, 旨在尋找圖(由結點和路徑組成的)中兩結點之間的最短路徑。 最短路徑問題是組合最佳化領域的經典問題之一,它廣泛應用於電腦科學、交通工程、通訊工程、系統工程、運籌學、資訊理論、控制理論等眾多領域。 Dijkstra演算法是經典的最短路徑演算法。

最短路徑問題

演算法具體的形式包括:(推薦學習:PHP影片教學

確定起點的最短路徑問題- 即已知起始結點,求最短路徑的問題。

確定終點的最短路徑問題 - 與確定起點的問題相反,該問題是已知終結結點,求最短路徑的問題。在無向圖中該問題與確定起點的問題完全等同,在有向圖中該問題等同於把所有路徑方向反轉的確定起點的問題。

確定起點終點的最短路徑問題 - 即已知起點和終點,求兩結點之間的最短路徑。

全域最短路徑問題 - 求圖中所有的最短路徑。

Dijkstra演算法

Dijkstra演算法是經典的最短路徑演算法,其基本思想是:設定一個集合S存放已經找到最短路徑的頂點,S的初始狀態只包含源點v,對vi∈V-S,假設從源點v到vi的有向邊為最短路徑。以後每求得一條最短路徑v, …, vk,就將vk加入集合S中,並將路徑v, …, vk , vi與原來的假設相比較,取路徑長度較小者為最短路徑,重複上述過程,直到集合V中全部頂點加入到集合S。使用此演算法找到的是全域最優的最短路徑,當網路節點數量大、網路邊數較多時,有記憶體佔用大、時間複雜度高等不足,且Dijkstra演算法無法很好地解決含必經點約束的最短路徑問題。

蟻群演算法

蟻群演算法是由Dorigo、Maniezzo和Colorni等於1991 年首先提出來的,它來自螞蟻尋食的行為。透過研究發現,螞蟻個體之間是透過一種稱為信息素的外激素進行訊息傳遞的。螞蟻在行走過程中能感知周圍費洛蒙的強度, 並朝著費洛蒙濃度高的方向移動,當某隻螞蟻發現食物時,它在回巢的過程當中,會在返回的路上釋放信息素作為標記,同伴發現後會沿著此路尋找到食物。當同伴中多隻螞蟻都發現了食物但路徑長短不同時,因為螞蟻在短的路徑上往返所需要的時間相對較小,所以單位時間內走過的螞蟻越來越多,在這條路徑上的費洛蒙濃度就會越強,因此,該路徑上的螞蟻就會越來越多,逐漸選出一條最優的道路。

分類

可分成兩個子問題,即單源最短路徑問題和所有頂點對之間的最短路徑問題。前者是找出從某一頂點出發到圖中所有其他頂點的最短路徑,主要演算法有迪克斯徹演算法等;後者是求圖中每一對頂點之間的最短路徑,主要演算法有弗洛伊德算法等。

更多PHP相關技術文章,請造訪PHP圖文教學欄位進行學習!

以上是最短路徑問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)