人工智能初步学习笔记
第一章 人工智能概述
1.1 人工智能定义方法
- 类人思维方法(认知模型方法):基于人类思维工作原理的可检测理论去定义。
例如典型代表是贝尔曼( Bellman )于1978年提出的定义:人工智能是那些与人的思维、决策、问题求解和学习等有关活动的自动化;通用问题求解程序(general problem solving,GPS)。 - 类人行为方法(图灵测试方法):基于人类自身的智能去定义。
典型代表是库兹韦勒(Kurzweil) 于1990年提出的定义:人工智能是一种创建机器的技艺,这种机器能够执行需要人的智能才能完成的功能。 - 理性思维方法(思维法则方法):基于逻辑推理定义智能的方法。
典型代表 是查尼艾克(E.Charniak) 和麦克德莫特 (D.McDermott)于1985年提出的定义:人工智能是通过计算模型的使用来进行心智能力研究的。 - 理性行为方法(理性智能体方法):基于智能体定义智能
典型代表是尼尔森( N.J.Nilsson)于1998年提出的定义:人工智能关心的是人工制品中的智能行为。 - 理性行为方法与理性思维方法的关系:
首先,理性行为和理性思维强调的重点不同。理性思维方法强调的是正确思维,而理性行为方法强调的则是理性行动。
其次,理性行为可以依据理性思维进行。
再其次,理性行为不一定要依据理性思维进行。
1.2 人工智能发展简史
- 第一阶段(1956年以前):孕育期
- 第二阶段(1956-1970):形成期
- 第三阶段(1970-20世纪80年代末):知识应用期
- 第四阶段(20世纪80年代末-本世纪初):从学派分立到综合
- 人工智能研究的三大学派:
随着人工神经网络的再度兴起和布鲁克斯(R.A.Brooks) 的机器虫的出现, 人工智能研究形成了符号主义、联结主义和行为主义三大学派。- 符号主义学派(符号,功能的模拟)
是指基于符号运算的人工智能学派,他们认为知识可以用符号来表示,认知可以通过符号运算来实现。例如,专家系统等。 - 联结主义学派(神经元,结构的模拟)
是指神经网络学派,在神经网络方面,继鲁梅尔哈特研制出BP网络之后,人工神经网络研究掀起了第二次高潮。之后,随着模糊逻辑和进化计算的逐步成熟,又形成了“计算智能”这个统一的学科范畴。 - 行为主义学派(感知和行动,动作的模拟)
是指进化主义学派,在行为模拟方面,麻省理工学院的布鲁克斯教授1991年研制成功了能在未知的动态环境中漫游的有6条腿的机器虫。 - 三大学派的综合集成
随着研究和应用的深入,人们又逐步认识到,三个学派各有所长,各有所短,应相互结合、取长补短,综合集成。
- 符号主义学派(符号,功能的模拟)
- 人工智能研究的三大学派:
- 第五阶段(本世纪初以来):智能科学技术的兴起
- 智能科学技术学科研究的主要特征
(1)由对人工智能的单一研究走向以自然智能、人工智能、集成智能为一体的协同研究;
(2)由人工智能学科的独立研究走向重视与脑科学、认知科学、等学科的交叉研究;
(3)由多个不同学派的独立研究走向多学派的综合研究;
(4)由对个体、集中智能的研究走向对群体、分布智能的研究;
(5)智能技术应用已渗透到人类社会的各个领域。
- 智能科学技术学科研究的主要特征
- 历史上的人工智能大师
阿伦图灵:
马文·明斯基:首位获得图灵奖的人工智能学者
约翰·麦卡锡:1956年发起达特茅斯会议,并提出“人工智能”概念。
赫伯特·西蒙:符号主义学派创始人。
艾伦.纽厄尔:符号主义学派创始人之一
爱德华.费根鲍姆:知识工程的提出者
劳伊·雷迪:大型人工智能系统的开拓者 - 我国人工智能研究发展简况:
1.3 人工智能研究领域
- 机器思维
- 推理
确定性推理:基于一阶经典逻辑。
不确定性推理:基于非经典逻辑和概率等。 - 搜索
状态空间搜索:一种用状态空间法求解问题时的搜索方法;
与/或树搜索:一种用问题规约法求解问题时的搜索方法。
- 推理
- 机器感知
- 计算机视觉
- 模式识别
- 自然语言处理
- 机器行为
- 智能控制/制造
- 机器学习
- 符号学习
- 神经学习
- 计算智能
- 神经计算(神经网络)
- 进化计算
- 模糊计算
- 分布智能
- 智能系统
1.4 人工智能的现状与思考
1.多学科交叉研究
2.多学派和多技术融合研究
3.分布智能研究
4.群体智能研究
5.社会智能研究
6.集成智能研究
7.认知计算与情感计算研究
8.智能系统与智能服务
1.5 人工智能对人类的影响
经济、社会、文化
第二章 知识表示
知识的表示{一阶谓词逻辑表示法产生式规则表示法语义网络表示法框架表示法知识的表示\begin{cases} 一阶谓词逻辑表示法 \\产生式规则表示法 \\语义网络表示法 \\框架表示法 \end{cases} 知识的表示⎩⎪⎪⎪⎨⎪⎪⎪⎧一阶谓词逻辑表示法产生式规则表示法语义网络表示法框架表示法
2.1 知识与知识表示
- 知识的特性
相对正确性
不确定性:随机性、模糊性、不完全性、经验性
可表示性
可利用性
2.2 一阶谓词逻辑表示法
- 基础知识
- 指导变元、约束变元、自由变元
指导变元:量词后面的变元称为量词的指导变元;
约束变元:在一个量词的辖域中的与该量词的指导变元相同的变元称为约束变元;
自由变元: 其它的变元称为自由变元;
- 改名规则、换名规则、代替规则
- 改名规则: 一个变元在一个谓词公式中即可约束出现,又可自由出现,为了避免混淆,通常通过改名规则,使得一个谓词公式中一个变元仅以一种形式出现。
- 换名规则:在谓词公式中,将某量词辖域中出现的某个约束变元以及对应的指导变元更改为本辖域中没有出现过的个体变元符号,公式其它部分不变,谓词公式的等价性不变。
- 代替规则:在谓词公式中,将某量词辖域中出现的某个自由变元的所有出现用本辖域中未曾出现过的某个个体变元符号代替,谓词公式的等价性不变。
- 指导变元、约束变元、自由变元
- 谓词公式表示知识的步骤:
1.定义谓词及个体,确定每个谓词及个体的确切含义;
2.根据所要表达的事物或概念,为每个谓词中的变元赋以特定的值;
3.根据所要表达的知识的语义,用适当的联接符号将各个谓词联接起来,形成谓词公式。 - 例题
- 机器人移盒子
- 猴子摘香蕉
- 机器人移盒子
- 优点
严密性、自然醒、通用性、易于实现 - 局限性
效率低、知识表示能力差、组合爆炸
2.3 产生式表示法
- 基础知识
- 事实的表示
- 确定性知识:
(对象,属性,值):例如,(snow, color, white)或(雪,颜色,白)。其中,对象就是语言变量。
(关系,对象1,对象2):例如, (love, Wang Feng, country)或(热爱,王峰,祖国) - 非确定性知识:
(对象,属性,值,可信度因子): 其中,”可信度因子”是指该事实为真的相信程度。可用[0, 1]之间的一个实数来表示。
- 确定性知识:
- 事实的表示
- 产生式系统基本结构
- 综合数据库
(1)存放推理过程的各种当前信息
(2)作为推理过程选择可用规则的依据 - 规则库
- 控制系统
控制系统的主要任务:
1.选择匹配:按定策略从规则库种选择规则与综合数据库中的已知事实进行匹配。匹配是指把所选规则的前提与综合数据库中的已知事实进行比较,若事实库中存的事实与所选规则前提一致, 则称匹配成功,该规则为可用;否则,称匹配失败,该规则不可用。
2.冲突消解:对匹配成功的规则,按照某种策略从中选出条规则执行。
3.执行操作:对所执行的规则,若其后件为一个或多个结论,则把这些结论加入综合数据库;若其后件为一个或多个操作时,执行这些操作。
4.终止推理:检查综合数据库中是否包含有目标,若有,则停止推理。
5.路径解释:在问题求解过程中,记住应用过的规则序列,以便最终能够给出问题的解的路径。
- 综合数据库
- 例题
- 猴子摘香蕉
- 传教士与野人问题
N个传教士,N个野人,一条船,可同时乘坐k个人,要求在任何时刻,在河的两岸,传教士的人数不能少于野人的人数。问:如何过河? (以N=3, k=2为例求解。)
解:
描述:
初始状态:
目标状态:
- 猴子摘香蕉
- 优点
自然性、模块性、有效性 - 缺点
效率较低、不便于表示结构性知识
2.4 语义网络表示法
- 基本语义关系
- (1)实例关系: ISA
“具体与抽象”的概念,含义为“是一个”,表示一个事物是另一个事物的一个实例。
- (2)分类关系: AKO
亦称泛化关系,体现的是"子类与超类"的概念,含义为"是一种",表示一个事物是另一个事物的一种类型。
- (3)成员关系: A-Member-of
“个体与集体"的关系,含义为"是一员”,表示一个事物是另一个事物的一个成员。
- (4)聚类关系
亦称包含关系。指具有组织或结构特征的"部分与整体"之间的关系。常用的包含关系是:
Part-of: 含义为"是一部分",表示一个事物是另一个事物的一部分
- (5)属性关系
指事物和其属性之间的关系。常用的有:
Have: 含义为"有" , 表示一个结点具有另一个结点所描述的属性
Can: 含义为"能"、“会”,表示一个结点能做另一个结点的事情
- (6)时间关系
指不同事件在其发生时间方面的先后次序关系。
常用的时间关系有:
Before: 含义为"在前"
After: 含义为"在后"
- (7)位置关系
指不同事物在位置方面的关系.常用的有:
Located-on: 含义为"在…上面"
Located-under : 含义为"在. . .下面"
Located-at: 含义为"在…"
Located-inside : 含义为"在. . .内"
Located-outside : 含义为"在…外"
- (8)相近关系
指不同事物在形状、内容等方面相似或接近。
常用的相近关系有:
Similar-to: 含义为"相似"
Near-to: 含义为"接近"
- (1)实例关系: ISA
- 一些具体例子
- 情况的表示
“小燕子这只燕子从春天到秋天占有一个巢”
- 事件和动作的表示
“常河给江涛一个优盘”
事件节点表示:
动作节点表示:
- 情况的表示
- 推理过程
- 继承
(1) 建立一个结点表,用来存放待求解结点和所有以ISA 、AKO等继承弧与此结点相连的那些结点。初始情况下,表中只有待求解结点。
(2) 检查表中的第一个结点是否是有继承弧。如果有,就把该弧所指的所有结点放入结点表的末尾,记录这些结点的所有属性,并从结点表中删除第一个结点。如果没有继承孤,仅从结点表中删除第一个结点。
(3) 重复(2) ,直到结点表为空。此时,记录下来的所有属性都是待求解结点继承来的属性。 - 匹配
(1) 根据待求解问题的要求构造一个网络片断,该网络片断中有些结点或孤的标识是空的,称为询问处,它反映的是待求解的问题。
(2) 根据该语义片断到知识库中去寻找所需要的信息。
(3) 当待求解问题的网络片断与知识库中的某语义网络片断相匹配时,则与询问处相匹配的事实就是问题的解。
- 继承
- 优点
结构性、联想性、自索引性 - 缺点
非严格性、复杂性
2.5 框架表示法
- 一个框架结构为:
Frame<框架名>
槽名A: 侧面名A1 值A11, 值A12, 值A13…
侧面名A2 值A21, 值A22, 值A23…
槽名B: 侧面名B1 值B11, 值B12, 值B13…
侧面名B2 值B21, 值B22, 值B23…
槽名C: 侧面名C1 值C11, 值C12, 值C13…
侧面名C2 值C21, 值C22, 值C23 …
… - 优点
结构性、深层性、继承性、自然性 - 缺点
缺乏框架的形式理论、缺乏过程性知识表示、清晰性难以保证
第三章 确定性推理
推理{分类{按推理的逻辑基础分类:{演绎推理:一般到个别,三段论法(大前提、小前提、结论)归纳推理:个别到一般按所用知识的确定性分类:{确定性推理不确定性推理按推理中所用知识是否具有启发性分类:{启发式推理非启发式推理控制策略{推理策略:{推理方向控制策略:确定推理的控制方向,分为正向推理、逆向推理、混合推理及双向推理。求解策略:仅求一个解,还是求所有解或最优解等。限制策略:对推理的深度、宽度、时间、空间等进行的限制。冲突消解策略:当推理过程有多条知识可用时,如何从这多条可用知识中选出一条最佳知识用于推理的策略。搜索策略(第四章):{状态空间搜索{盲目搜索{宽度优先搜索深度优先搜索代价一致搜索启发式搜索{A算法A∗算法与或树搜索博弈树搜索{极大极小分析法阿尔法−巴塔剪枝推理\begin{cases} 分类\begin{cases} 按推理的逻辑基础分类 :\begin{cases} 演绎推理:一般到个别,三段论法(大前提、小前提、结论) \\归纳推理:个别到一般 \end{cases} \\按所用知识的确定性分类:\begin{cases} 确定性推理 \\不确定性推理 \end{cases} \\按推理中所用知识是否具有启发性分类:\begin{cases} 启发式推理 \\非启发式推理 \end{cases} \end{cases} \\控制策略 \begin{cases} 推理策略:\begin{cases} 推理方向控制策略:确定推理的控制方向,分为正向推理、逆向推理、混合推理及双向推理。 \\求解策略:仅求一个解,还是求所有解或最优解等。 \\限制策略:对推理的深度、宽度、时间、空间等进行的限制。 \\冲突消解策略:当推理过程有多条知识可用时,如何从这多条可用知识中选出一条最佳知识用于推理的策略。 \end{cases} \\搜索策略(第四章):\begin{cases} 状态空间搜索\begin{cases} 盲目搜索\begin{cases} 宽度优先搜索 \\深度优先搜索 \\代价一致搜索 \end{cases} \\启发式搜索\begin{cases} A算法 \\A*算法 \end{cases} \end{cases} \\与或树搜索 \\博弈树搜索\begin{cases} 极大极小分析法 \\阿尔法-巴塔剪枝 \end{cases} \end{cases} \end{cases} \end{cases}推理⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧分类⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧按推理的逻辑基础分类:{演绎推理:一般到个别,三段论法(大前提、小前提、结论)归纳推理:个别到一般按所用知识的确定性分类:{确定性推理不确定性推理按推理中所用知识是否具有启发性分类:{启发式推理非启发式推理控制策略⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧推理策略:⎩⎪⎪⎪⎨⎪⎪⎪⎧推理方向控制策略:确定推理的控制方向,分为正向推理、逆向推理、混合推理及双向推理。求解策略:仅求一个解,还是求所有解或最优解等。限制策略:对推理的深度、宽度、时间、空间等进行的限制。冲突消解策略:当推理过程有多条知识可用时,如何从这多条可用知识中选出一条最佳知识用于推理的策略。搜索策略(第四章):⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧状态空间搜索⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧盲目搜索⎩⎪⎨⎪⎧宽度优先搜索深度优先搜索代价一致搜索启发式搜索{A算法A∗算法与或树搜索博弈树搜索{极大极小分析法阿尔法−巴塔剪枝
- 产生式系统
- 正向推理
- 逆向推理
- 双向推理
为互相取长补短,可以把正向和逆向结合起来使用,采用双向推理的方式。双向推理有多种不同的实现方法,可以采用先正向后逆向,也可以采用先逆向后正向,还可以采用随机选择正向和逆向的推理方法。
- 正向推理
- 自然演绎推理
- 一些基础知识
- 谓词公式的可满足性:对于谓词公式P,如果至少存在D上的一个解释,使公式P在此解释下的真值为T,则称公式P在D上是可满足的。
- 常用的等价式有:
(1)双重否定律:¬¬P ⇔P
(2) 交换律:(P∨Q) ⇔(Q∨P), ( P∧Q) ⇔( Q∧P)
(3) 结合律:(P∨Q)∨R ⇔P∨(Q∨R)
(P∧Q)∧R ⇔P∧(Q∧R)
(4) 分配律:P∨(Q∧R) ⇔(P∨Q)∧(P∨R)
P∧(Q∨R) ⇔(P∧Q)∨(P∧R)
(5) 狄摩根定律:¬(P∨Q) ⇔¬P∧¬Q, ¬(P∧Q) ⇔¬P∨¬Q
(6) 吸收律 :P∨(P∧Q) ⇔P, P∧(P∨Q) ⇔P
(7) 补余律 :P∨¬P ⇔T, P∧¬P ⇔F
(8) 连词化归律:P→Q ⇔¬P∨Q
P↔Q ⇔(P→Q)∧(Q→P)
P↔Q ⇔(P∧Q)∨(¬Q∧¬ P)
(9) 量词转换律:¬(∃x)P ⇔(∀x)( ¬ P), ¬(∀x)P ⇔(∃x) (¬ P)
(10) 量词分配律:(∀x) (P∧Q) ⇔(∀x)P∧(∀x)Q
(∃x) (P∨Q) ⇔(∃x)P∨(∃x)Q
- 永真蕴含式:对谓词公式P和Q,如果P→Q永真,则称P永真蕴含Q,且称Q为P的逻辑结论,P为Q的前提,记作P ⇒Q。
常用的永真蕴含式如下:
(1)化简式:P∧Q ⇒P, P∧Q ⇒Q
(2) 附加式 :P ⇒P∨Q, Q ⇒P∨Q
(3) 析取三段论:﹁P, P∨Q ⇒Q
(4) 假言推理:P, P→Q ⇒Q
(5) 拒取式 :¬Q, P→Q ⇒¬P
(6) 假言三段论:P→Q, Q→R ⇒P→R
(7) 二难推理:P∨Q, P→R, Q→R ⇒R
(8) 全称固化:(∀x)P(x) ⇒P(y),其中,y是个体域中的任一个体,依此可消去谓词公式中的全称量词。
(9) 存在固化:(∃x)P(x) ⇒P(y),其中,y是个体域中某一个可以使P(y)为真的个体,依此可消去谓词公式中的存在量词。
- 置换:是形如{t1 /x1 ,t2 /x2 ,…,tn /xn }的有限集合。其中,t1 ,t2 ,…,tn 是项;x1 ,x2 ,…,xn 是互不相同的变元;ti /xi 表示用ti 替换xi 。并且要求ti 与xi 不能相同,xi 不能循环地出现在另一个ti 中。
定义:设θ={t1 /x1 ,t2 /x2 ,…,tn /xn }是一个置换,F是一个谓词公式,把公式F中出现的所有xi 换成ti (i=1,2,…,n),得到一个新的公式G,称G为F在置换θ 下的例示,记作G=Fθ。 - 合一:可理解为是寻找相对变量的置换,使两个或多个谓词公式一致。
定义:设有公式集F={F1 , F2 ,…,Fn },若存在一个置换θ,可使F1θ=F2θ=…=Fnθ,则称θ是F的一个合一。称F1 ,F2 ,…,Fn是可合一的。
最一般合一:设σ是谓词公式集F 的一个合一,如果对F的任意一个合一θ都存在一个置换λ,使得 θ= σ· λ,则称σ是一个最一般(或最简单)合一(most general unifier,简记为mgu)。
- 差异集:
设F = {F1, F2, · · · , Fn}是一个非空有限的公式集,从F中每个公式的第一个符号同时向右比较,直到发现第一个不相同的符号为止,从F的各个公式中取出那些以第一不一致符号开始的最大子表达式,并以这些子表达式为元素组成一个集合D,称D为F的一个差异集,也称分歧集合(Disagreement Set)。
例如:设S={P(x,y,z),P(x,f(a),h(b))},则不难看出,S有差异集D={y,f(a)} - 最一般合一置换的求取算法:
设S为非空有限公式集合,求S的最一般合一的算法如下:
(1)置k=0, Sk=S,σk=ε;
(2)若Sk只含有一个谓词公式,则算法停止,σk就是要求的最一般合一;
(3)求Sk的差异集Dk;
(4)若Dk中存在元素xk和tk,其中xk是变元,tk是项且xk不在tk中出现,则置Sk+1= Sk{tk/xk},σk+1=σk·{tk/xk},k=k+1,然后转(2);
(5)算法停止,S的最一般合一不存在。 - 自然演绎推理方法:
从一组已知为真的事实出发,直接运用命题逻辑或谓词逻辑中的推理规则推出结论的过程。最基本的推理规则有:
◆ 假言三段论:P→Q, Q→R ⇒P→R
◆ 假言推理:P, P→Q为真⇒Q
◆ 拒取式:¬Q, P→Q ⇒¬P
- 用例题解释
- 设个体域D = {1, 2},求公式A = (∀x)(∃y)P(x, y) 在D上的一个解释,并指出在该解释下公式A的真值。
解:由于公式A没有包含个体常量和函数,因此可以直接为谓词指派真值,设有
在这个指派下,公式A的真值为T。 - 设个体域D = {1, 2},求公式B =(∀x)P(f (x), a)在D上的一个解释,并指出在该解释下公式B的真值。
解:设对个体常量a和函数f (x)的真值指派为:
对谓词的真值指派为:
在该解释下公式B的真值是T。 - 置换合成实例:设
求θ与λ的合成。
解:先求出集合
满足定义中的条件需删除,得:
注:就是被替换。 - 求公式集S={P(a,x,f(g(y))),P(z,h(z,u),f(u))}的最一般合一。
解:
k=0:
S0=S, σ0=ε, S0不是单元素集,求得D0={a,z},其中z是变元,且不在a中出现,所以有
σ1=σ0·{a/z}=ε·{a/z}={a/z}
S1=S0{a/z}={P(a,x,f(g(y))),P(a,h(a,u),f(u))}
k=1:
S1不是单元素集,求得D1={x,h(a,u)},
σ2=σ1·{h(a,u)/x}={a/z}·{h(a,u)/x}={a/z,h(a,u)/x}
S2=S1{h(a,u)/x}={P(a,h(a,u),f(g(y))),P(a,h(a,u),f(u))}
k=2:
S2不是单元素集,D2={g(y),u},
σ3=σ2·{g(y)/u}={a/z,h(a,g(y))/x,g(y)/u}
S3=S2{g(y)/u}= {P(a,h(a,g(y),f(g(y))),P(a,h(a,g(y)),f(g(y)))}
={P(a,h(a,g(y)),f(g(y)))}
k=3:
S3已是单元素集,所以σ3就是S的最一般合一。 - 判定S={P(x,x),P(y,f(y))}是否可合一?
解:
k=0:
S0=S,σ0=ε,
S0不是单元素集,D0={x,y}
σ1=σ0·{y/x}={y/x}
S1=S0{y/x}={P(y,y),P(y,f(y))}
k=1:
S1不是单元素集,D1={y,f(y)},由于变元y在项f(y)中出现,所以算法停止,S不存在最一般合一。 - 例:设已知如下事实:R, S, R→T, S∧T →P, P →Q。求证:Q为真。
- 设有如下两个谓词公式:W (a) 和(∀x)(W (x)→Q(x))为真,求证Q (a)为真。
证明:由于W (a) 和W (x)这两个谓词的个体不同,因此不能直接进行推理,需要采用置换,使它们合一。其推理过程如下:
首先对(∀x)(W (x)→Q(x))进行全称固化推理,得出W (y)→Q(y);
然后用置换t={a/y}分别作用于W (a) 和W (y)→Q(y),得出W (a) 和W (a)→Q(a);
最后再利用假言推理得到W (a) ,W (a)→Q(a)⇒Q (a)
即Q(a)为真。 - 设已知如下事实:
(1) 如果是需要编程序的课,王程都喜欢。
(2) 所有的程序设计语言课都是需要编程序的课。
(3) C是一门程序设计语言课。
求证:王程喜欢C这门课。
证明:首先定义谓词
N(x): x是需要编程序的课。
L (x, y): x喜欢y。
P(x) : x是一门程序设计语言课
把已知事实及待求解问题用谓词公式表示如下:
N(x)→L(Wangcheng, x)
(∀x)( P(x)→N(x))
P(C)
应用推理规则进行推理:
P(y)→N(y) 全称固化
P(C),P(y)→N(y) ⇒N(C)假言推理{C/y}
N(C), N(x)→L(Wangcheng , x) ⇒L(Wangcheng , C) 假言推理{C/x}
因此,王程喜欢C这门课。
- 设个体域D = {1, 2},求公式A = (∀x)(∃y)P(x, y) 在D上的一个解释,并指出在该解释下公式A的真值。
- 一些基础知识
- 归结演绎推理
- 一些基本知识
- 前束范式:设F是一个谓词公式,如果其中的所有量词均非否定出现在公式的最前面,而它们的辖域为整个公式,则称F为前束范式。
- 定理3.1 设有谓词公式F,其标准子句集为S,则F为不可满足的充要条件是S为不可满足的。
- 子句集的化简
(1) 消去连接词“→”和“↔”
反复使用如下等价公式:
P→Q ⇔﹁P∨Q
P↔Q ⇔(P∧Q)∨(﹁P∧﹁Q)
(2) 减少否定符号的辖域
摩根定律
﹁(P∧Q) ⇔﹁P∨﹁Q
﹁(P∨Q) ⇔﹁P∧﹁Q
量词转换率
﹁(∀x)P(x) ⇔(∃x) ﹁P(x)
﹁(∃x)P(x) ⇔(∀x)¬P(x)
将每个否定符号“﹁”移到仅靠谓词的位置,使得每个否定符号最多只作用于一个谓词上。
(3) 对变元标准化
在一个量词的辖域内,把谓词公式中受该量词约束的变元全部用另外一个没有出现过的任意变元代替,使不同量词约束的变元有不同的名字。
(4) 化为前束范式
化为前束范式的方法:把所有量词都移到公式的左边,并且在移动时不能改变其相对顺序。
(5)消去存在量词
若存在量词不出现在全称量词的辖域内(即它的左边没有全称量词),只要用一个新的个体常量替换受该存在量词约束的变元,就可消去该存在量词。
若存在量词位于一个或多个全称量词的辖域内,例如(∀x1 )…(∀xn ) (∃y)P(x1 ,x2 ,…, xn ,y)则需要用Skolem函数f(x1 ,x2 ,…, xn )替换受该存在量词约束的变元y,然后再消去该存在量词。
(6)化为Skolem标准形
(7) 消去全称量词
(8) 消去合取词
在母式中消去所有合取词,把母式用子句集的形式表示出来。其中,子句集中的每一个元素都是一个子句。
(9) 更换变量名称
对子句集中的某些变量重新命名,使任意两个子句中不出现相同的变量名。由于任意两个不同子句的变量之间实际上不存在任何关系。这样,更换变量名是不会影响公式的真值的。 - 鲁滨逊归结原理
鲁滨逊归结原理{命题逻辑归结原理谓词逻辑归结原理鲁滨逊归结原理\begin{cases} 命题逻辑归结原理 \\谓词逻辑归结原理 \end{cases} 鲁滨逊归结原理{命题逻辑归结原理谓词逻辑归结原理- 基本思想
首先把欲证明问题的结论否定,并加入子句集,得到一个扩充的子句集S’。然后设法检验子句集S’是否含有空子句,若含有空子句,则表明S’是不可满足的;若不含有空子句,则继续使用归结法,在子句集中选择合适的子句进行归结,直至导出空子句或不能继续归结为止。 - 注意以下两个关键
第一,子句集中的子句之间是合取关系。因此,子句集中只要有一个子句为不可满足,则整个子句集就是不可满足的;
第二,空子句是不可满足的。因此,一个子句集中如果包含有空子句, 则此子句集就一定是不可满足的。 - 命题逻辑的归结:
子句集S是不可满足的,当且仅当存在一个从S到空子句的归结过程。 - 谓词逻辑的归结:
谓词逻辑中的归结式可用如下定义来描述:
定义25 设C1和C2是两个没有公共变元的子句,L1和L2分别是C1和C2中的文字。如果L1和﹁L2存在一个最一般合一σ,则称C12 =({C1σ}-{ L1σ})∪({ C2σ}-{ L2σ}) 为C1和C2的二元归结式,而L1和L2为归结式上的文字。
{对以上讨论做以下两点说明:
(1) 这里之所以使用集合符号和集合的运算,目的是为了说明问题的方便。即先将子句Ci σ和Li σ写成集合的形式,在集合表示下做减法和并集运算,然后再写成子句集的形式。
(2) 定义中还要求C1 和C2 无公共变元} - 应用因子概念,可对谓词逻辑中的归结原理给出如下定义:
定义26 若C1 和C2 是无公共变元的子句,则
① C1 和C2 的二元归结式;
② C1 和C2 的因子C2 σ2 的二元归结式;
③ C1 的因子C1 σ1 和C2 的二元归结式;
④ C1 的因子C1 σ1 和C2 的因子C2 σ2 的二元归结式。
这四种二元归结式都是子句C1 和C2 的二元归结式,记为C12 。
- 基本思想
- 归结演绎推理的方法:
- 命题逻辑的归结反演过程:
在命题逻辑中,已知F,证明G为真的归结反演过程如下:
①否定目标公式G,得﹁G;
②把﹁G并入到公式集F中,得到{F,﹁G};
③把{F,﹁G}化为子句集S。
④应用归结原理对子句集S中的子句进行归结,并把每次得到的归结式并入S中。如此反复进行,若出现空子句,则停止归结,此时就证明了G为真。 - 谓词逻辑的归结反演
谓词逻辑的归结反演过程与命题逻辑的归结反演过程相比,其步骤基本相同,但每步的处理对象不同。例如,在步骤(3)化简子句集时,谓词逻辑需要把由谓词构成的公式集化为子句集;在步骤(4)按归结原理进行归结时,谓词逻辑的归结原理需要考虑两个亲本子句的合一。
- 命题逻辑的归结反演过程:
- 归结演绎推理的归结策略
归结策略{排序策略{广度优先策略删除策略{纯文字删除策略重言式删除策略包孕删除策略限制策略{支持集策略线性输入策略祖先过滤策略单文字子句策略归结策略 \begin{cases} 排序策略\begin{cases} 广度优先策略 \end{cases} \\删除策略\begin{cases} 纯文字删除策略\\ 重言式删除策略\\ 包孕删除策略\\ \end{cases} \\限制策略\begin{cases} 支持集策略\\ 线性输入策略\\ 祖先过滤策略\\ 单文字子句策略\\ \end{cases} \end{cases}归结策略⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧排序策略{广度优先策略删除策略⎩⎪⎨⎪⎧纯文字删除策略重言式删除策略包孕删除策略限制策略⎩⎪⎪⎪⎨⎪⎪⎪⎧支持集策略线性输入策略祖先过滤策略单文字子句策略- 包孕删除法
包孕:设有子句C1 和C2 ,如果存在一个置换σ,使得C1 σ⊆C2 ,则称C1 包 孕于 C2 。例如
P(x) 包孕于 P(a) σ={a/x}
P(x) 包孕于 P(a)∨Q(z) σ={a/x}
P(x) ∨Q(a) 包孕于P(f(a))∨Q(a)∨R(y) σ={f(a)/x}
P(x) ∨Q(y) 包孕于P(a)∨Q(u)∨R(w) σ={a/x, u/y}
对子句集来说,把其中包孕的子句删去后,不会影响该子句集的不可满足 性。因此,可从子句集中删除哪些包孕的子句。 - 支持集策略
要求每一次参加归结的两个亲本子句中,至少应该有一个是由目标公式的否定所得到的子句或它们的后裔。完备的。 - 线形输入策略
要求每次参加归结的两个亲本子句中,至少应该有一个是初始子句集中的子句。所谓初始子句集是指开始归结时所使用的子句集。该策略可限制生成归结式的数目,简单高效,但是一种不完备策略。 - 祖先过滤策略
每次参加归结的两个亲本子句,只要满足以下两个条件中的任意一个就可进行归结:
(1) 两个亲本子句中至少有一个是初始子句集中的子句。
(2) 如果两个亲本子句都不是初始子句集中的子句,则一个子句应该是另一个子句的先辈子句。
所谓一个子句(例如C1)是另一个子句(例如C2)的先辈子句是指C2是由C1与别的子句归结后得到的归结式。 可以证明祖先过滤策略也是完备的。- 单文字子句策略:不完备*
- 包孕删除法
- 用归结反演求取问题的答案
一般步骤为:
(1)把已知条件用谓词公式表示,并化成相应的子句集S1;
(2)把待求解的问题也用谓词公式表示,然后将其否定,并与谓词ANSWER构成析取式G1;
(3)把G1化为子句集S2,并把子句集S2与S1合并构成新子句集S;
(4)对子句集S应用谓词归结原理进行归结,在归结过程中通过合一置换,改变ANSWER中的变元;
(5)如果得到归结式ANSWER,则问题的答案就在ANSWER谓词中。 - 一些例题
- 子句集化简:(∀x)((∀y)P(x,y)→﹁(∀y)(Q(x,y)→R(x,y)))
答:
(∀x)((∀y)P(x,y)→﹁(∀y)(Q(x,y)→R(x,y)))
(∀x)(﹁(∀y)P(x,y)∨﹁(∀y)(﹁Q(x,y)∨R(x,y)))
(∀x)((∃y)﹁P(x,y)∨(∃y)( Q(x,y) ∧﹁R(x,y)))
(∀x)((∃y)﹁P(x,y)∨(∃z)( Q(x,z) ∧﹁R(x,z)))
(∀x)(∃y)(∃z)(﹁P(x,y)∨( Q(x,z) ∧﹁R(x,z)))
设替换y和z的Skolem函数分别是f(x)和g(x),则替换后的式子为
(∀x)(﹁P(x,f(x))∨( Q(x,g(x)) ∧﹁R(x,g(x))))
(∀x)(﹁P(x, f(x))∨(Q(x, g(x))∧(﹁P(x, f(x))∧﹁R(x, g(x))))
(﹁P(x, f(x))∨Q(x, g(x)) ∧(﹁P(x, f(x))∨﹁R(x, g(x)))
﹁P(x, f(x))∨Q(x, g(x)),﹁P(x, f(x))∨﹁R(x, g(x))
﹁P(x, f(x))∨Q(x, g(x)),﹁P(y, f(y))∨﹁R(y, g(y)) - 例 设C1 =﹁P ∨Q ,C2 =﹁ Q,C3 =P,求C1 、C2 、C3 的归结式C123 。
解:
若先对C1 、C2 归结,可得到C12 =﹁P;
然后再对C12 和C3 归结,得到C123 =NIL;
如果改变归结顺序,同样可以得到相同的结果,即其归结过程是不唯一的。其归结归结过程可用下图来表示,该树称为归结树。
- 例 设C1 =P(a)∨R(x),C2 =﹁P(y)∨Q(b),求C12
解:取L1 = P(a), L2 =﹁P(y),则L1 和﹁L2 的合一是σ={a/y}。根据定义可得
C12
=( {C1 σ}-{L1 σ}) ∪({C2 σ}-{L2 σ})
=({P(a), R(x)}-{P(a)})∪({﹁P(a), Q(b)}-{﹁P(a)})
=({R(x)})∪({Q(b)})= {R(x), Q(b)} =R(x)∨Q(b) - 例 设C1 =P(x)∨Q(a),C2 =﹁P(b)∨R(x) ,求C12
解:由于C1 和C2 有相同的变元x,不符合谓词逻辑归结定义的要求。为了进行归结,需要修改C2 中变元x的名字为,令C2 =﹁P(b)∨R(y)。此时L1 = P(x), L2 =﹁P(b),L1 和﹁L2 的合一是σ={b/x}。则有
C12
=( {C1 σ}-{L1 σ})∪({C2 σ}-{L2 σ})
=({P(b), Q(a)}-{P(b)}) ∪({﹁P(b), R(y)}-{﹁P(b)})
=({Q(a)}) ∪({R(y)})= {Q(a), R(y)}
=Q(a)∨R(y) - 例 设C1 =P(x)∨﹁Q(b),C2 =﹁P(a)∨Q(y)∨R(z)
解:对C1 和C2 通过合一{a/x, b/y}的作用,可以得到两个互补对。
注意:求归结式不能同时消去两个互补对,其结果不是二元归结式。如在σ={a/x, b/y}下,若同时消去两个互补对所得R(z)不是C1 和C2 的二元归结式。 - 例 设C1 =P(x)∨P(f(a))∨Q(x) ,C2 =﹁P(y)∨R(b),求C12
解:对参加归结的某个子句,若其内部有可合一的文字,则在进行归结之前应先进行合一。本例C1 中有P(x)与P(f(a)),若它用们的合一σ={f(a)/x}进行代换,可得到C1 σ=P(f(a))∨Q(f(a));
此时可对C1 σ与C2 进行归结。选L1 = P(f(a)), L2 =﹁P(y),L1 和﹁L2 的合一是σ={f(a)/y},则可得到C1 和C2 的二元归结式为C12 =R(b)∨Q(f(a));
其中,C1 σ为C1 的因子。若C中有两个或两个以上的文字具有合一σ,则称Cσ为子句C的因子。若Cσ是一个单文字,则称它为C的单元因子。 - 例 设C1 =P(y)∨P(f(x))∨Q(g(x)) ,C2 =﹁P(f(g(a)))∨Q(b),求C12 。
解:
对C1 ,取合一σ={f(x)/y},得C1 的因子C1 σ=P(f(x))∨Q(g(x));
对C1 的因子和C2 归结(σ={g(a)/x }),可得到C1 和C2 的二元归结式C12 =Q(g(g(a)))∨Q(b) - 例 设已知的公式集为{P, (P∧Q)→R, (S∨T)→Q, T},求证结论R.
解:假设结论R为假, 将﹁R加入公式集,并化为子句集S={P,﹁P∨﹁Q∨R, ﹁S∨Q, ﹁T∨Q, T, ﹁R},其归结过程如下图的归结树所示。
- 例 已知
F: (∀x)((∃y)(A(x, y)∧B(y))→(∃y)(C(y)∧D(x, y)))
G: ﹁(∃x)C(x)→(∀x)(∀y)(A(x, y)→﹁B(y))
求证G是F的逻辑结论。
证明:先把G否定,并放入F中,得到的{F, ﹁G}为
{(∀x)((∃y)(A(x,y)∧B(y))→(∃y)(C(y)∧D(x,y))),
﹁(﹁(∃x)C(x)→(∀x)(∀y)(A(x,y)→﹁B(y)))}
再把{F,﹁G}化成子句集,得到
(1) ﹁A(x,y)∨﹁B(y) ∨C(f(x))
(2) ﹁A(u,v)∨﹁B(v) ∨D(u,f(u))
(3) ﹁C(z)
(4) A(m,n)
(5) B(k)
其中,(1)、(2)是由F 化出的两个子句,(3)、(4)、(5)是由﹁G化出的3个子句。
最后应用谓词逻辑的归结原理对上述子句集进行归结,其过程为
(6) ﹁A(x,y)∨﹁B(y) 由(1)和(3)归结,取σ={f(x)/z}
(7) ﹁B(n) 由(4)和(6)归结,取σ={m/x,n/y}
(8) NIL 由(5)和(7)归结,取σ={n/k}
因此,G是F 的逻辑结论。
上述归结过程可用如下归结树来表示
- 例 “快乐学生”问题
假设:任何通过计算机考试并获奖的人都是快乐的,任何肯学习或幸运的人都可以通过所有考试,张不肯学习但他是幸运的,任何幸运的人都能获奖。
求证:张是快乐的。
解:先定义谓词:
Pass(x, y) x可以通过y考试
Win(x, prize) x能获得奖励
Study(x) x肯学习
Happy(x) x是快乐的
Lucky(x) x是幸运的
再将问题用谓词表示如下:
“ 任何通过计算机考试并获奖的人都是快乐的”
(∀x)(Pass(x, computer)∧Win(x, prize)→Happy(x))
“ 任何肯学习或幸运的人都可以通过所有考试”
(∀x) (∀y) (Study(x)∨Lucky(x)→Pass(x, y))
“ 张不肯学习但他是幸运的”
﹁Study(zhang)∧Lucky(zhang)
“ 任何幸运的人都能获奖”
(∀x) (Lucky(x)→Win(x, prize))
结论“ 张是快乐的”的否定
﹁Happy(zhang)
将上述谓词公式转化为子句集如下:
(1) ﹁Pass(x, computer)∨﹁Win(x, prize)∨Happy(x)
(2) ﹁Study(y)∨Pass(y, z)
(3) ﹁Lucky(u)∨Pass(u, v)
(4) ﹁Study(zhang)
(5) Lucky(zhang)
(6) ﹁Lucky(w)∨Win(w, prize)
(7) ﹁Happy(zhang) (结论的否定)
- 例 “激动人心的生活”问题
假设:所有不贫穷并且聪明的人都是快乐的,那些看书的人是聪明的。李明能看书且不贫穷,快乐的人过着激动人心的生活。
求证:李明过着激动人心的生活。
解:先定义谓词:
Poor(x) x是贫穷的
Smart(x) x是聪明的
Happy(x) x是快乐的
Read(x) x能看书
Exciting(x) x过着激动人心的生活
再将问题用谓词表示如下:
“ 所有不贫穷并且聪明的人都是快乐的”
(∀x)((﹁Poor(x)∧Smart(x))→Happy(x))
“ 那些看书的人是聪明的”
(∀y) (Read(y) →Smart(y))
“ 李明能看书且不贫穷”
Read(Liming)∧﹁Poor(Liming)
“ 快乐的人过着激动人心的生活”
(∀z) (Happy(z)→Exciting(z))
目标“ 李明过着激动人心的生活”的否定
﹁Exciting(Liming)
将上述谓词公式转化为子句集如下:
(1) Poor(x)∨﹁Smart(x)∨Happy(x)
(2) ﹁Read(y)∨Smart(y)
(3) Read(Liming)
(4) ﹁Poor(Liming)
(5) ﹁Happy(z)∨Exciting(z)
(6) ﹁Exciting(Liming) (结论的否定)
- 例 “快乐学生”问题
- 例 设有如下子句集:
S={﹁I(x)∨R(x), I(a), ﹁R(y)∨L(y), ﹁L(a) }
用宽度优先策略证明S为不可满足。
解:宽度优先策略的归结树如下:
- 例设有如下子句集:
S={﹁I(x)∨R(x), I(a),﹁R(y)∨L(y), ﹁L(a) }
其中,﹁I(x)∨R(x)为目标公式的否定。用支持集策略证明S为不可满足。
解:
- 例用线性输入策略证明如下子句集S为不可满足S={﹁I(x)∨R(x), I(a), ﹁R(y)∨L(y), ﹁L(a) }
- 例设有如下子句集:S={﹁Q(x)∨﹁P(x), Q(y)∨﹁P(y),﹁Q(w)∨P(w) , Q(a)∨P(a) },用祖先过滤策略证明S为不可满足。
解:其祖先过滤策略归结策略的归结过程如下图 - 例设有如下子句集:S={﹁I(x)∨R(x), I(a), ﹁R(y)∨L(y), ﹁L(a) },用单文字子句策略证明S为不可满足。
- 例已知:
(1)如果x和y是同班同学,则x的老师也是y的老师。
(2)王先生是小李的老师。
(3)小李和小张是同班同学。
问:小张的老师是谁?
解:T(x,y)表示x是y的老师,C(x,y)表示x与y是同班同学,则
① 已知可表示成如下的谓词公式:
F1: (∀x)(∀y)(∀z)(C(x,y)∧T(z,x)→T(z,y))
F2:T(Wang,Li)
F3:C(Li,Zhang)
将它们化成子句集为S1={﹁C(x,y)∨﹁T(z,x)∨T(z,y)),T(Wang,Li), C(Li,Zhang)}
②把问题用谓词公式表示,并将其否定与谓词ANSWER作析取:
设小张的老师是u,则有T(u,Zhang)
G1: ﹁ T(u,Zhang)∨ANSWER(u)
③ 将析取式G1化成子句集S2,并将S1与S2合并为新子句集S:
S2={﹁T(u,Zhang)∨ANSWER(u)}
S=S1∪S2
={﹁C(x,y)∨﹁T(z,x)∨T(z,y)), …….(a)
T(Wang,Li), …….(b)
C(Li,Zhang), …….©
﹁T(u,Zhang)∨ANSWER(u)} …….(d)
④ 应用归结原理进行归结:
(e) ﹁C(Li,y)∨T(Wang,y) [a与b归结,(Li/x,Wang/z)]
(f)﹁ C(Li,Zhang) ∨ANSWER(u) [d与e归结,(Wang/u,Zhang/y)]
(g) ANSWER(Wang) [c与f归结]
⑤ 得到归结式ANSWER(Wang),答案即在其中:
u=Wang,即小张的老师是王先生。
- 子句集化简:(∀x)((∀y)P(x,y)→﹁(∀y)(Q(x,y)→R(x,y)))
- 一些基本知识
第四章 搜索策略
搜索策略:{状态空间搜索{盲目搜索{宽度优先搜索深度优先搜索代价一致搜索启发式搜索{A算法A∗算法与或树搜索博弈树搜索{极大极小分析法阿尔法−巴塔剪枝搜索策略:\begin{cases} 状态空间搜索\begin{cases} 盲目搜索\begin{cases} 宽度优先搜索 \\深度优先搜索 \\代价一致搜索 \end{cases} \\启发式搜索\begin{cases} A算法 \\A*算法 \end{cases} \end{cases} \\与或树搜索 \\博弈树搜索\begin{cases} 极大极小分析法 \\阿尔法-巴塔剪枝 \end{cases} \end{cases} 搜索策略:⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧状态空间搜索⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧盲目搜索⎩⎪⎨⎪⎧宽度优先搜索深度优先搜索代价一致搜索启发式搜索{A算法A∗算法与或树搜索博弈树搜索{极大极小分析法阿尔法−巴塔剪枝
- 概述:
- 状态空间法
- 求解问题的基本过程:
首先,为问题选择适当的“状态”及“操作”的形式化描述方法;
然后,从某个初始状态出发,每次使用一个“操作”,递增地建立起操作序列,直到达到目标状态为止;
最后,由初始状态到目标状态所使用的算符序列就是该问题的一个解。
- 求解问题的基本过程:
- 问题规约法
- 基本思想
当一问题较复杂时,可通过分解或变换,将其转化为一系列较简单的子问题,然后通过对这些子问题的求解来实现对原问题的求解。 - 分解
如果一个问题P可以归约为一组子问题P1 ,P2 ,…,Pn ,并且只有当所有子问题Pi都有解时原问题P才有解,任何一个子问题Pi 无解都会导致原问题P无解, 则称此种归约为问题的分解。即分解所得到的子问题的“与”与原问题P等价。
问题的分解和“与树”:
把一个复杂问题分解为若干个子问题时,可以用一个“与树”来表示这种分解。
- 等价变换
如果一个问题P可以归约为一组子问题P1 ,P2 ,…,Pn ,并且子问题Pi 中只要有一个有解则原问题P就有解,只有当所有子问题Pi 都无解时原问题P才无解, 称此种归约为问题的等价变换,简称变换。即变换所得到的子问题的“或”与原问题P等价。
问题的等价变换和“或树”:
把一个复杂的问题等价变换为若干个与之等价的新问题时,可用一个“或树”来表示这种变换。
- 可解节点
在与/或树中,满足以下三个条件之一的节点为可解节点:
①任何终止节点都是可解节点。
②对“或”节点,当其子节点中至少有一个为可解节点时,则该或节点就是可解节点。
③对“与”节点,只有当其子节点全部为可解节点时,该与节点才是可解节点。
- 基本思想
- 一些例题
- 例:二阶梵塔问题
设有三根钢针,它们的编号分别是1号、2号和3号。在初始情况下,1号钢针上穿有A、B两个金片,A比B小,A位于B的上面。要求把这两个金片全部移到另一根钢针上,而且规定每次只能移动一个金片,任何时刻都不能使大的位于小的上面。
解:设用Sk =(Sk0 , Sk1 )表示问题的状态,其中,Sk0 表示金片A所在的钢针号,Sk1 表示金片B所在的钢针号。
全部可能的问题状态共有以下9种:
S0 =(1, 1) S1 =(1, 2) S2 =(1, 3) S3 =(2, 1) S4 =(2, 2)
S5 =(2, 3) S6 =(3, 1) S7 =(3, 2) S8 =(3, 3)
初始状态集合S={S0 }
目标状态集合G={S4 , S8 }
初始状态S0 和目标状态S4 、S8 如下图
操作{Aij表示把金片A从第i号钢针移到j号钢针上;Bij表示把金片B从第i号钢针一到第j号钢针上。操作\begin{cases} Aij 表示把金片A从第i号钢针移到j号钢针上; \\Bij 表示把金片B从第i号钢针一到第j号钢针上。 \end{cases} 操作{Aij表示把金片A从第i号钢针移到j号钢针上;Bij表示把金片B从第i号钢针一到第j号钢针上。
共有12种操作,它们分别是:
A12 A13 A21 A23 A31 A32
B12 B13 B21 B23 B31 B32
根据上述9种可能的状态和12种操作,可构成二阶梵塔问题的状态空间图,如下图所示。
从初始节点(1, 1)到目标节点(2, 2)及(3, 3)的任何一条路径都是问题的一个解。其中,最短的路径长度是3,它由3个操作组成。例如,从(1, 1)开始, 通过使用操作A13 、B12 及A32 ,可到达(2, 2)。 - 例: 猴子摘香蕉问题(状态空间法)。在讨论知识表示时,我们曾提到过这一问题,现在用状态空间法来解决这一问题。
解:问题的状态可用4元组m, b, ON, H)表示。其中:
m 表示猴子的位置;
b 表示箱子的位置;
ON 表示猴子是否在箱子上,当猴子在箱子上时,y取1,否则y取0;
H 表示猴子是否拿到香蕉,当拿到香蕉时z取1,否则z取0。
可能的状态:
S0 : (a, b, 0, 0) 初始状态
S1 : (b, b, 0, 0)
S2 : (c, c, 0, 0)
S3 : (c, c, 1, 0)
S4 : (c, c, 1, 1) 目标状态
允许的操作为:
Goto(u):猴子走到位置u,即
(w, x, 0, 0)→(u, x, 0, 0)
Pushbox(v): 猴子推着箱子到水平位置v,即
(x, x, 0, 0)→(v, v, 0, 0)
Climbbox: 猴子爬上箱子,即
(x, x, 0, 0)→(x, x, 1, 0)
Grasp;猴子拿到香蕉,即
(c, c, 1, 0 )→(c, c, 1, 1)
猴子摘香蕉问题的状态空间图:
可见,由初始状态(a, b, 0, 0)到目标状态(c, c, 1, 1)的操作序列为:
{Goto(b), Pushbox©, Climbbox, Grasp} - 例 三阶梵塔问题。要求把1号钢针上的3个金片全部移到3号钢针上,如下图所示。
解:这个问题也可用状态空间法来解。
首先需要定义该问题的形式化表示方法。设用三元组(i, j, k),表示问题在任一时刻的状态,用“→”表示状态的转换。上述三元组中,i 代表金片C所在的钢针号;j 代表金片B所在的钢针号;k 代表金片A所在的钢针号。
问题归约法
解:其中(i, j, k)表示C在柱i, B在柱j, A在柱k上.
利用归约方法,问题可分解为以下三个子问题:
(1)把金片A及B移到2号钢针上的双金片移动问题。即(1,1,1)→(1,2,2)
(2)把金片C移到3号钢针上的单金片移动问题。即(1,2,2)→(3,2,2)
(3)把金片A及B移到3号钢针上的双金片移动问题。即(3,2,2)→(3,3,3)
其中,子问题(1)和(3)都是二阶梵塔问题,还可以再分解,(2)则是本原问题。
在该与/或树中,有7个终止节点,它们分别对应着7个本原问题。如果把这些本原问题从左至右排列起来,即得到了原始问题的解:
(1, 1, 1)→(3, 1, 1) (3, 1, 1)→(3, 2, 1) (3, 2, 1)→(2, 2, 1) (2, 2, 1)→(2, 2, 3)
(2, 2, 3)→(1, 2, 3) (1, 2, 3)→(1, 3, 3) (1, 3, 3)→(3, 3, 3)
- 状态空间法
- 状态空间搜索(**)
- 盲目搜索
- 基本思想
先把问题的初始状态作为当前扩展节点对其进行扩展,生成一组子节点,然后检查问题的目标状态是否出现在这些子节点中。若出现,则搜索成功,找到了问题的解;若没出现,则再按照某种搜索策略从已生成的子节点中选择一个节点作为当前扩展节点。重复上述过程,直到目标状态出现在子节点中或者没有可供操作的节点为止。 - 算法的数据结构和符号约定
Open表:用于存放刚生成的节点,未扩展的节点,Open表称为未扩展的节点表。
Closed表:用于存放已经扩展或将要扩展的节点,Closed称为已扩展的节点表。
S0:用表示问题的初始状态
Sg:用表示问题的目标状态 - 广度优先搜索(Breadth-first Search):
先生成的节点先扩展的策略;
搜索得到的解是搜索树中路径最短的解(最优解);
属于完备搜索策略;
队列。 - 深度优先搜索(Depth-first search):
首先扩展最新产生的(即最深的)节点,是后生成的节点先扩展的策略;
栈结构;
一般不能保证找到最优解; - 代价一致搜索(Uniform-cost/Cheapest-first search):
在代价树中,可以用g(n)表示从初始节点S0到节点n的代价,用c(n1, n2)表示从父节点n1到n2的代价。这样,对节点n2的代价有g(n2) = g(n1) + c(n1, n2);
- 基本思想
- 启发式搜索
- 贪心算法(代价一致 + 贪心)
- A算法
每一步都利用估价函数f(n)=g(n)+h(n)对Open表中的节点进行排序; - A*算法
- h(n)的单调限制
定义: 如果启发函数满足以下两个条件:
(1) h(Sg )=0;
(2) 对任意节点ni 及其任一子节点nj ,都有
0≤h(ni )-h(nj )≤c(ni , nj )
其中c(ni , nj )是ni 到其子节点nj 的边代价,则称h(n)满足单调限制。
注:这块不太懂
- h(n)的单调限制
- 盲目搜索
- 与或树搜索
*解树的代价
1.若n为终止节点,则其代价h(n) = 0
2.若n为或节点,且子节点为n1, n2, ……,nk,则n的代价为:
h(n) = min1≤i≤k {c(n, ni) + h(ni)}
其中,c(n, ni)是节点n到其子节点ni的代价。
3.若n为与节点,且子节点为n1, n2, ……, nk,则n的代价可用和代价法或最大代价法求出来:
若用和代价法,则计算公式为:h(n) = ∑2_(?=1)^?▒"[c(n, ni) + h(ni)]" ;
若用最大代价法,则其计算公式为:h(n) = max1≤i≤k {c(n, ni) + h(ni)}。
4.若n是端节点,但又不是终止节点,则n不可扩展,其代价定义为h(n) = +∞
5.根节点的代价即为解树的代价。- 一些例题
- 如图所示一棵与/或树,已知节点S4、S5、S9、S12、S13是本原问题,边上的数字是操作的代价。
试求:
(1)按和代价法发求出最优解树;
(2)按最大代价法求出最优解树。
解:
和代价法计算解树代价:
左边解树:hL(S1)=10
右边解树:hR(S1)=8
最大代价法计算解树代价:
左边解树: hL(S1)=6
右边解树:hR(S1)=7
- 解树的代价实例
h(n0)
=C(n0,n1)+h(n1)
=1+h(n1)
=1+C(n1,n3)+h(n3)
=1+1+h(n3)
=1+1+2+h(n5)+h(n6)
=1+1+2+1+h(n6)+h(n6)
=1+1+2+1+2+h(n7)+h(n8) +h(n6)
=1+1+2+1+2+h(n6)
=1+1+2+1+2+2+h(n7)+h(n8)
=1+1+2+1+2+2
= 9 - 与或树的启发式搜索举例(不懂)
已知其中:
h(n1)=2
h(n2)=4
h(n3)=4
h(n4)=1
h(n5)=1
h(n6)=2
h(n7)=0
h(n8)=0
解:
- 如图所示一棵与/或树,已知节点S4、S5、S9、S12、S13是本原问题,边上的数字是操作的代价。
- 一些例题
- 博弈树搜索:
- 博弈树的特点
(1) 博弈的初始状态是初始节点;
(2) 博弈树中的“或”节点和“与”节点是逐层交替出现的;
(3) 整个博弈过程始终站在某一方的立场上,例如MAX方。所有能使自己一方获胜的终局都是本原问题,相应的节点是可解节点;所有使对方获胜的终局都是不可解节点。 - 极大极小过程
对叶节点的估值方法是:那些对MAX有利的节点,其估价函数取正值;那些对MIN有利的节点,其估价函数取负值;那些使双方均等的节点,其估价函数取接近于0的值。
为非叶节点的值,必须从叶节点开始向上倒退。其倒退方法是:
对于MAX节点,由于MAX 方总是选择估值最大的走步,因此, MAX节点的倒退值应该取其后继节点估值的最大值。
对于MIN节点,由于MIN方总是选择使估值最小的走步,因此MIN 节点的倒推值应取其后继节点估值的最小值。
这样一步一步的计算倒推值,直至求出初始节点的倒推值为止。这一过程称为极大极小过程 - α-β剪枝
- 剪枝方法
(1) MAX节点(或节点)的α值为当前子节点的最大倒推值;
(2) MIN节点(与节点)的β值为当前子节点的最小倒推值;
(3) α-β剪枝的规则如下:
β剪枝: 任何MAX节点n的α值大于或等于它先辈节点的β值,则n 以下的分枝可停止搜索,并令节点n的倒推值为α。这种剪枝称为β剪枝。
α剪枝:任何MIN节点n的β值小于或等于它先辈节点的α值,则n 以下的分枝可停止搜索,并令节点n的倒推值为β。这种剪枝称为α剪枝。 - 举例解析
一个α-β剪枝的具体例子,如图所示。其中最下面一层端节点旁边的数字是假设的估值。
答:注:G的父节点是C,图中未标明。以下为个人见解,有错误欢迎指出。
第一步:K、L、M做比较,取最小值K,F点确定为4
第二步:G点的N和F点K大小进行比较,如果N是G点的最小值,由于G的父节点(C)是取较大值,1<4,无法升高G的父节点的值,所以G点的另一分支可停止搜索,划掉该值。
第三步:C的值可以确定为4
第四步:H的值取5,C与H值作比较,由于D取较大值,假设H就是最大值,D=H=5,A点取得是C和D的最小值,C=4<D=5,D的结果值无法降低A的取值,所以D的右枝可以截掉。
第五步:A的值可以确定为4
第六步:I的值为0,J点的S和I点大小进行比较,如果S是J点的最小值,由于E是取较大值,-6<1,J点无法升高E点的值,所以J点的另一分支可停止搜索,划掉该值。
第七步:E的值可以确定为0
第八步:A的值为4,B点的E和A点大小进行比较,如果E是B点的最小值,由于S0是取较大值,0<4,B点无法升高S0点的值,所以B点的其他分支可停止搜索,划掉该值。
第九步:S0的值可以确定为4
- 剪枝方法
- 例子
- 例:一子棋游戏
设有一个三行三列的棋盘,如下图所示,两个棋手轮流走步,每个棋手走步时往空格上摆一个自己的棋子,谁先使自己的棋子成三子一线为赢。设MAX方的棋子用×标记,MIN方的棋子用○标记,并规定MAX方先走步。
解:估价函数:
e(+P):P上有可能使×成三子为一线的数目;
e(-P):P上有可能使○成三子为一线的数目;
当MAX 必胜e§为正无穷大;
MIN 必胜e§为负无穷大。
棋局即估价函数
具有对称性的棋盘可认为是同一棋盘。如下图所示:
×为MAX方的棋子
○为MIN方的棋子
其e§=e(+P)-e(-P)=5-4=1
一子棋的极大极小搜索
设MAX方先走步:
- 例:一子棋游戏
- 博弈树的特点
第五章 不确定性推理
- 可能需要的数学知识
- 联合概率与条件概率的关系
P(a∣b)=P(a,b)P(b)P(a|b)= \frac{P(a,b)}{P(b)} P(a∣b)=P(b)P(a,b)
P(x1∣x2)=P(x1,x2)P(x2)=P(x1,x2)∑x1P(x1,x2)P(x1|x2)= \frac{P(x1,x2)}{P(x2)}= \frac{P(x1,x2)}{\sum_{x1} P(x1,x2)}P(x1∣x2)=P(x2)P(x1,x2)=∑x1P(x1,x2)P(x1,x2)
Productrule:P(a,b)=P(b)P(a∣b)Product rule:P(a,b)=P(b)P(a|b)Productrule:P(a,b)=P(b)P(a∣b)
P(x1,x2,x3)=P(x1)P(x2∣x1)P(x3∣x1,x2)P(x1,x2,x3)= P(x1)P(x2|x1)P(x3|x1,x2)P(x1,x2,x3)=P(x1)P(x2∣x1)P(x3∣x1,x2)
Chainrule:P(x1,x2,...xn)=∏P(xi∣x1,x2...xi−1)i=1,2,...,nChain rule :P(x1,x2,...xn)= \prod P(xi|x1,x2...xi-1)i =1,2,...,nChainrule:P(x1,x2,...xn)=∏P(xi∣x1,x2...xi−1)i=1,2,...,n - 贝叶斯
P(x∣y)=P(y∣x)P(y)P(x)P(x|y)= \frac{P(y|x)}{P(y)}P(x) P(x∣y)=P(y)P(y∣x)P(x) - independent:如果任意x,y满足 P(x,y)= P(x)P(y),或者满足P(x|y)= P(x) ,则记为
- 联合概率与条件概率的关系
- 研究三元组的独立性
- X —> Y —> Z
此时X和Z不独立,但当给定Y时,X和Z独立。 - Y <— X —> Z
此时X和Z不独立,但当给定Y时,X和Z独立。 - X —> Z <— Y
此时X和Y独立,但当给定Z时,X和Y不独立。 - 非独立 | 独立
- 如果一个图有多条路径,所有路径都能保证独立,才能判断两个点互相独立。
- 不同计算顺序均可
- X —> Y —> Z
- 例题
- 如图判断是否独立
答:只有第一个独立 - 如图判断是否独立
答:第1,2,5独立。 - 如图判断是否独立
答:第2个独力。 - 这个不太理解?
- 例子
- 例子 P(B|a)
- Same Example in Equations
这是在网上搜到的,觉得很全:
人工智能经典习题
人工智能初步学习笔记相关推荐
- MOOC人工智能原理学习笔记1
人工智能原理学习笔记1 The Foundations of AI: Philosophy Mathematics Economics Neuroscience Psychology Computer ...
- 人工智能导论学习笔记02
人工智能导论学习笔记02--第二章 :人工智能哲学基础 人工智能导论学习笔记 人工智能导论学习笔记02--第二章 :人工智能哲学基础 第一讲 大历史观下的人工智能 宇宙演化 人类与生命进化 机器进化 ...
- 人工智能概论学习笔记(一):CPU GPU
人工智能概论学习笔记(一):CPU & GPU 作者:王洋子豪 链接:https://www.zhihu.com/question/19903344/answer/13779421 来源:知乎 ...
- 山东大学软件学院人工智能导论学习笔记
课程为山东大学软件学院人工智能专业2020年大二下学期的"人工智能导论"课程 目前课程内容:<人工智能导论(第四版)>1.2.3.4.5.6章 本学习笔记采用一种类似框 ...
- 自兴动脑人工智能课程学习笔记一:机器学习
一.人工智能时代首选python语言 (1)Python是人工智能和数据科学领域的主流语言,快速.高效.实用.Python常用的工具库Pandas.Numpy.Matplotlib.Scikit-le ...
- 人工智能入门学习笔记(一)
家人们,好久不见哈!最近在尝试着学习人工智能的相关知识和具体技能呀.说实话,当像我这样的小白初探人工智能体系时,总是被很多未知的名词以及茫茫内容所淹没,便去想通过网络学习帮助自己建立正确的人工智能基本 ...
- 《游戏人工智能》学习笔记
复习笔记 chapter 1 游戏人工智能是人工智能科学技术领域的一个分支 人工智能游戏的研究内容是如何将人工智能的理论.方法和技术应用于开发智能游戏.提高游戏角色的智能水平,主要包括智能游戏角色的行 ...
- 人工智能原理学习笔记
人工智能原理笔记 第一章:绪论 什么是人工智能 像人一样思考 合理地思考 像人一样行动 合理地行动 左侧的定义根据与人类表现的逼真度来衡量成功,而右侧的定义依靠一个称为合理性(rationality) ...
- HCIA-AI人工智能概览学习笔记
人工智能概览 人工智能概述 人工智能:用于研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用的一门新的技术科学. 人工智能目的:让机器能够像人一样思考,让机器拥有智能. 人工智能是一门交叉 ...
- 人工智能导论学习笔记(考前复习)
文章目录 前言 正文 搜索问题的形式化 无信息搜索 什么是树搜索和图搜索 Uniform Cost Search 一致代价搜索 深度受限搜索 迭代加深的深度优先搜索 双向搜索 无信息搜索的评价 有信息 ...
最新文章
- 【Android】Mac Android adb 配置
- Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】
- c语言复杂函数转换,详解C语言常用的一些转换工具函数.pdf
- 报告称相比南方 数字化平台对北方小微商家助力作用更大
- 在 Google 工作十年后的感悟
- 教老婆学python
- span标签置灰_ant-desgin-vue——tree自定义不可选用的置灰或禁用
- 判断IE版本并给出提示升级浏览器
- 一个包含30行代码的Python项目:如何在您最喜欢的Twitcher流式传输时设置SMS通知...
- intel UHD graphics 620/630 -win7 驱动
- 数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析
- Java中Character(类型char)类及类型详解
- swift版QQ音乐播放器(一)
- python-爬取糗事百科段子
- 震惊!我用Python分析了天蚕土豆的玄幻三部曲竟然发现...
- 【python】子目录的调用
- win10系统安装步骤
- Android面试题(二)Android高级/资深面试题
- [selenium爬知乎热榜
- 点击率增50%,时长增3倍,映客直播AI实践(附PDF)