【集合論】關係閉包 ( 關係閉包求法 | 關係圖求閉包 | 關係矩陣求閉包 | 閉包運算與關係性質 | 閉包複合運算 )

韓曙亮發表於2020-10-08





一、閉包求法



R R R 關係是 A A A 集合上的二元關係 , R ⊆ A R \subseteq A RA , A A A 集合不為空集 , A ≠ ∅ A \not= \varnothing A=


求自反閉包 : r ( R ) = R ∪ I A r(R) = R \cup I_A r(R)=RIA , 給每個頂點新增環 ;

  • 如果 R R R 關係是自反的 , 當且僅當 , I A ⊆ R I_A \subseteq R IAR

求對稱閉包 : s ( R ) = R ∪ R − 1 s(R) = R \cup R^{-1} s(R)=RR1

  • 原來 沒有有向邊 ( 有序對 ) , 自然也沒有對應的逆 , 此時不新增邊
  • 原來 有一條有向邊 ( 有序對 ) , 再新增一個反向的有向邊 , 組成 關係圖中的 頂點間的 雙向有向邊
  • 原來 有兩條有向邊 ( 有序對 ) , 此時就不用新增其它邊
  • 如果 R R R 關係是對稱的 , 當且僅當 , R = R − 1 R = R^{-1} R=R1

求傳遞閉包 : t ( R ) = R ∪ R 2 ∪ R 3 ∪ ⋯ t(R) = R \cup R^2 \cup R^3 \cup \cdots t(R)=RR2R3

R R R 關係所有的冪運算值並起來 , 就是其傳遞閉包 , R R R 關係的 1 1 1 次冪 , R R R 關係的 2 2 2 次冪 , R R R 關係的 3 3 3 次冪 , ⋯ \cdots , R R R 關係的 n n n 次冪 , 並起來 , 就是其傳遞閉包 ;

如果 A A A 是有窮集 , 其關係也是有窮的 , 求出其所有的 n n n 次冪 , 不用求出很多冪運算 , 因為關係的冪運算後面都是迴圈的 , 求出已知的所有 n n n 次冪 取 並集即可 ;

如果 R R R 關係是傳遞的 , 當且僅當 , R 2 ⊆ R R^2 \subseteq R R2R





二、求閉包示例 ( 關係圖角度 )



集合 A = { a , b , c , d } A = \{ a, b, c , d \} A={a,b,c,d}

關係 R = { < a , b > , < b , a > , < b , c > , < c , d > } R = \{ <a,b> , <b,a> , <b,c> , <c,d> \} R={<a,b>,<b,a>,<b,c>,<c,d>}

求關係 R R R 的自反閉包 r ( R ) r(R) r(R) , 對稱閉包 s ( R ) s(R) s(R) , 傳遞閉包 t ( R ) t(R) t(R)



在這裡插入圖片描述

求自反閉包 : 就是給每個頂點加上環 :

在這裡插入圖片描述


求對稱閉包 :頂點間 單向邊改成雙向邊 , 不管 頂點間雙向邊 和 頂點間沒有邊 的情況 ;

在這裡插入圖片描述

求傳遞閉包 : 將能到的點直接連起來 ;

  • a 可以到 b , 路徑 a -> b ; a 可以到 c , 路徑是 a -> b -> c ; a 可以到 d , 路徑是 a -> b -> c -> d ; 因此新增 a 到 c , d 的有向邊 ;
  • b 可以到 a , 路徑 b -> a ; b 可以到 c , 路徑是 b -> c ; b 可以到 d , 路徑是 b -> c -> d ; 因此新增 b 到 d 的有向邊 ;
  • c 可以到 d , 路徑 c -> d ; 沒有可連線的邊 ;
  • d 哪都到不了 , 沒有可連線的邊 ;
  • 另外出現雙向邊時 , 兩個頂點必須加環 ;

在這裡插入圖片描述





三、求閉包示例 ( 關係矩陣角度 )



關係 R = { < a , b > , < b , a > , < b , c > , < c , d > } R = \{ <a, b> , <b,a> , <b,c> , <c,d> \} R={<a,b>,<b,a>,<b,c>,<c,d>}

