首页
学习
活动
专区
圈层
工具
发布

【程序中的数学】利用德摩根定律简化布尔运算

方向找对后,我很快就找到了解决方案,那就是离散数学里的德摩根定律(De Morgan's laws)[1] 。...二、什么是德摩根定律 德摩根定律我们其实很早就接触过了,高中数学的集合部分就讲过,大学离散数学[2]的集合运算和布尔代数部分也有所提及。...德摩根定律在离散数学的很多场景里都出现过,它一共有两个关系: 在命题逻辑里,可以这样表示: 其中 表示逻辑非运算符(NOT, !)...在布尔代数里可以这样表示: 其中 表示布尔积(AND), 表示布尔和(OR),上划线表示补(NOT)。...三、解决问题 具体到我一开始说的那个条件判断上,我们可以用德摩根定律把原表达式拆开: !((A && B) || C) == !(A && B) && !C // 德摩根律 == (!

2.8K20

组合逻辑硬件建模设计(一)逻辑门

最小化技术有K-映射(K-map)、布尔代数(Boolean algebra)、香农展开定理(Shannon’s expansion theorems)和超平面(hyper planes)。...NOR逻辑的真值表如表2.3所示。NOR逻辑是泛逻辑门,反AND是NOR,这就是德摩根斯定理(德·摩根定律在数理逻辑的定理推演中,在计算机的逻辑设计中以及数学的集合运算中都起着重要的作用。...他的发现影响了乔治·布尔从事的逻辑问题代数解法的研究。这巩固了德摩根作为该规律的发现者的地位,尽管亚里士多德也曾注意到类似现象,且这也为古希腊与中世纪的逻辑学家熟知。该定律也被称作反演律。)。...根据DeMorgan定理,冒泡OR相当于两输入逻辑的NAND a_in b_in y_out 0 0 1 0 1 1 1 0 1 1 1 0 表2.5真值表 图2.5综合后两输入NAND逻辑 综合后的...示例2.6双输入异或XOR逻辑的可合成Verilog代码。注:异或门可以使用两个输入与非门实现。实现两个输入异或门所需的两个输入与非门的数量等于4。

1.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    计算机科学概论复习笔记(4)

    电路:相互关联的门的组合,用于实现特定的逻辑函数 布尔代数 英国数学家George Boole 发明了布尔运算,其变量和函数的值只能是0或1....布尔代数是表示二值逻辑函数的数学表示法 逻辑框图 逻辑框图是电路的图形化表示,每种类型的门都有自己的专用符号 真值表 真值表:列出了所有可能的输入值和相关的输出值的表 门 非(NOT)门 与(AND)门...或门 或门当且仅当两个输入为0的时候,输出为0,否则为1 异或门 异或门两个输入相同,那么它输出0 两个输入不同,就输出1 与非门和或非门 与非门 或非门 与非门和或非门分别是与门和或门求逆之后的结果...组合电路 上面这个电路可以用这个布尔表达式来表示 (AB+AC) 仔细观察会发现,对于每组输入,上面两个电路的输出都是一样的,也就是说这两个电路等价。...电路等价:对于每个输入值集合,两个电路都生成完全相同的输出 电路等价其实是布尔代数的属性决定的 德·摩根定律:对两个变量的与操作的结果进行非操作,等于对每个变量进行非操作后再对他们进行或操作。

    69430

    有哪些算法因德摩根定律性能提升?

    德摩根定律(De Morgan's Laws)虽然本身是一个逻辑学上的定理,但在某些算法和计算场景中,它确实可以通过简化布尔表达式或优化条件判断来间接提升性能。...布尔网络与布尔控制网络 4.1 布尔网络 应用背景:布尔网络是一种离散动态系统模型,广泛应用于生物学、基因调控网络等领域。 如何受益: 使用德摩根定律可以简化布尔表达式,从而减少计算量和存储需求。...4.2 布尔控制网络 应用背景:布尔控制网络是布尔网络的一种扩展,引入了外部控制输入。 如何受益: 类似于布尔网络,使用德摩根定律可以简化控制逻辑,从而提高系统的响应速度和稳定性。 5....自然语言处理中的布尔检索 6.1 布尔检索 应用背景:在信息检索系统中,布尔检索根据用户的查询条件返回相关文档。 如何受益: 使用德摩根定律可以优化查询条件,使其更高效地匹配索引结构。...尽管德摩根定律本身并不是直接优化算法的工具,但它在许多涉及布尔逻辑的场景中具有重要作用。

    28400

    逻辑代数

    分析与设计数字电路的基础是逻辑代数,由英国数学家Geroge Boole在1847年提出的,故逻辑代数也称布尔代数。...在逻辑代数中,变量常用字母A,B,C,……,X,a,b,c,……,z等表示,变量的取值只能是0或1,这种变量称为逻辑变量。 逻辑代数中只有三种基本逻辑运算:“与”、“或”、“非”。...四、与非逻辑(将与逻辑和非逻辑组合) 先做一次与运算,再做一次非运算。 与非逻辑表达式:$F = \bar{AB}$ ?...与非门的逻辑功能概括: (1)有“0”出“1”; (2)全“1”出“0”; 五、或非逻辑(将或逻辑与非逻辑组合) 先做一次或运算,再做一次非运算 或非逻辑表达式:$F = \bar{A+B}$...(1)相同出“1”; (2)相异出“0”; 同或与异或互为反,公式类似于概率论中的德摩根律(交的补等于补的并),没看过这篇文章的请点击传送门

    96150

    德摩根定律如何应用到人工智能?

    机器学习与布尔逻辑 3.1 特征选择与组合 在机器学习中,特征的选择和组合通常涉及布尔逻辑。德摩根定律可以帮助简化特征表达式,减少冗余特征。...3.2 模型解释性 在解释复杂模型时,布尔逻辑表达式常用于描述模型的决策路径。德摩根定律可以帮助简化这些表达式,使其更易于理解。...数据库与查询优化 4.1 SQL 查询优化 在数据库查询中,布尔逻辑条件通常用于过滤数据。德摩根定律可以帮助优化查询条件,提高查询效率。...4.2 布尔索引优化 在布尔索引(Boolean Indexing)中,德摩根定律可以帮助减少计算量。例如,在 Pandas 或 NumPy 中,布尔数组的逻辑操作可以通过德摩根定律优化。...6.2 游戏AI 在游戏AI中,NPC的行为逻辑通常由布尔条件控制。德摩根定律可以帮助简化这些条件,使行为逻辑更高效且易于维护。 7.

    26610

    德摩根定律如何优化机器学习模型?

    复杂的布尔特征组合可能增加计算复杂度并降低模型的可解释性。 德摩根定律可以帮助将复杂的布尔逻辑特征转化为等价但更简单的形式,从而减少冗余特征。...德摩根定律可以帮助简化这些布尔条件,从而使决策树更加紧凑和高效。...德摩根定律通过化简逻辑表达式,使模型的决策路径更加直观。...查询与数据处理优化 4.1 数据预处理 在机器学习的数据预处理阶段,布尔逻辑常用于过滤和选择样本。德摩根定律可以帮助优化这些布尔条件,从而加速数据处理。...4.2 特征生成 在生成新特征时,布尔逻辑表达式可以用来定义复杂的条件。使用德摩根定律可以确保这些条件尽可能简洁,从而避免不必要的复杂性。

    18110

    (四)《数字电子技术基础》——逻辑代数基础

    值得注意的是,反演律是特别重要的一条定理,也叫做德.摩根 定理; (A*)*中的*是对偶的意思,在后面会介绍。 证明 异或运算 这部分在离散数学中没有提到很多,我们来详细介绍一下。...代入定理        所谓代入定理,是指在任何一个包含变量A的逻辑等式中,若以另外一个逻辑式代入式中所有A的位置,则等式仍然成立。我们来简单运用一下,证明一下德摩根定理的拓展形式。...反演定理         所谓反演定理,是指对于任意一个逻辑式Y,若将其中所有的 “ · ” 换成 “+”,“+”换成“ · ”,“0”换成“1”,“1”换成“0”,原变量换成反变量,反变量换成原变量,...规则 遵守“先括号,然后乘,最后加” 不属于单个变量上的反号应保留不变 对偶定理         若两逻辑式相等,则它们的对偶式也相等,这就是对偶定理。         ...所谓对偶式,即:对于任何一个逻辑式Y,若将其中的“·”换成“+”,“+”换成“·”,“0”换成“1”,“1”换成“0”,则可得到一个新的逻辑式Y*, Y*即为Y的对偶式,或者Y与Y*互为对偶式 。

    91830

    数理逻辑-布尔代数

    布尔代数简介 英国数学家G.布尔为了研究思维规律(逻辑学、数理逻辑)于1847和1854年提出的数学模型。...布尔代数由于缺乏物理背景,所以研究缓慢,到了20世纪30~40年代才有了新的进展,大约在 1935年,M.H.斯通首先指出布尔代数与环之间有明确的联系,他还得到了现在所谓的斯通表示定理:任意一个布尔代数一定同构于某个集上的一个集域...、逻辑学家德·摩根.摩根在19世纪前半叶卷入了一场著名的争论,布尔知道摩根是对的,于是在1848年出版了一本薄薄的小册子来为朋友辩护。...这本书是他6年后更伟大的东西的预告,它一问世,立即激起了摩根的赞扬,肯定他开辟了新的、棘手的研究科目。...有时也被称为布尔代数的一个相关主题是布尔逻辑,它可以被定义为是所有布尔代数所公有的东西.它由在布尔代数的元素间永远成立的关系组成,而不管你具体的那个布尔代数.因为逻辑门和某些电子电路的代数在形式上也是这样的

    1.6K10

    FPGA零基础学习:FPGA芯片简介

    例如:诺顿定理(Nortons theorem)和戴维南定理(Thevenin's theorem)。在这里这两个定理不做过多介绍,有兴趣的读者可以自行查询。...在数字组合逻辑电路设计时,给出真值表后,容易得出一个布尔表达式。布尔表达式我们可以化简,化简的每个阶段,我们都可以做出对应的电路图。那么这些电路都是等效电路,只是电路延迟可能会有细微的差距。...在学习数字电路基础时,布尔表达式化简完后,经常让我们化简为与非的形式,也就是说最后的电路都要用与非门来实现?这件事情怎么证明呢?...只要证明与非门可以实现这三种逻辑门的功能就可以证明与非门可以实现所有的电路功能。 在图4中已经证明与非门可以实现与门。下面给出与非门实现或门(图5)和与非门实现非门(图6)。...图8 :二选一多路选择器的真值表 根据数字组合逻辑电路的设计方法,首先做出布尔表达式,经过化简,得出简化后的布尔表达式,最后做出电路。

    1.5K20

    FPGA零基础学习:FPGA芯片简介

    例如:诺顿定理(Nortons theorem)和戴维南定理(Thevenin's theorem)。在这里这两个定理不做过多介绍,有兴趣的读者可以自行查询。...在数字组合逻辑电路设计时,给出真值表后,容易得出一个布尔表达式。布尔表达式我们可以化简,化简的每个阶段,我们都可以做出对应的电路图。那么这些电路都是等效电路,只是电路延迟可能会有细微的差距。...在学习数字电路基础时,布尔表达式化简完后,经常让我们化简为与非的形式,也就是说最后的电路都要用与非门来实现?这件事情怎么证明呢?...只要证明与非门可以实现这三种逻辑门的功能就可以证明与非门可以实现所有的电路功能。 在图4中已经证明与非门可以实现与门。下面给出与非门实现或门(图5)和与非门实现非门(图6)。 ?...图8 :二选一多路选择器的真值表 根据数字组合逻辑电路的设计方法,首先做出布尔表达式,经过化简,得出简化后的布尔表达式,最后做出电路。 如果需要一个二选一多路选择器的等效电路,不关心内部是如何实现的。

    1.3K20

    Java 操作符:Java 中操作符优先级、一二三元操作符及逻辑操作符的中德模佛定理

    三、Java 中唯一的三元操作符 四、逻辑操作符中的德模佛定理 总结 前言 在 Java 中我们常见的操作符分为三种,分别是逻辑操作符、关系操作符、算术操作符,其优先级和结合规则确定了操作符计算的顺序...德模佛定理又该如何应用呢?本文来带你详细了解。...一、操作符介绍与优先级表 我们常见的操作符分为三种,其优先级为:逻辑操作符 < 关系操作符 < 算术操作符 逻辑操作符(也称布尔操作符),是对布尔值进行的运算,它会创建新的布尔值。包括:非(!)...四、逻辑操作符中的德模佛定理 德模佛定理是以印度出生的英国数学家和逻辑学家奥古斯都▪德▪模佛来命名的(1806——1871),这个定理可以用来简化表达式。 定义描述如下: !...number % 3 == 0 总结 本文给大家介绍了 Java 中操作符优先级、一二三元操作符以及逻辑操作符中德模佛定理。这些都是 Java 的基础,基础扎实,后期才可以稳步提升。

    1.5K30

    逻辑电路&代数运算(上)

    0、1不表示数的大小,而是代表两种不同的逻辑状态。 正、负逻辑规定: 正逻辑体制规定:高电平为逻辑1,低电平为逻辑0。 负逻辑体制规定:低电平为逻辑1,高电平为逻辑0。...E7%9B%B8%E5%99%A8 与非、或非、异或、同或 与非:输入都为1时,输出为0 或非:输入都为0时,输出为1 异或:输入不相同时,输出为1 同或:输入相同时,输出为1 与非NAND 与非门...(英语:NAND gate)是数字逻辑中实现逻辑与非的逻辑门。...与非门是一种通用的逻辑门,因为任何布尔函数都能用与非门实现。 真值表: 只有在A和B都为1时,结果才为1。...德·摩根定律 (A+B)'=A'B',(AB)'=A'+B' 并集的补集是补集的交集,交集的补集是补集的并集 逻辑函数基础 基本规则 代入规则 任何一个含有变量 X 的等式,如果将所有出现

    84320

    逻辑电路&代数运算(上)

    0、1不表示数的大小,而是代表两种不同的逻辑状态。正、负逻辑规定:正逻辑体制规定:高电平为逻辑1,低电平为逻辑0。负逻辑体制规定:低电平为逻辑1,高电平为逻辑0。.../%E5%8F%8D%E7%9B%B8%E5%99%A8与非、或非、异或、同或与非:输入都为1时,输出为0或非:输入都为0时,输出为1异或:输入不相同时,输出为1同或:输入相同时,输出为1与非NAND与非门...(英语:NAND gate)是数字逻辑中实现逻辑与非的逻辑门。...与非门是一种通用的逻辑门,因为任何布尔函数都能用与非门实现。图片真值表:只有在A和B都为1时,结果才为1。...德·摩根定律(A+B)'=A'B',(AB)'=A'+B'并集的补集是补集的交集,交集的补集是补集的并集逻辑函数基础基本规则代入规则任何一个含有变量 X 的等式,如果将所有出现 X 的位置,都代之以一个逻辑函数

    95630

    关于 Java 中操作符优先级、一二三元操作符以及逻辑操作符中德模佛定理小结

    三、Java 中唯一的三元操作符 四、逻辑操作符中德模佛定理 总结 ---- 前言 关于 Java 中操作符优先级、一二三元操作符以及逻辑操作符中德模佛定理小结。...---- 优先级:逻辑操作符 < 关系操作符 < 算术操作符 逻辑操作符(也称布尔操作符),是对布尔值进行的运算,它会创建新的布尔值。包括:非(!)、与(&&)、或(||)、异或(^)。...表达式1: 表达式2) 如果布尔表达式的值为 true,则条件表达式的结果为表达式 expression1,否则结果为 expression2。 四、逻辑操作符中德模佛定理 ?...德模佛定理是以印度出生的英国数学家和逻辑学家奥古斯都▪德▪模佛来命名的(1806——1871),这个定理可以用来简化表达式。 定义描述如下: !(condition1 && condition2)和!...number % 3 == 0 ---- 总结 本文给大家介绍了 Java 中操作符优先级、一二三元操作符以及逻辑操作符中德模佛定理。这些都是 Java 的基础,基础扎实,后期才可以稳步提升。

    1.2K41

    学完计组后,我马上在「我的世界」造了台显示器,你敢信?

    此时可以用摩根定律来求出与门的等价逻辑表达式: ? 摩根定律 即两个输入端各搭非门,合并信号后再加个非门。如下图所示,只有当两个输入端都有信号时,输出端才输出。 ?...但是在实际应用中,我们不得不提到下面这个逻辑门——与非门。 与非门 在集成电路中,与非门和或非门是仅次于非门的第二简单的门,但与非门比或非门性能好,而且用与非门可以实现任意逻辑表达式。...这么高的性价比,与非门确实是有资格作为表达式的终极化简因子的。 在手工设计电路时,如果可以的话,工程师是倾向于用与非门的,后续我们设计电路时,也倾向于把表达式转换为与非门。...逻辑图 当 A,B 端同时输入信号时,Y 端才不输出信号。其他情况时,Y 端都输出。 与非门逻辑表达式为∶ ? 与非逻辑表达式 逻辑图为: ?...编码器逻辑图 即输入端各搭非门,按逻辑表达式加与非门。 实现图 这是我们的五个输入端,第一个消隐端/总开关将在下面的小节进行讲解,后面四个就是我们可以选择的数字。 ?

    1.3K41

    Python:编写条件分支代码的技巧

    使用“德摩根定律” 在做分支判断时,我们有时候会写成这样的代码: # 如果用户没有登录或者用户没有使用 chrome,拒绝提供服务 if not user.has_logged_in or not user.is_from_chrome...这是因为上面的逻辑表达式里面出现了 2 个 not和 1 个 or。而我们人类恰好不擅长处理过多的“否定”以及“或”这种逻辑关系。 这个时候,就该 德摩根定律 出场了。...通俗的说,德摩根定律就是 not A or not B 等价于 not (A and B)。...记住德摩根定律,很多时候它对于简化条件分支里的代码逻辑非常有用。 2. 自定义对象的“布尔真假” 我们常说,在 Python 里,“万物皆对象”。...注解 事实上 x and a or b 不是总能给你正确的结果,只有当 a 与 b 的布尔值为真时,这个表达式才能正常工作,这是由逻辑运算的短路特性决定的。

    1.1K00

    Python 工匠:编写条件分支代码的技巧

    所以,请记得只用三元表达式处理简单的逻辑分支。...使用“德摩根定律” 在做分支判断时,我们有时候会写成这样的代码: # 如果用户没有登录或者用户没有使用 chrome,拒绝提供服务 if not user.has_logged_in or not user.is_from_chrome...这是因为上面的逻辑表达式里面出现了 2 个 not 和 1 个 or。而我们人类恰好不擅长处理过多的“否定”以及“或”这种逻辑关系。 这个时候,就该 德摩根定律 出场了。...通俗的说,德摩根定律就是 not A or not B 等价于 not (A and B)。...记住德摩根定律,很多时候它对于简化条件分支里的代码逻辑非常有用。 2. 自定义对象的“布尔真假” 我们常说,在 Python 里,“万物皆对象”。

    3.2K111
    领券