热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

集合的异或运算(对称差)

1、集合的异或运算(AΔB)定义属于A或属于B,但不同时属于A和B的元素的集合称为A和B的对称差,即A和B的异或。注:草绿色部分即为AΔB2、对称差(异或)运算的定律2.1AΔB

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 给出了异或和补集的转换公式,即异或和反码的转换


推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 南方CASS专题系列:全面教程、视频讲解与插件汇总
    本专题系列涵盖南方CASS的完整教程、详细视频讲解及实用插件,旨在帮助用户快速掌握该软件。南方CASS基于CAD平台开发,集成了地形图绘制、地籍管理、空间数据建库、工程应用和土石方计算等多项功能,广泛应用于测绘、工程等领域。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 探索12个能显著提升iPhone使用体验的隐藏技巧,掌握这些功能后,你会发现生活更加便捷高效。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
  • 亿航184:全球首款全电力自动驾驶载人飞行器
    北京时间2016年1月7日,中国智能无人机公司亿航在拉斯维加斯CES展会上发布了其革命性的全电力低空自动驾驶载人飞行器——亿航184。这款飞行器不仅实现了人类的全自动驾驶飞行,还为中短途交通出行提供了创新解决方案。 ... [详细]
  • 本文详细介绍了在 Windows 2000 系统中启用 TELNET 服务时需要注意的 NTLM 配置问题,帮助用户解决常见的身份验证失败错误。 ... [详细]
author-avatar
妹纸叫BLACK
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有