學習筆記 - 離散數學 - 圖論(持續更新)


說不准哪天寫煩了就會把之前的筆記刪了重構一遍(

圖論

基本概念

有向圖及無向圖

有向圖是一對有序偶 \(D=<V,A>\)

  • 頂點 + 弧
  • \(A\)\(V\) 中的一個二元關系

無向圖是一對有序偶 \(G=<V,E>\)

  • 頂點 + 邊
  • \(E\)\(V\) 中元素的無序偶組成的多重集合

帶權圖

圖上的邊可以附帶邊權

通常解釋為路徑長度,運費,管道流量等

關聯、相鄰、鄰接的概念

給定有向圖 \(D=<V,A>\),若 \(a=<u,v>\in A\)

  • \(u\) 鄰接到 \(v\)\(u\)\(v\) 鄰接)
  • \(a\) 關聯於 \(u\)\(v\)

若兩個弧關聯於同一個頂點,則稱這兩個弧是相鄰的

給定無向圖 \(G=<V,E>\),若 \(e=<u,v>\in E\)

  • \(u\)\(v\) 鄰接 (無 鄰接到 的概念)
  • \(e\) 關聯與 \(u\)\(v\)

總結: 點與邊關聯,點與點鄰接,邊與邊相鄰

簡單圖

自環:兩個端點相同的弧或邊

平行弧:有向圖中,始點和終點相同的兩條弧

平行邊:無向圖中,兩個頂點之間的兩條邊

多重弧圖:有平行弧的有向圖

多重邊圖:有平行邊的圖

多重圖:多重弧圖 + 多重邊圖

簡單圖:無資環和平行弧(或平行邊)的圖

頂點的次數 / 度數

有向圖分入度 \(id(u)\)出度 \(od(u)\)

無向圖只有 \(d(u) = id(u) + od(u)\)

\(n\) 階圖:有 \(n\) 個頂點的圖

\((n, m)\) 圖:有 \(m\) 條邊或弧的 \(n\) 階圖

  • 孤立點:度數為 \(0\) 的點
  • 懸掛點:度數為 \(1\) 的點
  • 懸掛邊:與懸掛點關聯的邊
  • 零圖:每個頂點都是孤立點的圖
  • 平凡圖:1 階零圖

握手定理

有向圖中:\(\sum\limits_{i=1}^nod(u_i)=\sum\limits_{i=1}^nid(u_i)=m\)

對於 \((n, m)\) 圖: \(\sum\limits_{i=1}^nd(u_i)=2m\)

奇頂點:度數為奇數的頂點

偶頂點:度數為偶數的頂點

  • 在任何圖中,奇頂點的個數必為偶數

正則圖

若無向圖 \(G\) 的所有頂點的度數都是 \(r\) ,則稱 \(G\)\(r\) 次正則圖

完全圖

完全圖:任何兩個頂點之間都有一條邊簡單無向圖,將 \(n\) 階完全圖記為 \(K_n\)

\(K_n\) 也是 \(n - 1\) 次正則圖,邊數為 \(\frac{n(n-1)}{2}\)

有向完全圖:任意兩頂點之間都恰有一條弧的簡單有向圖,也稱為 競賽圖 。(可以理解為帶方向的完全圖)

圖的同構

存在雙射\(\tau:V_1\to V_2\) 使得 \((u,v)\in E_1\) 當且僅當 \((\tau(u), \tau(v))\in E_2\),並且重數相同,則 \(G_1, G_2\) 同構。有向圖同理

同構圖的性質:

  • 頂點數、邊數相同
  • 對任意的自然數 \(k\) ,度數為 \(k\) 的頂點一樣多
  • 自環數量相同

子圖

\(G_1=<V_1,E_1>\)\(G_2=<V_2,E_2>\) 是兩個圖,若 \(V_1\subseteq V_2\)\(E_1\subseteq E_2\) 則稱 \(G_1\)\(G_2\) 的子圖,記為 \(G_1\subseteq G_2\)

\(G_1\subseteq G_2\)\(G_1 \neq G_2\) ,則 \(G_1\)\(G_2\) 的真子圖

