1. 程式人生 > >java中的資料結構——圖

java中的資料結構——圖

圖是一種以網路形式相互連線的節點,圖是一種與樹有些相似的資料結構,圖通常有一個固定的形狀, 這是由物理或抽象的問題所決定的。圖包含由邊連線的頂點。
型別,無向圖,有向圖(邊有方向,通常用箭頭表示)
圖可以用兩種形式表示,鄰接矩陣,鄰接表,鄰接矩陣或鄰接表提供了關於當前頂點的位置資訊,當前 頂點通過邊與哪些頂點相連。
深度優先搜尋 在搜尋到盡頭的時候,深度優先搜尋使用棧標記下一步的走向。 棧的內容就是從起始頂點到各個頂點訪問的整個過程,從起始頂點出發訪問下一個頂點時,就把這個頂 點入棧,回到起始頂點時,出棧。深度優先演算法要得到距離起始點遠的頂點,然後在不能繼續前進的 時候返回。
廣度優先搜尋 在廣度優先搜尋中,演算法要儘可能的靠近起始點,它首先訪問起始頂點的所有鄰接點,然後在訪問較遠 的區域,用佇列實現。
演算法要點: 從一個頂點開始,把它放入樹的集合中,然後重複做下面的事情:
1.找到從新的頂點到其他頂點的所有邊,這些頂點不能在樹的集合中。把這些邊放入優先順序佇列。
2.找出權值小的邊,把它和它所到達的頂點放入樹的集合中。 重複,直到所有頂點都在樹的集合中。
效率 如果使用鄰接矩陣,各種演算法大約需要O(VV)時間級,V是頂點的數量。因為這些演算法幾乎都遍歷了一遍 所有頂點,具體方法是在鄰接矩陣中掃描每一行,依次檢視每條邊。即鄰接矩陣的每個單元,一共有V

V 個單元都被掃描過。對於規模大的矩陣O(V*V)時間級的效能並不好。如果圖是密集的,效能就很難提高。 然而對於稀疏的圖來說,使用鄰接表的方法代替鄰接矩陣,可以提高效能,因為這樣不用浪費時間來檢 索鄰接矩陣中沒有邊的單元。
實戰
實現廣度和深度優先搜尋 :
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

上一篇:java中的資料結構——棧