圖可以分為有向圖和無向圖。在有向圖中,邊是有方向的,表示從一個頂點指向另一個頂點;而在無向圖中,邊則沒有方向。

圖的術語與分類

圖的分類包括簡單圖、多重圖、完全圖和子圖等。簡單圖是指沒有重邊和自環的圖,多重圖則允許重邊。完全圖是指任意兩個不同頂點之間都有邊相連的圖。而子圖是原圖的一個部分,包括一些頂點和邊。

圖的分類

有向圖與無向圖

頂點的度、入度和出度

在圖中,每個頂點的度是與其相連的邊的數目。對于有向圖,度分為入度和出度,分別表示以該頂點為終點和起點的有向邊的數目。

圖的存儲結構

圖的存儲結構有多種選擇,常見的有鄰接矩陣、鄰接表、十字鏈表、鄰接多重表和邊集數組。

鄰接矩陣

鄰接矩陣是一種簡單易理解的圖存儲方式。它使用一個二維數組來表示頂點之間的連接關系。對于一個有 n 個頂點的圖,鄰接矩陣是一個 n × n 的二維數組。若頂點 vi 和 vj 之間有邊,則 A[i][j] = 1,否則為 0。

鄰接矩陣示例

這種方法適合稠密圖,但對于稀疏圖則會浪費大量空間。

鄰接表

鄰接表是一種更為高效的存儲方式,尤其適用于稀疏圖。它為每個頂點維護一個鏈表,用于存儲其所有相鄰頂點。

鄰接表示例

這種方式存儲空間小,但查找兩個頂點之間是否有邊連接的時間復雜度較高。

十字鏈表

十字鏈表是有向圖的一種存儲方式,將鄰接表和逆鄰接表結合起來,使得在查找入度和出度時都很方便。

十字鏈表示例

鄰接多重表

鄰接多重表是無向圖的存儲方式,適用于需要頻繁修改邊的圖。它在鄰接表的基礎上,每條邊只存一次,從而簡化了對邊的操作。

鄰接多重表示例

邊集數組

邊集數組關注邊的集合,適用于需要頻繁遍歷邊的操作。它由兩個數組構成,一個存儲頂點信息,另一個存儲邊的信息。

邊集數組示例

圖的遍歷

圖的遍歷是訪問圖中所有頂點的過程,主要有深度優先遍歷(DFS)和廣度優先遍歷(BFS)。

深度優先遍歷(DFS)

DFS 類似于樹的先序遍歷,通過遞歸的方式盡可能深入到圖的每個分支。其實現需要輔助遞歸棧。

void DFS(Graph G, int v) {
    visit(v);
    visited[v] = TRUE;
    for (w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w)) {
        if (!visited[w]) {
            DFS(G, w);
        }
    }
}

DFS示例

廣度優先遍歷(BFS)

BFS 類似于樹的層序遍歷,通過隊列實現,逐層訪問頂點。

void BFSTraverse(MGraph G) {
    Queue Q;
    InitQueue(&Q);
    for (i = 0; i = 0; j = NextNeighbor(G, i, j)) {
                    if (!visited[j]) {
                        visited[j] = TRUE;
                        EnQueue(&Q, j);
                    }
                }
            }
        }
    }
}

BFS示例

FAQ

1. 什么是圖的連通性?

圖的連通性是指圖中任意兩個頂點是否可達。對于無向圖,若從任一頂點出發能到達所有其他頂點,則為連通圖;對于有向圖,若任意兩個頂點之間都有路徑,則為強連通圖。

2. 圖的存儲結構如何選擇?

選擇圖的存儲結構取決于圖的密度和操作需求。稠密圖適合鄰接矩陣,稀疏圖適合鄰接表。十字鏈表適用于需要頻繁查詢入度和出度的有向圖。

3. 如何判斷兩個頂點之間是否有邊?

在鄰接矩陣中,直接檢查對應位置的值。在鄰接表中,需要遍歷頂點對應的邊表。

4. DFS 和 BFS 的區別是什么?

DFS 是沿著一個分支盡可能深地走,適用于路徑查找;BFS 是逐層遍歷,適用于查找最短路徑。

5. 什么是生成樹?

生成樹是一個包含圖中所有頂點的最小連通子圖,對于無回路的連通圖,生成樹的邊數為 n-1(n為頂點數)。

上一篇:

掌握 IDEA 插件項目結構圖的全攻略

下一篇:

PayPal怎么用:全面解析與實用指南
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費