圖的兩種搜索算法,深度優(yōu)先搜素和廣度優(yōu)先搜索。這兩種算法主要是針對(duì)無權(quán)圖的搜索算法。針對(duì)有權(quán)圖,也就是圖中的每條邊都有一個(gè)權(quán)重,該如何計(jì)算兩點(diǎn)之間的最短路徑?最短路徑算法(Shortest Path Algorithm)。
一:算法解析
最優(yōu)問題包含三個(gè):最短路線,最少用時(shí),最少紅綠燈。
1,解訣軟件開發(fā)中的實(shí)際問題,最重要的一點(diǎn)就是建模,也就是將復(fù)雜的場景抽象成具體的數(shù)據(jù)結(jié)構(gòu)。
2,圖的表達(dá)能力強(qiáng),可以將求解的最短路徑問題轉(zhuǎn)化為:在一個(gè)有向有權(quán)圖中,求兩個(gè)頂點(diǎn)間的最短路徑。
3,要解決這個(gè)問題,有個(gè)非常經(jīng)典的算法,最短路徑算法,更準(zhǔn)確的叫:單源最短路徑算法(一個(gè)頂點(diǎn)到一個(gè)頂點(diǎn))。提到最短路徑算法,最出名的莫過于DijKstra算法。
4,Dijkstra算法的時(shí)間復(fù)雜度:
O(E*log V),E表示邊的個(gè)數(shù),V表示元素個(gè)數(shù)不會(huì)超過頂點(diǎn)的個(gè)數(shù)
5,Dijkstra最短路徑算法,實(shí)際上最短路徑算法還有很多,比如Bellford算法,F(xiàn)loyd算法等。