使用關係矩陣方法求其 自反閉包 , 對稱閉包 , 傳遞閉包 ;


將上述關係寫成矩陣形式為 :

M ( R ) = [ 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 ] M(R) = \begin{bmatrix} 0 & 1 & 0 & 0 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} M(R)=0100100001000010


自反閉包 : 將主對角線值 , 全部改成 1 1 1 , 左上角到右下角為主對角線 ;

M ( r ( R ) ) = [ 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 ] M(r(R)) = \begin{bmatrix} 1 & 1 & 0 & 0 \\\\ 1 & 1 & 1 & 0 \\\\ 0 & 0 & 1 & 1 \\\\ 0 & 0 & 0 & 1 \end{bmatrix} M(r(R))=1100110001100011


對稱閉包 : 主對角線兩端要對稱 , 以對角線為基準 , 使對角線兩邊的值對稱 ;

M ( s ( R ) ) = [ 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 ] M(s(R)) = \begin{bmatrix} 0 & 1 & 0 & 0 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 1 \\\\ 0 & 0 & 1 & 0 \end{bmatrix} M(s(R))=0100101001010010


傳遞閉包 : 求該關係矩陣的 二次冪 , 三次冪 , 四次冪 , ⋯ \cdots , 直到出現相同的迴圈的值為止 ;

將上述所有的不同的 矩陣冪運算 進行邏輯相加 ( 或 ) 操作 , 就是其傳遞閉包對應的矩陣 , 計算機演算法適合使用該方法 , 如果人計算 , 還是關係圖比較形象 ;

參考 : 【集合論】關係表示 ( 關係矩陣 | 關係矩陣示例 | 關係矩陣性質 | 關係矩陣運算 | 關係圖 | 關係圖示例 | 關係表示相關性質 ) 四、關係矩陣運算

注意逆序合成

M ( R 2 ) = M ( R ∘ R ) = M ( R ) ∙ M ( R ) = [ 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 ] ∙ [ 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 ] = [ 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 ] M(R^2) = M(R \circ R) = M(R) \bullet M(R) =\begin{bmatrix} 0 & 1 & 0 & 0 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} \bullet \begin{bmatrix} 0 & 1 & 0 & 0 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} M(R2)=M(RR)=M(R)M(R)=01001000010000100100100001000010=1000010010000100

M ( R 3 ) = M ( R 2 ∘ R ) = M ( R ) ∙ M ( R 2 ) = [ 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 ] ∙ [ 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 ] = [ 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 ] M(R^3) = M(R^2 \circ R) = M(R) \bullet M(R^2) = \begin{bmatrix} 0 & 1 & 0 & 0 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} \bullet \begin{bmatrix} 1 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} = \begin{bmatrix} 0 & 1 & 0 & 1 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} M(R3)=M(R2R)=M(R)M(R2)=01001000010000101000010010000100=0100100001001000

M ( R 4 ) = M ( R 3 ∘ R ) = M ( R ) ∙ M ( R 3 ) = [ 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 ] ∙ [ 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 ] = [ 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 ] = M ( R 2 ) M(R^4) = M(R^3 \circ R) = M(R) \bullet M(R^3) =\begin{bmatrix} 0 & 1 & 0 & 0 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} \bullet \begin{bmatrix} 0 & 1 & 0 & 1 \\\\ 1 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 1 & 0 \\\\ 0 & 1 & 0 & 1 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} = M(R^2) M(R4)=M(R3R)=M(R)M(R3)=01001000010000100100100001001000=1000010010000100=M(R2)

因此其 R 4 R^4 R4 之後的冪運算值 , 偶數次冪關係矩陣與 M ( R 2 ) M(R^2) M(R2) 值相同 , 奇數次冪關係矩陣與 M ( R 3 ) M(R^3) M(R3) 值相同 ;

M ( t ( R ) ) = M ( R ) ∨ M ( R 2 ) ∨ M ( R 3 ) = [ 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 ] M(t(R)) = M(R) \lor M(R^2) \lor M(R^3) =\begin{bmatrix} 1 & 1 & 1 & 1 \\\\ 1 & 1 & 1 & 1 \\\\ 0 & 0 & 0 & 0 \\\\ 0 & 0 & 0 & 0 \end{bmatrix} M(t(R))=M(R)M(R2)M(R3)=1100110011001100





