简介:这份人工智能经典习题集及各章总结,面向高校学生与备考期末的读者,帮助系统梳理人工智能理论体系并强化解题能力。资源以doc文档形式呈现,共1个文件,压缩包约2.19MB,内容按章节组织,涵盖绪论、知识表示、推理等模块,每章配有小结与习题解答。习题涉及人工智能定义与发展阶段、三大研究学派、搜索技术、知识表示、归结演绎推理等核心考点,并给出产生式规则、语义网络、谓词公式等具体解题过程,如旅行商路线规划、盗窃犯推理等经典例题。已有100人学习,适合需要集中复习、对照答案查漏补缺的学习者,可帮助理解符号主义、连接主义与行为主义的分歧,掌握问题求解与逻辑推理的基本方法,提升应用技术解决实际问题的能力。
1. 人工智能到底是什么:从一道期末题说起
如果你正在翻一份人工智能的习题集,大概率会撞上这样一道题:“什么是人工智能?发展过程中经历了哪些阶段?”很多人第一反应是背定义,但背完还是不知道这门课到底在讲什么。通俗地说,人工智能就是让机器表现出类似人类智能的一门学科——它会搜索、会推理、会学习、会下棋,也能跟你对话。它不是一个单一技术,而是一堆方法凑在一起解决“怎么让机器变聪明”这件事。搞懂它的定义和边界,你才能看懂后面那些搜索策略、知识表示、归结推理到底在忙什么,也才知道期末考试为什么总爱从绪论开始出题。
2. 为什么人工智能会有这么多学派和分支:一场关于“智能从哪来”的路线之争
2.1 三个学派,三种对智能的想象
人工智能领域最让人头晕的地方,是同一件事有好几种说法。比如“智能是怎么产生的”,符号主义、连接主义、行为主义给出的答案完全不同。
符号主义学派走的是心理学途径,核心观点是:人类认识的基本元素是符号,智能行为就是符号运算的结果。打个比方,它像用一套严密的数学公式去模拟思考过程——你输入前提,它按规则推导出结论。习题集里那些谓词逻辑、产生式规则、归结演绎推理,基本都是这个学派的看家本领。
连接主义学派走的是生理学途径,也叫仿生学派。它认为智能的基本元素是神经元,智能产生于大量神经元的并行分布式联结之中。通俗地说,它不关心你用什么符号,而是模仿大脑的物理结构,用一堆“人工神经元”连成网络,让信息在连接权重里流动。神经网络、深度学习都属于这条路。
行为主义学派走的是生物演化途径,起源于控制论。它提出智能取决于感知和行为,取决于对外界复杂环境的适应,而不是表示和推理。换句话说,它不在乎机器内部怎么想,只看它在环境里怎么做。机器人学里很多控制策略就带着这个思路。
这三个学派不是谁对谁错的关系,而是各有所长、并存互补。习题集里问“人工智能有哪些研究途径和方法”,答案就是心理模拟、生理模拟、行为模拟等多条路线齐头并进。
2.2 研究内容为什么这么杂:因为智能本身就是一个综合体
翻开习题集第二章到第四章,你会发现内容跳来跳去:一会儿是搜索技术,一会儿是知识表示,一会儿又是归结推理。初学者容易懵:这些到底是不是一个东西?
其实人工智能研究的基本内容可以归成几大块。搜索技术解决的是“怎么在可能性里找答案”,比如走迷宫、下棋、规划路线。知识表示解决的是“怎么把人类知识塞进机器里”,谓词表示法、产生式表示法、框架表示法、语义网络表示法都是干这个的。推理解决的是“怎么从已知推出未知”,经典逻辑推理、不确定与非单调推理、归结演绎推理都属于这一块。机器学习、神经网络、专家系统、自然语言理解、机器人学则是更上层的应用领域。
打个比方,搜索是腿,知识表示是记忆,推理是大脑,机器学习是学习能力,应用领域就是它出门干的活。缺了哪一块,智能系统都跑不起来。习题集按这个顺序编排,其实是在帮你一层层搭地基。
2.3 发展阶段不是背年份:每个阶段都在解决前一个阶段的痛点
习题集里列了五个阶段:神经元网络时代、通用方法时代、知识工程时代、新的神经元网络时代、海量信息处理与网络时代。很多人只背年份,但真正理解要看到背后的逻辑。
第一阶段(40年代中到50年代末)是神经元网络时代,早期研究者觉得模仿神经元就能造出智能。但很快发现,单个神经元能力有限,复杂问题搞不定。
第二阶段(50年代中到60年代中)转向通用方法时代,大家开始找通用的搜索和推理方法,试图用一套逻辑框架解决所有问题。但通用方法遇到现实世界的复杂性就翻车了,知识量太大,穷举不现实。
第三阶段(60年代中到80年代初)进入知识工程时代,专家系统兴起。思路变成:不追求通用,而是把特定领域的专家知识灌进去,让机器在窄领域里表现得很专业。但知识获取成了瓶颈,靠人一条条写规则太慢。
第四阶段(80年代中到90年代初)回到新的神经元网络时代,反向传播算法让神经网络重新火起来。第五阶段(90年代初到现在)是海量信息处理与网络时代,数据多了、算力强了,深度学习、大数据挖掘成为主流。
你看,每个阶段的切换都不是拍脑袋,而是前一条路走不通了,换一条路继续走。习题集让你总结这些阶段,其实是在训练你用演化的眼光看技术。
3. 搜索、推理、知识表示:习题集里最容易搞混的几个概念
3.1 常见误区一:搜索就是“百度一下”
很多初学者看到“搜索技术”,第一反应是搜索引擎。但在人工智能习题集里,搜索指的是状态空间搜索——在一个问题图中,从初始节点出发,按某种策略找到目标节点的路径。
比如习题集里那道五城市交通路线题:A城市出发,E城市目的地,求最小费用路线。你要把交通图转成代价树,然后用代价树的广度优先搜索或深度优先搜索去扩展节点。广度优先是逐层扩展,按代价从小到大排序;深度优先是沿一条路走到底,不一定最优。
这里的“搜索”跟你在网页上打字搜索完全是两码事。它更像是在一张地图上找路,每一步都要决定往哪个方向走。习题集里反复出现的OPEN表和CLOSED表,就是记录“待考察节点”和“已考察节点”的两个清单。
3.2 常见误区二:知识表示就是“存数据”
知识表示听起来像数据库存储,但它要解决的是“怎么让机器理解知识的结构和含义”。习题集里列了四种表示法:谓词表示法、产生式表示法、框架表示法、语义网络表示法。
谓词表示法用谓词和连接词把事实写成逻辑公式,比如“Father(David, John)”表示David是John的父亲。产生式表示法用“IF-THEN”规则,比如“IF 走过的城市数小于5 THEN 走向城市B”。框架表示法用槽和侧面来描述事物,像一个结构化表格。语义网络表示法用节点和弧线表示概念及其关系,比如“神州大学篮球队”和“东方大学篮球队”之间的比赛关系。
它们不是互相替代的关系,而是针对不同场景各有优势。习题集里让你用产生式规则表示旅行过程,又让你用语义网络表示篮球比赛,就是在训练你根据问题特点选表示方法。
3.3 常见误区三:归结推理就是“解方程”
归结演绎推理是习题集第三章的重点,也是很多人翻车的地方。它看起来像在推公式,但核心思想其实很朴素:把已知条件化成子句集,把要证明的结论否定后也化成子句,然后两两归结,直到推出空子句或答案。
比如那道经典的盗窃犯题:五个侦察员的话化成谓词公式,归结到最后得出ANSWER(qian)和ANSWER(sun),所以钱和孙是盗窃犯。再比如兄弟父亲题:归结出ANSWER(David),所以Peter的父亲是David。
它跟解方程的区别在于:解方程是等式变换,归结是逻辑消解。你不需要知道中间过程是什么,只要按规则把子句配对消掉,答案自己会浮出来。习题集里反复练这个,是为了让你熟悉“否定-归结-得答案”这套流程。
3.4 常见误区四:广度优先和深度优先只是顺序不同
广度优先搜索和深度优先搜索,名字听起来只是顺序差异,但实际影响很大。广度优先是逐层扩展,先看同一级所有节点,再看下一级。它的优点是如果问题有解,一定能找到,而且找到的是最短路径(在单位代价下)。缺点是空间占用大,节点多了内存扛不住。
深度优先是沿一条路走到底,撞墙了再回头。它的优点是省空间,缺点是可能掉进无穷分支,永远找不到解,而且找到的解不一定最优。习题集里特别标注“深度优先搜索是不完备的”,就是在提醒你这个坑。
代价树的广度优先和深度优先又不一样:广度优先按代价排序,每次扩展代价最小的节点;深度优先按代价排序后放到栈首部,先扩展刚生成的节点。习题集里那道五城市交通题,两种方法结果相同只是巧合,一般情况下不一定相同。
3.5 常见误区五:与/或树就是普通树
与/或树是习题集第四章的难点。普通树的节点要么全是“与”关系,要么全是“或”关系。与/或树里两种关系混在一起:带弧线的树枝表示“与”关系,不带弧线的表示“或”关系。
“与”节点的意思是所有子节点都有解它才有解,“或”节点的意思是只要有一个子节点有解它就有解。解树是由可解节点形成的一棵子树,根是初始节点,叶是终止节点。
习题集里让你分别用广度优先和深度优先求与/或树的解树,其实是在训练你处理“问题分解”和“方案选择”混在一起的场景。比如一个复杂问题可以拆成几个子问题(与关系),每个子问题又有多种解法(或关系),与/或树就是描述这种结构的工具。
4. 从习题到实战:什么时候该用哪种方法
4.1 一个具体例子:过河问题怎么拆
习题集里有一道经典过河题:农夫带狼、羊、菜过河,船太小每次只能带一样,没农夫看管时狼吃羊、羊吃菜。要求设计过河方案,画出状态空间图。
这道题用四元组表示状态,每个元素0或1表示在左岸还是右岸。初始状态(0,0,0,0),目标状态(1,1,1,1)。操作符L(i)表示农夫带东西到右岸,R(i)表示带东西到左岸。约束条件是狼羊不能单独在一起,羊菜不能单独在一起。
解这道题的过程,就是状态空间搜索的典型应用:定义状态表示、定义操作符、定义约束条件、然后搜索一条从初始状态到目标状态的路径。习题集里还有三只琴键开关的题,思路完全一样。
什么时候用状态空间搜索?当问题可以表示成“一系列状态和状态之间的转移”时。什么时候用与/或树?当问题可以分解成子问题,且子问题之间有“与”或“或”关系时。什么时候用归结推理?当问题可以表示成逻辑公式,且需要从已知事实推出结论时。
4.2 参数怎么改:以代价树搜索为例
习题集里代价树搜索的代码逻辑是这样的:
# 代价树广度优先搜索的简化逻辑 def cost_breadth_first_search(start, goal): open_list = [(start, 0)] # (节点, 累计代价) closed_list = [] while open_list: # 按累计代价从小到大排序 open_list.sort(key=lambda x: x[1]) node, cost = open_list.pop(0) if node == goal: return node, cost closed_list.append(node) for child, edge_cost in get_children(node): if child not in closed_list: open_list.append((child, cost + edge_cost)) return None这段逻辑的关键参数是排序方式。广度优先按累计代价排序,保证每次扩展当前代价最小的节点。深度优先则是把子节点按代价排序后放到列表首部,先扩展刚生成的节点。
如果你把排序方式改成按启发式函数排序,就变成了A*算法。习题集里提到的全局择优搜索、局部择优搜索,区别就在于用什么样的评价函数来给OPEN表排序。
失败时看什么?如果搜索找不到解,先检查OPEN表是不是空了,再检查CLOSED表是不是把该扩展的节点漏了。如果找到的解不是最优,检查排序策略是不是正确,代价计算有没有累加错。
4.3 什么时候别用这些方法
状态空间搜索适合状态数量有限、转移规则明确的问题。如果状态空间太大,比如围棋的合法局面数超过10的170次方,穷举搜索根本不可行,这时候需要启发式搜索或神经网络评估。
归结推理适合逻辑关系清晰、可以用谓词公式表示的问题。如果知识本身模糊、不确定,比如医疗诊断中的症状和疾病关系,经典逻辑推理就不够用,需要不确定推理或概率方法。
与/或树适合问题分解结构明确的场景。如果子问题之间依赖关系复杂、动态变化,静态的与/或树就描述不了,需要更灵活的规划方法。
习题集里有一道题问“什么是问题的解?什么是最优解?”答案很简单:能够解决问题的方法或具体做法就是解,代价最小的解就是最优解。但实际应用中,找到最优解往往计算量太大,退而求其次找可行解是更常见的做法。
4.4 我踩过的坑
当年复习这门课的时候,我把五个发展阶段背得滚瓜烂熟,结果考试出了一道“为什么第三阶段会从通用方法转向知识工程”,我直接懵了。后来才明白,习题集里的每道题都不是孤立的,它背后有一条“为什么这么发展”的线索。
从那以后我每次看习题集,都强制自己先问三个问题:这道题在解决什么类型的问题?它用的是哪个学派的方法?如果换一种方法会怎样?希望这个习惯也能帮到你。
这份人工智能经典习题集及各章总结,把绪论、知识表示、推理、搜索策略几个核心模块的习题和解答都整理在一起,适合期末复习时对照着把概念串起来。如果你正在被归结推理的σ代换绕晕,或者分不清代价树搜索的两种策略,这份资料能帮你把思路理清楚。
本文还有配套的精品资源,点击获取