1. 程式人生 > >資料結構與演算法學習筆記——圖(Graph)

資料結構與演算法學習筆記——圖(Graph)

什麼是圖:

                                   

                                  

圖的一些概念:

頂點:圖中的元素

邊: 圖中的一個頂點可以與任意其他頂點建立連線關係,這種建立的關係就是邊

度: 與頂點相連線的邊的條數(無向圖概念)

無向圖: 邊無方向的圖

有向圖: 邊有方向的圖

稀疏圖(Sparse Matrix) : 頂點很多,但每個頂點的邊並不多

帶權圖(weighted graph) 。在帶權圖中,每條邊都有一個權重 (weight)

                                   

有向圖的一些概念:

入度(In-degree) : 表示有多少條邊指向這個頂點

出度(Out-degre) : 表示有多少條邊是以這個頂點為起點推向其他頂點

圖的儲存:  

    鄰接矩陣(Adjacency Matrix):

    鄰接矩陣的底層依賴一個二維陣列。對於無向圖來說,如果頂點i與頂點j之間有邊,我們就將 Alij]和AJ[i標記為1;對於有向圖來說,如果頂點i到頂點j之間,有一條箭頭從頂點i指向頂點j的邊,那我們就將Ai0j]標記為1。同理,如果有一條箭頭從頂點j指向頂點i的邊,我們就將Alji]標記為1。對於帶權圖,陣列中就儲存相應的權重。   

                   

                

優點: 簡單直觀,缺點: 浪費儲存空間

 

鄰接表儲存法: