人工智能(柴玉梅)第三章课后部分习题答案(仅供参考)

 注意:黑色加粗为习题答案,其余为笔记

5.用归结原理证明,G是否可肯定是F的逻辑结果。

cbab1cd5d6c24fda8ad22f8fe9014c41.png

证明:利用归结反演法证明,先证明F1∧F2∧F3∧ ¬G是不可满足的。

求子句集:

注:

求子句集策略:

(1)消->

(2)内移¬,消量词

        注:变元变更准则:

                不同量词约束元不同

                不同子句用不同变元

(3)先消存在、后消全称量词

9cb4314e80ac4e8cb35009f6b389e596.png

F1:

(1)¬A(x)∨B(x) ∨D(x,w)

(2)¬A(y)∨B(y) ∨C(t)

F2:

(3)E(a)

(4)A(a)

(5)¬ D(a,z) ∨E(z)

F3:

(6)¬E(u) ∨¬B(u)

¬G:

(7)¬E(v) ∨¬C(v)

对子句集进行归结:

(8)¬B(a)          (3)与(6)归结,{a/u}

(9)¬C(a)          (3)与(7)归结,{a/v}

(10)B(a) ∨C(t)      (2)与(4)归结,{a/y}

(11)C(a)     (8)与(10)归结,{a/t}

(12)Nil       (9)与(11)归结

因为F1∧F2∧F3∧ ¬G是不可满足的,所以G是F1、F2、F3的逻辑结论。

8.张某被盗,公安局派五个侦察员去调查,研究案情时,侦察员A说:“赵与钱中至少有一人作案”;侦察员B说:“钱与孙至少有一人作案”;侦察员C说:“孙与李中至少有一人作案”;侦察员D说:“赵与孙中至少有一人与此案无关”;侦察员E说:“钱与李中至少有一人与此案无关”。如果这五个侦察员说的都可信,试用消解原理求出谁是盗窃犯。

解:定义谓词用P(x)表示x作案,a,b,c,d分别代表赵、钱、孙、李,则五个侦察员的话可用谓词公式表示为 :

(1)P(a)∨P(b)

(2)P(b)∨P(c)

(3)P(c)∨P(d)

(4)¬P(a)∨¬P(c)

(5)¬P(b)∨¬P(d)

要求的公式为:

G:  xP(x) (即存在 x,x 是罪犯 )

 

将其化为否定形式再析取一个辅助谓词PA(x)得

(6)P(x)∨PA(x) 

对上面式子进行归结得:

(7) ¬P(d)∨P(c)    (2)与(5)归结

(8)P(c)              (3)与(5)归结

(9)PA(c)            (8)与(6)归结,{c/x}

(10)¬P(c)∨P(d)    (1)与(4)归结

(11)P(b)              (3)与(5)归结

(12)PA(b)            (8)与(6)归结,{b/x}

所以,罪犯为钱和孙两个人。

10. 对第5题中的子句集,选用线性归结策略或祖先过滤型策略进行归结。

(线性归结策略通俗来说就是下一条归结必须用上一步归结的结果进行归结)

(祖先过滤型策略就是,参加归结的两个子句,要么至少有一条是初始子句集中的子句,要么一个是另一个的祖先[大概例如:A和B归结出C,C和D归结出E,C和E归结出F(这里C是E的祖先)])

(最开始以为子句不能重复用来归结,其实是可以重复的!!!o(╥﹏╥)o)

解:

利用线性归结策略进行归结:

求子句集:

F1:

(1)¬A(x)∨B(x) ∨D(x,w)

(2)¬A(y)∨B(y) ∨C(t)

F2:

(3)E(a)

(4)A(a)

(5)¬ D(a,z) ∨E(z)

F3:

(6)¬E(u) ∨¬B(u)

¬G:

(7)¬E(v) ∨¬C(v)

对子句集进行归结:

(8)¬B(a)          (3)与(6)归结,{a/u}

(9)¬A(a) ∨C(t)         (2)与(8)归结,{a/y}

(10)¬A(a) ∨¬E(t)      (7)与(9)归结,{t/v}

(11)¬A(a)     (3)与(10)归结,{a/t}

(12)Nil       (4)与(11)归结

因为F1∧F2∧F3∧ ¬G是不可满足的,所以G是F1、F2、F3的逻辑结论。

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是Python代码实现: ```python import random import csv # 生成随机姓名 def generate_name(): family_names = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁'] given_names = ['伟', '芳', '娜', '秀英', '敏', '静', '丽', '强', '磊', '军', '洋', '勇', '艳', '杰', '娟', '涛', '明', '超', '亮', '婷', '辉', '平', '鹏', '霞', '刚', '桂英', '桂芳', '建华', '玉兰', '欣', '桂林', '小红', '建国', '建军', '玉华', '晶', '玉珍', '国强', '文静', '建平', '玉梅', '欢', '瑞', '凯', '丹', '国平', '建设', '国庆', '琴'] return random.choice(family_names) + random.choice(given_names) # 生成随机性别 def generate_gender(): return random.choice(['男', '女']) # 生成随机年龄 def generate_age(): return random.randint(18, 25) # 生成随机成绩 def generate_score(): return random.randint(0, 100) # 批量生成随机信息 def batch_generate_info(num): info_list = [['姓名', '性别', '年龄', '成绩']] for i in range(num): name = generate_name() gender = generate_gender() age = generate_age() score = generate_score() info_list.append([name, gender, age, score]) return info_list # 将信息写入csv文件 def write_to_csv(info_list, filename): with open(filename, 'w', newline='') as file: writer = csv.writer(file) for row in info_list: writer.writerow(row) # 读取csv文件并将不及格同学信息存入以姓名命名的dat文件中 def read_csv_and_save_dat(): with open('info.csv', 'r') as file: reader = csv.reader(file) for row in reader: name = row[0] score = int(row[3]) if score < 60: with open(f'{name}.dat', 'a') as dat_file: dat_file.write(f'姓名:{name},性别:{row[1]},年龄:{row[2]},成绩:{row[3]}\n') # 批量生成随机信息并写入csv文件 info_list = batch_generate_info(50) write_to_csv(info_list, 'info.csv') # 读取csv文件并将不及格同学信息存入以姓名命名的dat文件中 read_csv_and_save_dat() ``` 以上代码会在当前目录下生成一个`info.csv`文件,同时根据不及格同学生成以姓名命名的dat文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊hii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值