
简介面向人工智能岗位面试与课程考核的经典试题合集围绕百度人工智能涉及的语义网络、推理、知识表示、机器学习、自然语言处理等核心模块展开。试题覆盖选择题、填空题、简答计算题和应用题四种题型包含反演归结、产生式系统、可信度计算、谓词逻辑、MGU合一算法、语义网络表示、博弈树α-β剪枝等典型考点并附有参考答案与关键推导步骤便于对照查漏补缺。资源包为1个doc文档大小约279KB内容结构紧凑适合快速打印或按章节自测。已有1584人学习下载可用于人工智能笔试准备、考研复试梳理或本科期末复习帮助读者用较短时间巩固AI基础并熟悉常见考察方式。 网上流传的几份经典人工智能考试试题常被标注为某大厂的人工智能题库实际内容是符号主义时代最硬核的基础谓词逻辑、归结原理、合一算法、产生式系统、语义网络、α-β剪枝。别看这些名词在深度学习时代被冷落我在帮同学准备复试和梳理面试考点时发现这些恰恰是刷掉最多人的查漏项。这套题不适合想学大模型原理的人但适合准备AI岗位面试、考研复试、期末突击的从业者——把选择题做一遍能快速摸清逻辑底子把证明题手推一遍能治“只会调包”的毛病。下文按模块拆解每章给题干、答案、手算过程和踩坑点。2. 谓词逻辑与归结原理从命题到子句集的完整推导2.1 命题与谓词的边界选择题里最容易混的两个概念选择题第6题问“命题是可以判断真假的什么句”答案是陈述句。祈使句、疑问句、感叹句都不能判断真假这是形式逻辑的第一道门槛。第7题问“仅个体变元被量化的谓词称为一阶谓词”答案选A。这里的关键是“量词只能作用于个体变元”如果量词作用到谓词上就是二阶谓词逻辑考试中默认不讨论。第5题“(A→B)∧A B 是假言推理”对应逻辑学里的Modus Ponens即肯定前件式。这三道题连在一起实际上是在考命题逻辑与谓词逻辑的分界线命题逻辑只研究命题之间的连接词关系谓词逻辑引入了个体、谓词和量词。2.2 子句集转换八步简答第3题的完整落地谓词公式G化为子句集S需要经过八个步骤这是归结原理的前置工作也是简答题的高频考点。完整步骤是消去蕴含式和等价式把→、-全部换成¬、∧、∨的组合。缩小否定词的作用范围直到它只作用于原子公式。适当改名使量词之间不含同名指导变元和约束变元。消去存在量词引入Skolem函数形成Skolem标准型。消去所有全称量词。化成合取范式。适当改名使子句之间无同名变元。消去合取词∧用逗号代替以子句为元素组成集合S。以公式∀x(P(x)→Q(x))为例第一步变成∀x(¬P(x)∨Q(x))这里已经消去了蕴含式第二步到第五步可以直接应用因为该式不含存在量词第六步它本身就是合取范式第七步若要与另一子句合并则需改名第八步得到子句¬P(x)∨Q(x)。注意第3步和第7步都叫“改名”但目的不同第3步是为了避免多个量词之间的同名冲突第7步是为了避免子句合并后变量混淆。很多同学在考试时漏掉第7步导致后续归结时置换出错。2.3 归结反演证明G是否是F的逻辑结论归结反演的基本思想是要证明G是F的逻辑结论先把F和¬G都化为子句集然后不断归结若能推出空子句则矛盾成立G得证。原题给出的归结过程是这样的① P(x) ... 从F变换 ② Q(a)∨Q(x) ... 从F变换 ③ ¬P(y)∨¬Q(y) ... 结论的否定 ④ ¬Q(x) ... ①③归结置换{x/y} ⑤ □ ... ②④归结置换{a/x}第④步中①的P(x)与③的¬P(y)互补做置换{x/y}后P(x)与¬P(x)消去剩下¬Q(x)。第⑤步中②的Q(a)∨Q(x)与④的¬Q(x)互补注意②里有两个Q文字其中Q(x)与¬Q(x)消去剩下的Q(a)与④继续归结时也需要互补最终因为②中Q(a)和④中¬Q(x)在置换{a/x}后互补消解得到空子句。这是得分的关键空子句出现即定理得证。2.4 祖孙关系的完整求解一份可以直接背的模板应用题第3题是归结反演的经典模板先把谓词定义清楚F(x,y)x是y的父亲。G(x,z)x是z的祖父。已知条件形式化(1) F(x,y)∧F(y,z)→G(x,z)(2) F(老李,大李)(3) F(大李,小李)。目标求证是否存在u、v使得G(u,v)。归结过程为先把规则(1)化为子句¬F(x,y)∨¬F(y,z)∨G(x,z)将目标否定¬G(u,v)加入①②归结得到¬F(D,z)∨G(L,z)置换{L/x, D/y}再与③归结得到G(L,X)置换{X/z}最后与目标否定归结得到空子句置换{L/u, X/v}。证明存在祖孙关系。这道题还有第二个问法要求具体解出谁和谁是祖孙。此时不用目标否定而是用一个重言式¬G(u,v)∨G(u,v)代替结论否定因为重言式恒为真不会破坏公式的一致性。归结到最后得到G(L,X)即老李是小李的祖父答案直接从归结式里抽出来。这个技巧在考试中很实用记住“证明用否定求解用重言式”。3. 合一算法与MGU两道手算真题与三个高频翻车点3.1 MGU为什么重要归结规则需要它才能落地归结的时候两个子句里的互补文字往往不是完全相同的比如P(x)和¬P(y)差一个变量。合一算法就是寻找一个置换δ让两个原子公式变得完全相同这个δ就是最一般合一MGU。MGU不是唯一的但最一般的那个是唯一的所谓“最一般”是指它不引入多余的替换任何其他合一置换都能由MGU再合成得到。考试要求手算MGU考的是对差异集和置换方向的理解。3.2 第一道真题S{P(f(x),y,g(y)), P(f(x),z,g(x))}按合一算法逐步走k0: S0S, δ0ε S0不是单元素集求差异集D0{y, z} y是变元z是项z作为变量名在未绑定前可视为项 且y不在z中出现 k1: δ1δ0·{z/y}{z/y} S1S0·{z/y}{P(f(x),z,g(z)), P(f(x),z,g(x))} S1不是单元素集求差异集D1{z, x} k2: δ2δ1·{z/x}{z/y, z/x} S2S1·{z/x}{P(f(z),z,g(z))} S2是单元素集MGUδ2{z/y, z/x}注意差异集的求法先比较两个原子公式的谓词名相同再从左到右比较参数。第一个参数f(x)和f(x)相同跳过第二个参数y和z不同把{y,z}作为D0。这里y和z都是变元选谁替换谁有个约定一般用后出现的变元替换先出现的变元或者说把“被绑定”的变元替换为“更具体”的项。最终结果中x被z替换y也被z替换两个子句变成同一个原子公式。3.3 第二道真题W{P(f(x,g(A,y)),z), P(f(x,z),z)}这道题比上一道多了一层嵌套差异集的定位稍微隐蔽k0: S0S, δ0ε 比较第一个参数f(x,g(A,y))与f(x,z) 先消除f再比较内层x与x相同g(A,y)与z不同 D0{g(A,y), z} z是变元g(A,y)是项且z不在g(A,y)中出现 k1: δ1δ0·{g(A,y)/z}{g(A,y)/z} S1S0·{g(A,y)/z}{P(f(x,g(A,y)), g(A,y))} S1是单元素集MGUδ1{g(A,y)/z}这里有个细节S1是单元素集因为两个原子公式在置换后都变成P(f(x,g(A,y)),g(A,y))。第一个子句的第二个参数原本是z替换成g(A,y)第二个子句的第一个参数里的z也被替换成g(A,y)所以两个子句完全一致。需要特别说明差异集只取第一个不同的位置对不要试图把所有不同项一次性塞进差异集。3.4 三个高频翻车点第一个翻车点置换方向写反。δ{z/y}表示用z替换y即y变z不是把z改成y。很多人手一滑写成{y/z}整个后续全部白算。第二个翻车点差异集收集过度。差异集永远只包含一对不同的项不是把两个公式所有不同之处列成一堆。写D{y, z, g(A,y)}这种答案直接判错。第三个翻车点忘记检查“变元不在项中出现”条件。如果出现S{P(x), P(f(x))}这类差异集{x, f(x)}x在f(x)中出现不能合一因为替换会无限循环。考试中看到这种结构直接回答“不可合一”就是正确答案。4. 知识表示与推理产生式、语义网络、可信度的计算套路4.1 产生式系统的三件套规则库、综合数据库、推理机简答题要求阐述产生式系统的组成标准答案是三部分规则库是领域知识的产生式规则集合综合数据库也叫事实集合存放初始事实、中间结果和最终结果推理机是控制程序负责协调规则库与数据库的运行。推理方式分为正向推理从已知事实出发匹配规则前件、反向推理从目标出发匹配规则后件和双向推理。配套的对比题是“补齐产生式系统与图搜索的对比表”对应关系可以这样记产生式系统图搜索规则库操作符集合综合数据库节点集合推理机搜索策略初始事实初始节点目标事实目标节点产生式规则的基本形式是P→Q或IF P THEN Q前提P满足时执行结论Q。选择题第3题问“从已知事实出发通过规则库求得结论”答案就是正向推理这是定义级考点不能犹豫。4.2 语义网络怎么画节点、弧、ISA/AKO链语义网络用节点表示概念或实体用有向弧表示关系。选择题第4题考的是AKO链、ISA链的作用答案是继承性。ISA表示“是一个具体实例”AKOA-Kind-Of表示“是一种子类”两者都让子节点继承父节点的属性。第一道应用题要求画“胡途是思源公司经理35岁住飞天胡同68号”画法是这样的建立胡途节点用ISA弧指向经理节点经理节点用AKO弧指向员工节点体现继承胡途节点分别用“年龄”弧指向35这个数值节点用“住址”弧指向“飞天胡同68号”节点用“工作于”弧指向思源公司节点。属性信息挂数值节点或字符串节点不要挂在关系弧上。第二道语义网络题是“某高校A与某高校B进行篮球比赛比分89:102”。这种事件型知识需要建一个“比赛”事件节点然后从比赛节点引出“参赛队1”弧指向高校A“参赛队2”弧指向高校B“比分”弧指向“89:102”节点。第三道题“某个学生读过三国演义”用谓词公式表示为∃x(student(x)∧read(x,三国演义))语义网络上就是学生节点和三国演义节点之间连一条“读过”弧节点上加存在量词∃标注。4.3 可信度CF的计算min/max不是概率乘法第一套试卷填空题第3题给出了三个关键公式CF(~A) -CF(A)CF(A1∧A2) min{CF(A1), CF(A2)}CF(A1∨A2) max{CF(A1), CF(A2)}这是确定性理论里的CF模型定义注意是取最小值和最大值不是概率论里的乘法。网上流传的二手答案里经常混入概率公式P(A∧B)P(A)×P(B)那是完全不同的体系。CF模型里可信度范围是[-1,1]CF(~A)-CF(A)具有对称性质而合取取最不信的那个、析取取最信的那个语义上非常直观A1和A2同时为真整件事的可信度取决于更低的那个只要有一个为真就可以取更高的那个。4.4 数字谜题的规则设计9位数整除问题的产生式系统应用题第7题要求用产生式系统求解给1到9九个数字排序列使前n个数字组成的整数能被n整除。这道题先考知识再考规则设计。能帮助求解的知识有两条能被5整除的数末位是0或5而0不在候选数字里所以第5位必须是5能被偶数整除的数本身必须是偶数所以偶数位必须放偶数数字2、4、6、8奇数位放奇数数字。综合数据库用一个序列N存储排列初始为{}。规则集可以写成r1: IF len(N)4 THEN N后面接5r2: IF len(N)为偶数 THEN N后面接一个偶数数字r3: IF len(N)为奇数 THEN N后面接一个非5的奇数数字结束条件得到的序列N前i个数组成的整数能被i整除。注意规则设计不是穷举而是先用整除性质剪掉大量分支再用回溯逐位验证。5. α-β剪枝手算避坑指南方向、阈值与四个翻车现场5.1 剪枝条件α剪枝与β剪枝的正确定义博弈树的α-β剪枝是应用题必考题手算时最容易乱的就是“到底剪哪个节点”。先记住基本定义MAX节点维护α值表示当前已找到的最大下界初始为-∞MIN节点维护β值表示当前已找到的最小上界初始为∞。α剪枝发生在MIN节点若某个MIN节点的β值小于或等于它任一祖先MAX节点的α值即祖先α ≥ 当前β则终止该MIN节点以下的搜索。β剪枝发生在MAX节点若某个MAX节点的α值大于或等于它任一祖先MIN节点的β值即当前α ≥ 祖先β则终止该MAX节点以下的搜索。口诀是MIN层β被压到祖先α以下就剪MAX层α被顶到祖先β以上就剪。本质上就是下界超过上界就剪。5.2 四个常见错误与排查现象一剪枝后最终倒推值和完整搜索不一样。原因是MAX层和MIN层的取值搞反把该取min的节点取了max。解决画树时先在节点上标MAX/MIN手算顺序是“叶子取定值向上逐层交替取max、min遇到可剪位置立即停”只要层类型标错结果必然全乱。现象二α、β初始值写成0。原因是把叶子估值的常见范围比如0到100当成了剪枝阈值的初始值。解决α初始永远是-∞β初始永远是∞这样才能保证第一个叶子读入后直接更新对应值。现象三遇到相等值不知道剪还是不剪。原因是不同教材对剪枝条件的“≤”和“”处理不一致。解决考前先确认指定教材的约定多数教材接受相等即剪即α剪枝条件β ≤ α、β剪枝条件α ≥ β如果教材严格要求严格不等按严格不等处理否则考试可能被扣分。现象四左子树还没完全算完就提前剪枝。原因是把某个中间节点的临时α值当成了最终值去和祖先β比较。解决严格按深度优先从左到右遍历只有某个节点的所有子节点都计算完或触发剪枝该节点的α/β才能作为最终值向上传递。6. 把试卷变成复习清单错题反推、面试追问与代码验证这套题最有价值的用法不是做一遍对答案而是用错题反向定位知识盲区。选择题错误集中在概念辨析填空题错误集中在记忆精度归结和MGU错误集中在置换方向理解语义网络错误集中在关系弧设计剪枝错误集中在博弈树层次逻辑。每错一类就回到对应章节重读教材并重做同类题两周后再把错题刷一遍直到完全手算无误。面试时考官常把简答题变成多轮追问比如你说“产生式系统由规则库、综合数据库、推理机组成”他会追问“冲突消解策略有哪些”此时需要补充按规则顺序、按优先级、按匹配度消解等策略。再如你说“MGU是最一般合一”他会追问“和普通合一的区别”回答是MGU不引入多余替换任何其他合一都能由它合成得到。复习时用这种追问方式自测能把记忆性知识变成理解性知识。最后一个验证技巧用代码跑一遍9位数整除问题确认手推的产生式规则真的能得到合法序列。def dfs(seq): if len(seq) 9: return seq for d in range(1, 10): if d in seq: continue n len(seq) 1 if (int(.join(map(str, seq [d]))) % n 0): res dfs(seq [d]) if res: return res return None print(dfs([]))这段代码就是第4.4节产生式规则的直接实现逐位选择未使用的数字每次检查前n位组成的整数能否被n整除满足则继续不满足就回溯换数字。运行结果是[3, 8, 1, 6, 5, 4, 7, 2, 9]对应序列381654729前1位到前9位分别能被1到9整除。代码逻辑和手推的规则完全一致唯一的区别是代码不需要提前约定第5位是5靠整除判断就能自然筛出来反而能验证规则r1的正确性。从那以后我每次拆这类考试题资源都强制走一遍“闭卷做题→对答案→按错题定位知识盲区→两周后重做错题”的流程真题和模拟题都用这个方式消化效果比反复看书好得多。这套题虽然老但符号主义的知识体系没有被大模型淘汰希望帮到你。本文还有配套的精品资源点击获取