图同构的矩阵初等变换判定及算法设计
圖同構問題
圖同構就是從頂點和邊的拓撲圖結構上來看, 兩個圖是否有可能以同樣的方式畫出。從鄰接矩陣角度來看, 通過對其中一個鄰接矩陣施加一系列的行和列的矩陣初等變換, 能否使兩者相等( 即同構)或永遠無法相等( 即不同構) 。
不幸的是, 判斷兩個圖是否同構是一件困難的事情。在兩個帶有 n 個頂點的圖的頂點集之間有n! 種可能的一一對應。若 n 太大, 則通過檢驗每一種對應來看它是否保持相鄰關系和不相鄰關系, 這樣做是不可行的, 是一個 NP 難問題。也就是說, 至今尚沒有一種簡單而有效地判斷圖的同構的方法( 即充分必要條件) , 這是圖論中的一個重要難題。
一些定義
0-1同化矩陣
rcxd( i, j)
rcad( i, j)
行碼距異或矩陣
行碼距同或矩陣
行- 行置換
定理和推論
定理 1 設無向圖 (G=(V, E)) , 鄰接矩陣的行列初等變換不改變行碼距異或矩陣/行碼距同或矩陣中各元素的值, 只是對行碼距異或矩陣/行碼距同或矩陣做同樣的行列初等變換。
定理 2 若兩個無向圖 (G=( V_1, E_1))和(H=( V_2, E_2))同構, 則經過一系列行列初等變換后, 圖 G 的鄰接矩陣與圖 H 的鄰接矩陣相等; 圖 G 的行碼距異或矩陣與圖 H 的行碼距異或矩陣相等; 圖 G 的行碼距同或矩陣與圖 H 的行碼距同或矩陣相等。
定理 3 設兩個無向圖(G=( V_1, E_1))和(H=( V_2, E_2)) , 圖 G 和H 同構, 當且僅當, 圖 G 的鄰接矩陣、行碼距異或矩陣、行碼距同或矩陣分別與圖 H 的鄰接矩陣、行碼距異或矩陣、行碼距同或矩陣具有同一的行-行置換。
推論 1 若下述四個條件中之一成立, 則無向圖(G=( V_1, E_1))和(H=( V_2, E_2))不同構。
圖 G 的行碼距異或矩陣中上三角形部分( 含主對角線上的元素) 中的所有元素之和, 不等于圖 H的行碼距異或矩陣中上三角形部分 ( 含主對角線上的元素) 中的所有元素之和;
圖 G 的行碼距異或矩陣中上三角形部分( 含主對角線上的元素) 中的所有元素立方之和, 不等于圖 H 的行碼距異或矩陣中上三角形部分( 含主對角線上的元素) 中的所有元素立方之和;
圖 G 的行碼距同或矩陣中上三角形部分( 含主對角線上的元素) 中的所有元素之和, 不等于圖 H 的行碼距同或矩陣中上三角形部分( 含主對角線上的元素) 中的所有元素之和;
圖 G 的行碼距同或矩陣中上三角形部分( 含主對角線上的元素) 中的所有元素立方之和, 不等于圖 H 的行碼距同或矩陣中上三角形部分( 含主對角線上的元素) 中的所有元素立方之和。
算法流程
計算行碼距異或/同或矩陣
計算鄰接矩陣/行碼距異或矩陣/行碼距同或矩陣的行- 行置換
計算鄰接矩陣/行碼距異或矩陣/行碼距同或矩陣的行列初等變換
計算行碼距異或/同或矩陣
計算鄰接矩陣/行碼距異或矩陣/行碼距同或矩陣的行- 行置換
計算鄰接矩陣/行碼距異或矩陣/行碼距同或矩陣的行列初等變換
應用舉例
圖 (G=( V_1, E_1))和(H=( V_2, E_2)); 具體的圖形如下所示:
求矩陣
圖 G 的鄰接矩陣、0- 1 同化矩陣、行碼距異或矩陣、行碼距同或矩陣如下:
圖 H 的鄰接矩陣、0- 1 同化矩陣、行碼距異或矩陣、行碼距同或矩陣如下:
尋找行-行置換
處理 (BY_G)中第 (u_1)行( 1, 3, 5, 4, 5) , 在 (BY_H)中尋找元素一樣的行, 找到第 (v_2)行( 5, 1, 4, 3, 5) ; 在 (BY_H、A_H、BT_H)中交換第 (v_1)行和第 (v_2)行, 以及第 (v_1)列和第 (v_2)列。初等變換后如 (BY_H^{(1)})所示。
處理 (BY_G)中第 (u_2)行( 3, 0, 4, 4, 4) , 在 (BY_H)中尋找元素一樣的行, 找到第 (v_4)行(3, 4, 4, 0, 4) ; 在 (BY_H、A_H、BT_H)中交換第 (v_2)行和第 (v_4)行, 以及第 (v_2)列和第 (v_4)列。初等變換后如 (BY_H^{(2)})所示。
處理 (BY_G)中第 (u_3)行( 5, 4, 1, 6, 3) , 在 (BY_H)中尋找元素一樣的行, 找到第 (v_1)行(5, 4, 6, 1, 3) ; 在 (BY_H、A_H、BT_H)中交換第 (v_3)行和第 (v_1)行, 以及第 (v_3)列和第 (v_1)列。初等變換后如 (BY_H^{(3)})所示。
處理 (BY_G)中第 (u_4)行( 4, 4, 6, 0, 9) , 在 (BY_H)中尋找元素一樣的行, 找到第 (v_3)行( 4, 4, 6, 0, 9) ; 在 (BY_H、A_H、BT_H)中不進行行- 行交換, 以及列- 列交換。
處理 (BY_G)中第 (u_5)行( 5, 4, 3, 9, 0) , 在 (BY_H)中尋找元素一樣的行, 找到第 (v_5)行( 5, 4, 3, 9, 0) ; 在 (BY_H、A_H、BT_H)中不進行行- 行交換, 以及列- 列交換。
得到圖 G 的鄰接矩陣 (A_G)、行碼距異或矩陣 (BY_G)、行碼距同或矩陣 (BT_G)分別與圖 H 的鄰接矩陣 (A_H)、行碼距異或矩陣(BY_H)、行碼距同或矩陣 (BT_H)之間同一的行- 行置換:
鄰接矩陣、行碼距異或矩陣、行碼距同或矩陣初等變換
處理 (BY_G)中上三角形部分( 含主對角線上的元素) 第 (u_1)列, $V_G^T = (1)^T, V_H^T = (1)^T $; 兩者相同, 不進行變換。
處理 (BY_G)中上三角形部分( 含主對角線上的元素) 第 (u_2)列, $V_G^T = (3, 0)^T, V_H^T = (3, 0)^T $; 兩者相同, 不進行變換。
處理 (BY_G)中上三角形部分( 含主對角線上的元素) 第 (u_3)列, $V_G^T = (5, 4, 1)^T, V_H^T = (5, 4, 1)^T $; 兩者相同, 不進行變換。
處理 (BY_G)中上三角形部分( 含主對角線上的元素) 第 (u_4)列, $V_G^T = (4, 4, 6, 0)^T, V_H^T = (4, 4, 6, 0)^T $; 兩者相同, 不進行變換。
處理 (BY_G)中上三角形部分( 含主對角線上的元素) 第 (u_5)列, $V_G^T = (5, 4, 3, 9, 0)^T, V_H^T = (5, 4, 3, 9, 0)^T $; 兩者相同, 不進行變換。
得到同構函數 $$F= (u_1 leftrightarrow v_2, u_2 leftrightarrow v_4, u_3 leftrightarrow v_1, u_4 leftrightarrow v_3, u_5 leftrightarrow v_5)$$
變換后圖 H 的圖形如下所示:
總結
本文提出了行碼距異或距離、行碼距同或距離、行碼距異或矩陣、行碼距同或矩陣等新的概念。在此基礎上, 找到了依據兩個圖的鄰接矩陣、行碼距異或矩陣、行碼距同或矩陣是否存在一個同一的行- 行置換來判定圖同構的充分必要條件。為了有效地進行矩陣的行列初等變換,提出了依據行碼距異或矩陣和行碼距同或矩陣的上三角形部分的列行匹配及交換, 來對鄰接矩陣進行行列初等變換的思想。在這些思想的指導下, 提出了三個算法( 行碼距異或/同或矩陣的計算算法; 鄰接矩陣/行碼距異或矩陣/行碼距同或矩陣的行- 行置換算法; 鄰接矩陣/行碼距異或矩陣/行碼距同或矩陣的行列初等變換算法) , 并對算法進行了算法分析, 得出運行時間為 (O(n^3)) 。
總結
以上是生活随笔為你收集整理的图同构的矩阵初等变换判定及算法设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现 Raft 协议
- 下一篇: 文心一言 VS 讯飞星火 VS chat