資料結構和演算法(六)
阿新 • • 發佈:2020-10-22
1.7堆
堆(heap)也被稱為優先佇列(priority queue)。佇列中允許的操作是先進先出(FIFO),在隊尾插入元素,在隊頭取出元素。而堆也是一樣,在堆底插入元素,在堆頂取出元素,但是堆中元素的排列不是按照到來的先後順序,而是按照一定的優先順序排列的。
1.8圖
圖G由兩個集合V和E組成,記為G=(V,E),其中, V是頂點(資料元素)的有窮非空集合,E是V中頂點偶對的有窮集合,這些頂點偶對稱為邊 。
(1)圖的種類:
1.有向圖
2.無向圖
(2)權和網:
權:圖中的邊可標上具有某種含義的數值,該數值稱為邊上的權。
網:權可表示為從一個頂點到另一頂點的距離或耗費,這種邊帶權的圖稱網(網路)。
1.鄰接矩陣(矩陣上的每個座標代表當前兩個頂點之間是否有邊,有邊值為1,無邊為0)
2.鄰接表(對於圖G中的每個頂點vi,把所有鄰接於vi的頂點鏈成一個單鏈表,這個單鏈表就稱為頂點vi的鄰接表)
(1)鄰接矩陣:
例如:
對應的鄰接矩陣為:
(2)鄰接表:
例如:
對應的鄰接表為:
(3)鄰接表與鄰接矩陣對比:
三、圖的遍歷
1.廣度優先搜尋演算法
(1)連通圖的深度優先搜尋遍歷: 從圖中的某個頂點V出發,訪問此節點,然後依次從V的各個未被訪問的鄰接點出發深度優先搜尋遍歷圖,直至圖中所有和V路徑想通的頂點都被訪問到。
(2)圖的廣度優先搜尋遍歷圖:
從圖中的某個頂點V出發,並在訪問此頂點之後依次訪問V的所有未被訪問過的鄰接點,之後按這些頂點被訪問的先後次序依次訪問它們的鄰接點,直至圖中所有和V有路徑相通的頂點都被訪問到。若此時圖中尚有頂點未被訪問,則另選圖中一個未曾被訪問的頂點作起始點,重複上述過程,直至圖中所有頂點都被訪問到為止。