专栏首页Flaneur的文章分享python+离散数学→逻辑演算

python+离散数学→逻辑演算

前言

        本篇探讨的是一道逻辑演算推理题。有两种方法,一种是常规的离散数学逻辑演算,另一种则是用python程序来解决。本篇将探究两种方法: python+离散数学→逻辑演算。

问题         在某次研讨会的中间休息时间,3名与会者根据王教授的口音对他是哪个省市的人判断如下:                 甲:王教授不是苏州人,是上海人                 乙:王教授不是上海人,是苏州人                 丙:王教授既不是上海人,也不是杭州人         听完这3人的判断后,王教授笑着说,你们3人中有一人说得全对,有一人说对了一半,另一人全不对。试用逻辑演算分析王教授到底是哪里人.

常规推理

设命题    p:王教授是苏州人;                 q:王教授是上海人;                 r:王教授是杭州人;

用p,q,r表示甲乙丙的观点如下:

                        甲:¬p∧q

                        乙:p∧¬q

                        丙:¬q∧¬r

其中一人全对,一人对一半,另一人全错。

即其中一个真命题,两个假命题。先找真命题

                        甲全对:B1=¬p∧q

                        甲对一半:B2=(¬p∧¬q) ∨(p∧q)

                        甲全错:B3=p∧¬q

                        乙全对:C1= p∧¬q

                        乙对一半:C2=(¬p∧¬q) ∨(p∧q)

                        乙全错:C3=¬p∧q

                        丙全对:D1=¬q∧¬r

                        丙对一半:D2=(q∧¬r) ∨( ¬q∧r)

                        丙全错:D3=q∧r

有王教授那句话可以写:

                E=(B1∧C2∧D3)∨(B1∧C3∧D2) ∨(B2∧C1∧D3) ∨(B2∧C3∧D1) ∨(B3∧C1∧D2) ∨(B3∧C2∧D1)

是真命题

而B1∧C2∧D3⇔(¬p∧q) ∧((¬p∧¬q) ∨(p∧q)) ∧(q∧r)

                   ⇔(¬p∧q) ∧((¬p∧¬q) ∧(q∧r) ∨ (p∧q) ∧(q∧r))

                   ⇔(¬p∧q) ∧(0∨(p∧q∧r))

                   ⇔(¬p∧q)∧(p∧q∧r)

                   ⇔0

其他同理类似可得:

                        B1C3D2⇔¬p∧q∧¬r

                        B2C1D3⇔0

                        B2C3D1⇔0

                        B3C1D2⇔p∧¬q∧r

                        B3C2D1⇔0

所以E⇔(¬p∧q∧¬r) ∨(p∧¬q∧r)

而pqr中只能有一个是真的,所以p∧q⇔0,p∧r⇔0,q∧r⇔0

                        E⇔(¬p∧q∧¬r) ∨0

                          ⇔¬p∧q∧¬r

                          ⇔1

所以p为假,q为真,r为假,王教授是上海人。

python程序实现         以下是上述过程的代码实现,并附有代码详解,有兴趣的小伙伴可以看一看。

for p in range(2):                                  #p:王教授是苏州人
    for q in range(2):                              #q:王教授是上海人
        for r in range(2):                          #r:王教授是杭州人
         #以下三行表示p,q,r不可能同时为真的情况
         if (p == 1 and q == 1): continue
         if (p == 1 and r == 1): continue
         if (q == 1 and r == 1): continue
         
         Jia = (not p) and q                        #甲的判断
         Yi = p and (not q)                         #乙的判断
         Bing = (not q) and (not r)                 #丙的判断
       
         B1 = (not p) and q                         #甲的判断全对
         B2 = ((not p) and (not q))or (p and q)     #甲的判断一半对
         B3 = p and (not q)                         #甲的判断全错
         
         C1 = p and (not q)                         #乙的判断全对
         C2 = (p and q) or ((not p) and (not q))    #乙的判断一半对
         C3 = (not p) and q                         #乙的判断全错
         
         D1 = (not q) and (not r)                   #丙的判断全对
         D2 = ((not q) and r) or (q and(not r))     #丙的判断一半对
         D3 = q and r                               #丙的判断全错

         #王教授所说的话
         E = (B1 and C2 and D3) \
           or(B1 and C3 and D2) \
           or(B2 and C1 and D3) \
           or(B2 and C3 and D1) \
           or(B3 and C1 and D2) \
           or(B3 and C2 and D1)

         #符合王教授所的E值
         if E==1 :
           print("%d,%d,%d E=%d,Jia=%d,Yi=%d,Bing=%d"%(p,q,r,E,Jia,Yi,Bing))

总结         其实用python解决离散数学的逻辑推理题比直接推理效率更高而且准确性也高,并且在遇到复杂的逻辑推理时,很容易把自己绕晕,半天也解不出来,倒不如我们可以让计算机帮我们解决,只需写几十行代码,就可以罗列出复杂的关系,何乐而不为呢,所以我们可以多学学这种解题方法!?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第一次测试题总结

    这里是一些暑期培训第一次测试题的部分解释,经过这次测试的摧残,总结备录一下,方便日后回顾复习。

    Flaneur
  • KNN算法及python实现

            KNN算法即K-Nearest Neighbor,也是机器学习十大经典算法之一。前文讲解了K-means算法,今天我们就继续讲KNN算法,两者看...

    Flaneur
  • Hexo博客搭建

            本篇文章用于介绍Hexo个人博客的搭建过程,这也是我搭建本博客后的第一篇文章,分享一下搭建方法,有兴趣的小伙伴也可以自主搭建一个属于自己的博客!...

    Flaneur
  • Microservices Ecosystem Transit Map

    …we assembled a map of the ecosystem to help guide practitioners, vendors, inves...

    首席架构师智库
  • 2020测试工具索引

    在整理过程中,我会尽量去官网找到官方对该工具的描述,包括中文和英文,保证原汁原味。

    测试老树
  • 基于分层需求的协同多机器人系统自适应框架(CS RO)

    在复杂和动态环境中,对多机器人和群体系统的研究已经引起了对代理人的合作和协调的极大兴趣。 为了有效地适应未知环境并最大程度地发挥团队的作用,机器人需要合作,共享...

    时代在召唤
  • Gartner整理的未来5年流行技术词

    Digitalization is boundless, A dozen other emerging technology trends are destin...

    黑光技术
  • 2019年最佳的Bootstrap Admin模板下载

    Bootstrap 是一个免费和开源的前端框架,包含一组用于创建网站和 Web 应用程序的工具集合。 包含栅格系统、表单、按钮、导航和其他界面组件,开发人员能够...

    用户4962466
  • 使用移动环境传感器的智能手机健康评估(CS CY)

    心理健康和整体健康是社会日益关注的问题。环境因素会导致精神疾病,并有能力影响一个人的健康。这项研究提出了一个基于智能手机的健康评估系统,并检查了个人环境和健康是...

    用户7495559
  • IJPR特刊邀稿| 主题:生产和配送管理中的大数据分析

    The International Journal of Production Research (IJPR), published since 1961, i...

    用户1621951

扫码关注云+社区

领取腾讯云代金券