補圖

\(E_2 = E - E_1\)

\(V_2=\{v|(v\in V\land\exists e(e\in E_2\land e與 v關聯))\lor(v\in V-V_1\land v是G中的孤立點)\}\)

  • 邊只能在圖和補圖中出現一次
  • 點可以出現多次

導出子圖和生成子圖

\(G_1=<V_1,E_1>\)\(G=<V,E>\) 的子圖

導出子圖:\(E_1=\{e|e\in E\land e的端點在V_1中\}\)

生成子圖:\(V_1=V\)

去點運算:去掉頂點以及關聯的邊 \(G-v\)

去邊運算:僅去掉邊,\(G-e\)

加邊運算:\(G\)\(u\)\(v\) 不相鄰,增加邊 \((u,v)\)\(G+(u,v)\)

圖的並集:\(V=V_1\cup V_2,E=E_1\cup E_2\),則 \(G=G_1\cup G_2\)

連通性 - 通路

通路:有向圖中\(D=<V,A>\) 中,首尾相接的弧的序列 \(P=(a_1,a_2,\cdots,a_t)\) 稱為通路,且對於每個 \(i\)\(a_i\) 的終點是 \(a_{i+1}\) 的始點。通路中出現的弧的數目 \(t\) 為該通路的長度,記為 \(|P|=t\)

簡單通路:不出現相同弧的通路

基本通路:不出現相同頂點的通路

  • 基本通路一定是簡單通路,簡單通路不一定是基本通路
  • 基本通路的長度不超過 \(n - 1\)

連通性 - 回路

回路:始點和終點相同的通路

簡單回路:不出現相同弧的回路

基本回路:不出現相同頂點的回路

無回路圖:沒有回路的有向圖

  • 基本回路的長度不超過 \(n\)

連通性 - 可到達

可到達:若存在 \(u\)\(v\) 的通路,則稱 \(u\) 可到達 \(v\)

  • 若從 \(u\) 可以到達 \(v\), 則存在從 \(u\)\(v\) 的基本通路,且最短通路必是基本通路(回路同理)

半通路:每條弧都與后一條弧相鄰的弧的序列 \((a_1, a_2, \cdots, a_t)\) 稱為半通路。

  • 通路是每條弧都從前向后的半通路

連接到:若存在 \(u\)\(v\) 的半通路,則稱 \(u\) 連接到 \(v\)

連通性 - 強連通,單向連通,弱連通

強連通 / 3 度連通:任意兩點互相可達

單向連通 / 2 度連通:任意兩點,至少有一個方向可達

弱連通 / 1 度連通:任意兩點互相連接

不連通 / 0 度連通:不滿足弱連通,則稱為不連通

完備路

完備通路:通過有向圖中所有頂點的通路

完備回路:通過有向圖中所有頂點的回路

完備半通路:通過有向圖中所有頂點的半通路

  • 強連通 \(\Leftrightarrow\) 有完備回路
  • 單向連通 \(\Leftrightarrow\) 有完備通路
  • 半連通 \(\Leftrightarrow\) 有完備半通路

鏈:無向圖中,每條邊都與隨后的那條邊相鄰的序列 \((e_1,e_2, \cdots,e_t)\),可記為頂點序列,長度 \(|P|=t\)

簡單鏈:各邊互不相同

基本鏈:各頂點互不相同

閉合鏈: \(u_1 = u_{t+1}\)

\(u_1,\cdots,u_t\) 各不相同,且各邊互不相同的閉合鏈

連通分支

連通:若頂點 \(u\)\(v\) 之間存在鏈,則稱 \(u\)\(v\) 是連通的

連通分支:有連通關系構成的等價類所導出的子圖

  • \(G\) 是連通的當且僅當 \(G\) 中只有一個連通分支

割點:\(G\) 連通,\(G-v\) 不連通,則 \(v\) 是割點

割邊:\(G\) 連通,\(G-e\) 不連通,則 \(e\) 是割邊 / 橋

頂點基和強分圖

