圖的認識(遍歷,最短路徑)

一、圖的定義

1、圖的介紹

圖是一種網狀數據結構,圖是由非空集合和一個描述頂點之間關係的集合組成。定義形式如下:

Graph = (V,E)

V = {x|x屬於某個數據對象} , V是具有相同特性的數據元素集合。

E ={<u,v>|P(u,v)^(u,v屬於V)} , E是兩個頂點之間關係的集合

圖由頂點集V(G)和邊集E(G)組成,記爲G=(V,E)。其中E(G)是邊的有限集合,邊是頂點的無序對(無向圖)或有序對(有向圖)。

對有向圖來說,E(G)是有向邊(也稱弧(Arc))的有限集合,弧是頂點的有序對,記爲<v,w>,v、w是頂點,v爲弧尾(箭頭根部),w爲弧頭(箭頭處)。

對無向圖來說,E(G)是邊的有限集合,邊是頂點的無序對,記爲(v, w)或者(w, v),並且(v, w)=(w,v)。

在這裏插入圖片描述

2、加權圖

在這裏插入圖片描述

在圖的應用中,圖不但需要可以表現元素之間的關係。還需要邊有一定的實際意義,如果圖的每條邊賦予相關的實數,稱爲權。

二、圖的存儲

1、鄰接矩陣:

用二位數組 順序結構 存儲。

在這裏插入圖片描述

在這裏插入圖片描述

2、鄰接表

用鏈表。鏈式存儲結構

在這裏插入圖片描述

三、圖的遍歷

在這裏插入圖片描述

1、深度優先遍歷(DFS)

結果:A B E F C D G H I

深度優先遍歷,類似於樹的先根遍歷(可以採用遞歸遍歷,也可以藉助棧的非遞歸遍歷)

2、廣度優先遍歷(BFS)

結果:A B C D E F G H I

廣度優先遍歷,類似於樹的層次遍歷(可以採用藉助隊列的非遞歸遍歷)

3、最短路徑

在這裏插入圖片描述

1、最短路徑(1)

  • 段數最少的最短路徑:

    生活案例:地鐵,公交,最少換乘

    解決方法:使用廣度優先搜索即可

    類似於樹的層次遍歷,需要藉助隊列實現

2、最短路徑(2)

  • 權值最小的最短路徑:

    生活案例:時間最少,距離最近(這些都要取決於權值得含義)

    解決方法:使用迪克斯特拉算法

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章