四、閉包運算與關係性質



自反性對稱性傳遞性
r ( R ) r(R) r(R) 1 1 1 ( 本身性質 ) 1 1 1 1 1 1
r ( R ) r(R) r(R) 1 1 1 1 1 1 ( 本身性質 )
r ( R ) r(R) r(R) 1 1 1 1 1 1 1 1 1 ( 本身性質 )

上述表格中值為 1 1 1 , 說明原來存在該性質 , 求對應的 自反/對稱/傳遞 閉包後 , 仍具有該性質 , 反之不具有該性質 ;


表格第二行含義 : r ( R ) r(R) r(R) 對應的行 ;

  • 自反性 : 假如 R R R 原來是自反的 , 那麼 r ( R ) r(R) r(R) 也是自反的 ;
  • 對稱性 : 假如 R R R 原來是對稱的 , 那麼 r ( R ) r(R) r(R) 也是對稱的 ; 求自反閉包 , 只是給頂點加環 , 不影響對稱性 ;
  • 傳遞性 : 假如 R R R 原來是傳遞的 , 那麼 r ( R ) r(R) r(R) 也是傳遞的 ; 求自反閉包 , 只是給頂點加環 , 不影響傳遞性 ;

僅有一個特例 : 原來 R R R 是傳遞的 , 如果求對稱閉包 , 其對稱閉包的傳遞性就不存在了 ;



表格第二列說明 ( 自反性 ) : 如果 R R R 關係是自反的 , 那麼其 對稱閉包 s ( R ) s(R) s(R)傳遞閉包 t ( R ) t(R) t(R) 也是自反的 ;

R 自 反 ⇒ s ( R ) 和 t ( R ) 自 反 R 自反 \Rightarrow s(R) 和 t(R) 自反 Rs(R)t(R)


表格第三列說明 ( 對稱性 ) : 如果 R R R 關係是對稱的 , 那麼其 自反閉包 r ( R ) r(R) r(R)傳遞閉包 t ( R ) t(R) t(R) 也是對稱的 ;

R 對 稱 ⇒ r ( R ) 和 t ( R ) 對 稱 R 對稱 \Rightarrow r(R) 和 t(R) 對稱 Rr(R)t(R)


表格第四列說明 ( 傳遞性 ) : 如果 R R R 關係是傳遞的 , 那麼其 自反閉包 r ( R ) r(R) r(R) 也是傳遞的 ;

R 傳 遞 ⇒ r ( R ) 傳 遞 R 傳遞 \Rightarrow r(R) 傳遞 Rr(R)





五、閉包複合運算



R R R 關係是 A A A 集合上的二元關係 , R ⊆ A R \subseteq A RA , A A A 集合不為空集 , A ≠ ∅ A \not= \varnothing A=


1. r s ( R ) = s r ( R ) rs(R) = sr(R) rs(R)=sr(R) :

  • rs( R ) : 先求 R R R 關係的 自反閉包 , 然後再求自反閉包的 對稱閉包
  • sr( R ) : 先求 R R R 關係的對稱閉包 , 然後再求對稱閉包的自反閉包
  • 上述兩個閉包運算的 結果相同

2. r t ( R ) = t r ( R ) rt(R) = tr(R) rt(R)=tr(R)

  • rt( R ) : 先求 R R R 關係的 自反閉包 , 然後再求自反閉包的 傳遞閉包
  • tr( R ) : 先求 R R R 關係的傳遞閉包 , 然後再求傳遞閉包的自反閉包
  • 上述兩個閉包運算的 結果相同

3. s t ( R ) ⊆ t s ( R ) st(R) \subseteq ts(R) st(R)ts(R)

  • st( R ) : 先求 R R R 關係的 對稱閉包 , 然後再求對稱閉包的 傳遞閉包
  • ts( R ) : 先求 R R R 關係的傳遞閉包 , 然後再求傳遞閉包的對稱閉包
  • 上述兩個閉包運算的結果 , t s ( R ) ts(R) ts(R) 關係 包含 t s ( R ) ts(R) ts(R) 關係 ;

相關文章