可到達:對於有向圖 \(D=<V,A>, B\subseteq V\)\(v\in V\),若從 \(B\) 中的某個頂點可以到達 \(v\) ,則稱 \(B\) 可以到達 \(v\)

頂點基:若 \(B\) 可到達 \(V\) 的所有頂點,且任何 \(B\) 的真子集都無法到達 \(V\) 中的每個頂點, 則稱 \(B\)\(D\) 的一個頂點基

強分圖:\(D\) 是有向圖, \(D'\)\(D\) 的強連通子圖,並且對於 \(D\) 的任意強連通子圖 \(D''\),若 \(D' \subseteq D''\) ,則 \(D'=D''\)。稱 \(D'\)\(D\) 的強連通分圖, 或者強分圖。

(單向分圖,弱分圖同理)

  • 每個頂點在唯一的強分圖中,每條弧至多在一個強分圖中
  • 無回路有向圖有唯一的頂點基,由所有引入次數為 0 的點組成
  • 每個頂點基包含同樣數目的頂點

壓縮

每個強分圖可以用一個點替代(縮點)

  • \(D\) 的每一個頂點基都可以由可以由 \(D^*\) 的頂點基 \(B^*\) 得到(在 \(B^*\) 的每個元素中取出一個頂點)

通路問題

記通路的長度為 \(I(P)\) ,兩點之間的最短通路記為最短路 \(d(u,v)\)。最短通路可以用 Dijkstra 來求

工序圖

  • 簡單帶權有向圖

  • 沒有回路

  • 有唯一的引入次數為 0 的點,稱其為發點

  • 有唯一的引出次數為 0 的點,稱其為收點

  • 每個頂點都在某條從發點到收點的通路上

  • 每條弧的權都是非負實數

關鍵工序和關鍵事件

關鍵工序對應有向圖的邊

關鍵事件對應有向圖的點

關鍵事件和關鍵工序的延遲都會導致整個工程的延誤

關鍵時間和關鍵工序都位於關鍵通路中

關鍵通路

最早完成時間 \(TE\) :從發點 \(u_1\)\(u_j\) 的最長通路的長度記為 \(u_j\) 的最早完成時間 (拓撲排序)

最遲完成時間 \(TL\) :在保證 \(u_n\) 的最早完成時間不變的前提下,到達事件 \(u_j\) 的最遲時間 (反着來一次拓撲排序)

緩沖時間 \(TS\)\(TL-TE\)

  • 關鍵通路上的所有事件的緩沖時間都是 0

圖的矩陣表示

鄰接矩陣

鄰接矩陣就是關鍵矩陣 \(M = (m_{ij})\)

\[\begin{equation}m_{ij}=\begin{cases}1&當<u_i,u_j>\space\in\space A時\\0&當<u_i,u_j> \space\not\in\space A時\end{cases}\end{equation} \]

鄰接矩陣也可以表示可達性:若在鄰接矩陣上, \(m_{ij}=1\) ,則表示從 \(u_i\)\(u_j\) 存在一條長度為 \(1\) 的通路

求到達某個點的長度為 k 的路徑數量

考慮動態規划

長度為 \(k\) 的路徑,可以由長度為 \(k - 1\) 的路徑,加上長度為 \(1\) 的路徑組合而來

不妨設 dp[u][v][k] 表示 \(<u, v>\) 之間長度為 \(n\) 的路徑數量,則可以通過枚舉 \(m_{ij}\) 進行轉移

for(int t = 1;t <= n; ++t)
    for(int u = 1;u <= n; ++u)
        for(int v = 1;v <= n; ++v)
            dp[u][v][k] += dp[u][t][k - 1] * m[i][j];

同時,我們也知道 \(dp[u][v][1] = m[u][v]\) ,而這三重循環恰好是進行了一次矩陣乘法

即:若記 \(dp[][][k] = dp^k\),則 \(dp^k=M^k\)

有向圖的可達性矩陣

可達性矩陣的元素只包含 \(0, 1\)。設為 \(R\),通過枚舉通路的長度,則有

\[R = B(M^0+M^1+M^2+\cdots+M^{n-1})=B((I+M)^{n-1}) \]

