【记得交作业】波波离散实验报告二(python实现)

实验名称命题逻辑推理

实验目的和要求加深对命题逻辑推理方法的理解。

实验内容:

【实验内容】用命题逻辑推理的方法解决逻辑推理问题。

实验用例:根据下面的命题,试用逻辑推理方法确定谁是作案者,写出推理过程。

(1)营业员A或B偷了手表;

(2)若A作案,则作案不在营业时间;

(3)若B提供的证据正确,则货柜未上锁;

(4)若B提供的证据不正确,则作案发生在营业时间;

(5)货柜上了锁。

【实验原理和方法】

(1)符号化上面的命题,将它们作为条件,营业员A偷了手表作为结论,得一个复合命题。

(2)将复合命题中要用到的联结词定义成C语言中的函数,用变量表示相应的命题变元。将复合命题写成一个函数表达式。

(3)函数表达式中的变量赋初值1。如果函数表达式的值为1,则结论有效,A偷了手表,否则是B偷了手表。

实验心得:

一.推理过程如下:

事件

含义

A

A偷了手表

B

B偷了手表

C

作案发生在营业时间

D

B提供的证据正确

E

货柜上了锁

则题中命题可表示为:

  1. A∨B
  2. A→̚ C(也可以表示成 C→̚ A)
  3. D→̚ E(也可以表示成 E→̚ D)
  4. ̚ D→C
  5. E

  1. E为真
  2. E→̚ D
  3. D为假
  4. ̚ D为真
  5. ̚ D→C
  6. C为真
  7. C→̚ A
  8. ̚ A为真
  9. A为假
  10. A∨B为真
  11. B为真

所以是B偷了手表。

  • Python编程:

先将条件式转化为命题公式,(2)  ̚ A∨ ̚ C, (3) ̚ D∨ ̚ E,(4) D∨C,所有语句转化成python语言后:(A  B) && (!A || !C) && (!D || !E) && (D || C) && E.为了能将所有的情况全都考虑到并且成功运行,我们需要设置嵌套循环结构。

代码:

for a in [1, 0]:

    for b in [1, 0]:

        for c in [1, 0]:

            for d in [1, 0]:

                for e in [1, 0]:

                    if (a or b) and (not a or not c)  and (not d or not e)  and ( d or c) and e:

                        print('a:', a, 'b:', b)

运行结果如下:

代码可能存在借鉴,侵删! 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值