集合的異或運算(對稱差)


1、集合的異或運算(AΔB)定義
屬於A或屬於B,但不同時屬於A和B的元素的集合稱為A和B的對稱差,即A和B的異或。

image

注:草綠色部分即為 AΔB

2、對稱差(異或)運算的定律
2.1 AΔB = (A-B)∪(B-A) = (A∪B)-(A∩B)
該公式的證明已在 集合的證明及相關習題 中證明了

image
2.2 對稱差運算的交換律
(AΔB)ΔC = (AΔC)ΔB

image

注:圖1中草綠色部分為 (AΔB) ,三角形區域為 C ,(AΔB)ΔC  = 僅含草綠色或僅含三角形的區域
注:圖2中草綠色部分為 (AΔC) ,三角形區域為 B ,(AΔC)ΔB  = 僅含草綠色或僅含三角形的區域

證明:
(AΔB)ΔC
= [(A-B)∪(B-A)]△C         
= {[(A-B)∪(B-A)] - C} ∪ {C - [(A-B)∪(B-A)]}
轉換全部 '-' 號
= {[(A∩~B)∪(~A∩B)] ∩ (~C)} ∪ {C∩~[(A∩~B)∪(~A∩B)]}
對大括號的2部分分別進行公式化解

左邊部分:
{[(A∩~B)∪(~A∩B)] ∩ (~C)}
將(A∩~B)和(~A∩B)當整體,根據分配律
{[(A∩~B)∪(~A∩B)] ∩ (~C)}
= {[(A∩~B)∩(~C)]∪[(~A∩B)∩(~C)]}
根據結合律
= {(A∩~B∩~C)∪(~A∩B∩~C)}

右邊部分:
{C∩~[(A∩~B)∪(~A∩B)]}
根據De.Morgen定律,將~移進去
= {C∩[~(A∩~B)∩~(~A∩B)]}
根據De.Morgen定律,繼續將~移進去
= {C∩[(~A∪~~B)∩(~~A∪~B)]}
∵~~B = B,~~A = A
∴{C∩[(~A∪~~B)∩(~~A∪~B)]} = {C∩[(~A∪B)∩(A∪~B)]}
將(~A∪B)當作整體,繼續用分配律處理[(~A∪B)∩(A∪~B)]
[(~A∪B)∩(A∪~B)]
= [(~A∪B)∩A]∪[(~A∪B)∩~B)]
繼續分配律
= [(~A∩A)∪(B∩A)]∪[(~A∩~B)∪(B∩~B)]
= [φ∪(B∩A)]∪[(~A∩~B)∪φ]
= (B∩A)∪(~A∩~B)
∴{C∩[(~A∪B)∩(A∪~B)]} = {C∩(B∩A)∪(~A∩~B))
將(B∩A)和(~A∩~B)分別當作整體,根據分配律
= (A∩B∩C)∪(~A∩~B∩C)

∴(AΔB)ΔC = {(A∩~B∩~C)∪(~A∩B∩~C)} ∪ (A∩B∩C)∪(~A∩~B∩C)
根據以上步驟,將B看着C,同理可推得:
(AΔC)ΔB = {(A∩~C∩~B)∪(~A∩C∩~B)} ∪ (A∩C∩B)∪(~A∩~C∩B)
根據結合律:
(AΔC)ΔB = {(A∩~B∩~C)∪(~A∩B∩~C)} ∪ (A∩B∩C)∪(~A∩~B∩C)
∴(AΔB)ΔC = (AΔC)ΔB
點評:該證明過程重點在於將2個類似的式子轉化為可用結合律移動位置的中間表達式,從而得證

3、集合的異或運算在計算機中的應用
3.1 證明:當 AΔB = C 時,AΔC = B

即典型的異或運算 A xor B = C,A xor C = B
在編程中常用該可逆運算對數據 B 異或一個常量 A 轉換后進行加密保護,當要還原數據B時,再次用 C 異或常量 A 即可得到B

image 
注:圖1中草綠色部分即為 AΔB = C
    圖2中草綠色部分即為 C,三角形區域為 A,AΔC = 僅有草綠色或僅有三角形的區域 = B

證明:
∵AΔB = C
∴C = (A∪B)-(A∩B)
將C代入到AΔC中
AΔC = AΔ[(A∪B)-(A∩B)]
= {A∪[(A∪B)-(A∩B)]} - {A∩[(A∪B)-(A∩B)]}
先處理左邊式子
{A∪[(A∪B)-(A∩B)]}
= A∪{(A∪B)∩[~(A∩B)]}
將 (A∪B) 和 [~(A∩B)]看着整體,根據分配律
= [A∪(A∪B)] ∩ {A∪[~(A∩B)]}
= (A∪B) ∩ {A∪[~(A∩B)]}
根據De.morgen定律
= (A∪B) ∩ {A∪[~A∪~B)]}
= (A∪B) ∩ {(A∪~A)∪~B}
= (A∪B) ∩ {E∪~B}
= (A∪B) ∩ E
= (A∪B)

再處理右邊式子
{A∩[(A∪B)-(A∩B)]}
= A∩{(A∪B)∩[~(A∩B)]}
= A∩(A∪B)∩[~(A∩B)]
根據吸收律反推
A∩(A∪B) = A
A∩(A∪B)∩[~(A∩B)] = A∩[~(A∩B)]

合並左右式子
AΔC = (A∪B) - {A∩[~(A∩B)]}
將[~(A∩B)]看着整體,根據De.morgen定律
(A∪B) - {A∩[~(A∩B)]} = (A∪B) ∩ {~ {A∩[~(A∩B)]}}
再次根據De.morgen定律
= (A∪B) ∩ {~A∪~[~(A∩B)]}
= (A∪B) ∩ {~A∪(A∩B)}
= (A∪B) ∩ {~A∪(A∩B)}
根據分配律
= (A∪B) ∩ {(~A∪A)∩(~A∪B)}
= (A∪B) ∩ {E∩(~A∪B)}
= (A∪B) ∩ (~A∪B)
根據分配律倒推
= B∪(A∩~A)
= B∪(φ)
= B
∴AΔC = B

3.2 《離散數學及其應用》第6版P83 21 題
證明:當 AΔB = AΔC時,是否有B = C
即如果2個數和同一個常量 A 進行異或后的結果相等,那么這兩個數必定相等,這是 ∪∩ 等運算沒有的性質

證明:
∵AΔB = AΔC = D
根據上面證明:當 AΔB = D 時,AΔD = B(將上面證明中的C換成D,以免歧義)
同理
∵AΔC = D
∴AΔD = C = B
∴C = B

3.3 《離散數學及其應用》第6版P83 19 題
證明:若A是全集E的子集,則:
a) AΔA= Φ  b) AΔΦ = A
c) AΔE= ~A d) AΔ(~A)= E

a) 證明:
AΔA= (A-A)∪(A-A) = Φ∪Φ = Φ
b) 證明:
AΔΦ = (A∪Φ)-(A∩Φ) = A-Φ = A
c) 證明:
AΔE= (A∪E)-(A∩E) = E-A = ~A
d) 證明:
AΔ(~A)= (A∪~A)-(A∩~A) = E-Φ = E

點評:此4組證明a和b是一組,互為可逆運算,c和d是一組,互為可逆運算,這也是異或運算的重要性質
a) AΔA= Φ 即表示 A xor A = 0
這在匯編中經常用來給寄存器清0操作:xor eax, eax(因為只需要1個字節的命令,其他指令都要2個以上的字節)
c) AΔE= ~A 給出了異或和補集的轉換公式,即異或和反碼的轉換


免責聲明!

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



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