其中 \(B(M) = (bool(m_{ij}))\),等號成立是因為只取結果只取 \(0, 1\) 與系數無關

強分圖

\(R\) 為可達性矩陣,記 \(R^2=(s_{ij})\)\(s_{ii}\) 可以表示圖中可以到達 \(i\) 的頂點數量

關聯矩陣

有向圖的關聯矩陣:\(D=<V,A>\)\(n\) 個點 \(m\) 條邊。則 \(B=(b_{ij})_{n\times m}\)

\[\begin{equation}b_{ij}=\begin{cases}1&若u_i\space 是a_j的起點\\-1&若u_i\space 是a_j的終點\\0&若u_i不是弧a_j的端點\end{cases}\end{equation} \]

無向圖的關聯矩陣:\(b_{ij}=e_i與u_i的關聯次數\)\(b_{ij}\in\{0,1,2\}\)

  • 有向圖同構 \(\Leftrightarrow\) 適當排列頂點和弧的順序,可以得到同樣的鄰接矩陣和關聯矩陣

連通且無圈的無向圖

樹的一般定義

\(T\)\((n,m)\) 無向圖,則以下說法等價

  • \(T\) 連通且無圈
  • \(T\) 無自環,並且每對頂點之間有唯一基本鏈
  • \(T\) 連通,在 \(T\) 中加一邊僅有一個圈
  • \(T\) 連通,去掉任何一邊就不連通了
  • \(T\) 連通,並且 \(m=n-1\)
  • \(T\) 無圈,並且 \(m=n-1\)

樹葉:次數為 1 的頂點

分支頂點:次數大於 1 的頂點

非平凡樹中至少有兩個樹葉

有向樹

將一個樹的邊加上任意的方向,就構成了有向樹

有向樹是弱連通的無回路有向圖

弱連通的無回路有向圖不一定是樹

根樹

有向樹 \(T\) 中,有一個頂點引入次數為 0, 其余頂點的引入次數為 1,則稱 \(T\)根樹

根樹中,引入次數為 0 的點為樹根,引出次數為 0 的點為樹葉

若指定了 頂點或弧的次序的根樹也稱為有序樹

二元樹

\(m\) 元樹:每個頂點的引出次數 小於等於 \(m\)

完全 \(m\) 元樹:每個頂點的引出次數等於 \(m\)\(0\)

位置 \(m\) 元樹:每個頂點都規定了各兒子的順序的 \(m\) 元樹

一個有序樹可以轉變為位置二元樹:

  • 左兒子為長子
  • 右兒子為兄弟

生成樹

若無向圖 \(G\) 的生成子圖 \(T\) 是樹,則稱 \(T\)\(G\) 的生成樹

所有生成樹中權值最小的稱為最小生成樹

(Kruskal算法)

割集

(類比最小割)

