实验名称:命题逻辑推理
实验目的和要求:加深对命题逻辑推理方法的理解。
实验内容:
【实验内容】用命题逻辑推理的方法解决逻辑推理问题。
实验用例:根据下面的命题,试用逻辑推理方法确定谁是作案者,写出推理过程。
(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 | 货柜上了锁 |
则题中命题可表示为:
- A∨B
- A→̚ C(也可以表示成 C→̚ A)
- D→̚ E(也可以表示成 E→̚ D)
- ̚ D→C
- E
- E为真
- E→̚ D
- D为假
- ̚ D为真
- ̚ D→C
- C为真
- C→̚ A
- ̚ A为真
- A为假
- A∨B为真
- 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)
运行结果如下:
代码可能存在借鉴,侵删!