\(G=<V,E>, E'\subseteq E\)\(G-E'\) 不連通,且對任意的 \(E''\subset E\)\(G-E''\) 連通。則 \(E'\) 是割集

基本割集:只包含一個樹枝的割集

基本圈:只有一條弦,剩下的全為樹邊的圈

性質

  • 每個圈都包含弦
  • 每個割集都和任何生成樹有至少一條公共邊
  • 任何圈和任何割集都有偶數條公共邊

穿程問題

歐拉圖

歐拉圈:穿過無向圖中每條邊的簡單閉合鏈位歐拉圈

歐拉圖:有歐拉圈的圖位歐拉圖

  • 歐拉圈中邊不重復,但點可能重復,因此歐拉圈不一定是圈

歐拉鏈:穿過無向圖中每條邊的簡單非閉合鏈稱為歐拉鏈

  • 歐拉鏈一般不是基本鏈

歐拉回路:穿過有向圖中每條弧的簡單回路稱為歐拉回路

歐拉圖:有歐拉回路的圖稱為歐拉圖

歐拉通路:穿過有向圖中每條胡的非閉合簡單通路位歐拉通路

性質

若無向圖 \(G\) 中每個頂點的次數大於 1,則在 \(G\) 中存在圈

連通無向圖 \(G\) 是歐拉圖當且僅當 \(G\) 的每個頂點都是偶頂點

連通無向圖 \(G\) 中存在連接頂點 \(u,v\) 的歐拉鏈當且僅當只有 \(u\)\(v\) 是奇頂點

強連通圖有向圖 \(D\) 是歐拉圖當且僅當 \(D\) 中的每個頂點的引入次數和引出次數相同

單向連通有向圖 \(D\) 有從頂點 \(u\)\(v\) 的歐拉通路當且僅當 \(u\) 的引出次數比引入次數大 1, \(v\) 的引入次數比引出次數大 1, \(D\) 中其他頂帶你引入次數和引出次數相同

哈密頓圖

哈密頓圈:穿過無向圖 \(G\) 中每個點一次且僅一次的圈位哈密頓圈

哈密頓回路:穿過有向圖 \(G\) 中每個頂點的基本回路為哈密頓回路

哈密頓圖:有 哈密頓圈 或 哈密頓回路 的圖稱為哈密頓圖

哈密頓鏈:穿過無向圖 \(G\) 中每個頂點的基本鏈為哈密頓鏈

哈密頓通路:穿過有向圖 \(G\) 中每個頂點的基本通路為哈密頓通路

性質

有哈密頓圖的必要條件: \(p(G-U)\leq|U|\)

有哈密頓鏈的必要條件:\(p(G-U)\leq|U|+1\)

有哈密頓鏈的充分條件:不相鄰頂點的次數之和 \(\geq n - 1\)

有哈密頓圖的充分條件:不相鄰頂點的次數之和 \(\geq n\)

有向完全圖中必存在哈密頓通路

強連通的有向完全圖中必存在哈密頓回路

二分圖匹配問題

基本概念

二分圖:設 \(G=<V,E>\) 是無向圖,若可以將 \(V\) 分成兩個非空子集 \(X\)\(Y\) ,並且使得同一子集中的任何兩個頂點都互不鄰接,則稱 \(G\) 為二分圖。

  • 只有一個頂點的圖不是二分圖

  • 若非平凡圖 \(G\) 的每個連通分量都是二分圖或平凡圖,則 \(G\) 是二分圖

  • 互補頂點子集分別有 \(p\) 個頂點和 \(q\) 個頂點的完全二分圖記為 \(K_{p,q}\)

匹配:設 \(G=<V,E>\) 是二分圖, \(M\subseteq E\) ,若 \(M\) 中任意兩條邊不相鄰,則稱 \(M\)\(G\) 的匹配

性質

若無向圖 \(G\) 中有長度為奇數的閉合鏈,則在 \(G\) 中有長度為奇數的圈

非平凡無向圖 \(G\) 是二分圖當且僅當 \(G\) 中的每個圈的長度都是偶數

二分圖最大匹配

最大匹配:邊數最多的匹配

交錯鏈:設 \(M\) 是二分圖 \(G\) 的匹配, \(P\)\(G\) 中的基本鏈,若 \(P\) 中任何相鄰的兩條邊中恰有一條屬於 \(M\) ,則稱 \(P\) 為關於 \(M\) 的交錯鏈

飽和頂點與非飽和頂點:設 \(M\) 是二分圖 \(G\) 的匹配,稱與 \(M\) 中的邊關聯的頂點為 \(M\) 的飽和頂點,稱不與 \(M\) 中任何邊關聯的頂點為 \(M\) 的非飽和頂點。

可擴充鏈:兩個端點都是匹配 \(M\) 的非飽和頂點的交錯鏈

性質

二分圖 \(G=<V,E>\) 的匹配 \(M\) 是最大匹配當且僅當 \(G\) 中不存在關於 \(M\) 的可擴充鏈

從 X 到 Y 的匹配

\(X\)\(Y\) 是二分圖 \(G\) 的互補頂點子集, \(M\)\(G\) 的匹配。若 \(X\) 中每個頂點都是 \(M\) 的飽和頂點,即是 \(M\) 中某條邊的端點,則稱 \(M\) 為從 \(X\)\(Y\) 的匹配。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM