第五章 人工智能语言与问题求解.docx
《第五章 人工智能语言与问题求解.docx》由会员分享,可在线阅读,更多相关《第五章 人工智能语言与问题求解.docx(12页珍藏版)》请在冰豆网上搜索。
第五章人工智能语言与问题求解
第五章人工智能语言与问题求解
本文由lincai_xia贡献
-人工智能语言与问题求解
主要内容
学习人工智能语言
了解人工智能语言使用人工智能语言
用搜索解决问题
搜索及其类型盲目搜索宽度优先搜索深度优先搜索启发式搜索与博弈
人工智能语言概述
1、什么是人工智能语言
人工智能语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。
能够用它来编写程序求解非数值计算、知识处理、推理、规划、决策等各种复杂的智能问题。
人工智能语言概述
2、人工智能语言的特点
•具有符号处理能力;•适合于结构化程序设计,容易编程;•具有递归和回溯的功能;•具有人机交互能力;•适合于推理;•能够融合过程与数据结构,具有模式匹配机制。
与其他语言的关系:
都可以用来帮助人们解决问题。
人工智能语言概述
3、人工智能语言的种类
◆Prolog:
以谓词逻辑为基础,使计算机能够进行归结演绎TurboProlog、VisualProlog◆LISP:
其程序是由一组函数组成,程序的执行过程就是一系列的函数调用和求值的过程◆其他:
Smalltalk是一种面向对象的语言,其中所涉及的类、对象和继承等概念,与人工智能特别是知识表示和知识库具有天然的联系。
TurboProlog的交互环境窗口
VisualProlog的交互环境窗口
CommonLISP
了解Prolog
谓词逻辑-谓词逻辑-Prolog的理论基础的理论基础
◆谓词:
用来描述对象的状态、性质及对象之间关系的词。
◆逻辑:
事物间的因果关系。
例如:
小明喜欢(打)羽毛球关系对象1对象2喜欢小明羽毛球likexiaomingbadmintonlike(xiaoming,badminton)
Prolog语言的基本特点
1.Prolog语言是一种智能型的描述语言,用传统的高级语言求
2.3.4.5.6.
解问题,程序员必须写出求解问题的全部过程细节,即告诉计算机如何求解问题,用Prolog语言求解问题,只需要程序员告诉计算机求解的问题是什么。
Prolog语言接近于自然语言,语句种类少,只有事实,规则和目标三种语句,易于学习和掌握。
用Prolog语言中的事实和规则可方便地表达知识,元逻辑操作使得存取、管理以及处理知识更加方便、灵活。
程序与数据统一。
逻辑性强。
Prolog语句采用逻辑表达形式,所以易于保证Prolog程序的正确性。
Prolog程序的执行以归结院里为基础自动地实现对问题的求解,从而使它具有超越传统高级语言的功能。
了解Prolog
Prolog的基本语句的基本语句
◆事实:
表示对象的状态、性质或对象之间的关系。
p(x,y,…).其中的P是谓词,它描述事物的性质或事物间关系;参数x,y,代表事物。
likes(xiaofang,badminton).
Prolog的基本语句的基本语句
◆规则:
表示对象之间的因果关系、蕴涵关系或对应关系。
p(x,y,…):
-q(x,y,…).friend(X,xiaohua):
-likes(X,pingpong).
结论Prolog的规则说明形式P(x,y,…:
名称规则头连接符构成与作用定义谓词p表示“如果”由一条或多条语句构成,语句间用“,”表示并且,“,”分隔;q是谓词参数可以是常量或变量表示一条规则结束备注参数可以是常量或变量前提
q(x,y,…)规则体
.
结束符
假设用parallel(x,y)表示直线x平行于直线y,则可用下图表示一条平行线定理:
Parallel(x,y):
-parallel(x,z),parallel(y,z)
规则头如果规则体并且
Prolog规则表示的例子
Prolog的基本语句的基本语句
◆查询(Query)又称为目标:
是用户向计算机提出的
问题。
查询语句可以写入程序之中,也可以在运行程序之后在输入计算机。
◆Prolog查询语句的一般形式:
Goal:
p(x,y,…)
形式
Goal:
P(x,y,…)
名称
构成与作用
备注
系统提示符提示用户输入查询语句语句查询由一条或多条事实语句构成,语“,”表示句间用“,”分隔,其中没一条“并且”,语句成为一个子目标。
“而且”
.
语句结束符
用“.”构成,标志一条语句结束。
例如:
我们已经知道这样一组事实和规则:
Play(zhangqiang,baseball).play(zhangqiang,basketball).Play(wangming,x):
-play(zhangqiang,x).
常量/常量/变量常量变量
查询语句
查询答案
Goal:
play(zhangqiang,basketball).Yes/*是的*//*张强打棒球吗*/Goal:
play(wangming,x)./*王明打什么球*/X=baseball/*王明打棒球*/X=basketball/*张强打篮球*/
Prolog语言的内部谓词
Write(x1,x2,…xn)是把项xi的值显示在屏幕上;Nl的功能是换行;Readln(x)的功能是从键盘上读取一个字符串并约束给变量x;
了解Prolog
Prolog的运行机理
◆例化:
例化:
在Prolog中若变量X还没有值,则称之为自由变量,一旦变量X取得了一个值,则称之为约束变量,或者说X被某一个值例化了。
friend(X,xiaohua).在X有值以前它是自由变量,若X=xiaoming,则X被xiaoming例化例化了例化
◆匹配:
匹配:
当两个谓词的名称相同,参数的个数、类型相同,并且还满足某些条件时,则这两个谓词可以匹配匹配。
匹配
friend(X,xiaohua)friend(xiaoming,xiaohua)当X是自由变量时,上面两个谓词friend是可以匹配的。
了解Prolog
Prolog的运行机理
◆搜索与回溯走迷宫
以上这种走不通再返回去寻找另一条路的方式,以上这种走不通再返回去寻找另一条路的方式,称为回溯
了解Prolog
Prolog求解问题的过程
◆首先从目标出发,不断地进行例化、匹配,有时
还要进行回溯,直到目标被完全满足或不能满足时为止。
了解Prolog
简单的Prolog程序
l
ikes(xiaofang,badminton).likes(xiaoming,pingpong)./*以下2行是一组事实*/
friend(X,xiaohua):
-likes(X,pingpong).?
-friend(X,xiaohua).
输出结果:
输出结果:
X=xiaoming
/*本行是规则*//*本行是目标*/
使用Prolog
Prolog的使用方法
◆TurboProlog◆VisualProlog
TurboProlog的使用的使用
TurboProlog的基本语法
constants<常量说明语句常量说明语句>常量说明语句domains<领域说明语句领域说明语句>领域说明语句database<数据库说明语句数据库说明语句>数据库说明语句predicates<谓词说明语句谓词说明语句>谓词说明语句clauses<子句语句子句语句>子句语句goal<目标语句目标语句>目标语句/*<注释注释>注释*/
TurboProlog的程序示例
domainsname,thing=symbolpredicateslikes(name,thing)friend(name,thing)clauseslikes(xiaofang,badminton).likes(xiaoming,pingpong).friend(X,xiaohua):
-likes(X,pingpong).goalfriend(X,xiaohua),write(X,"isxiaohua'sfriend.").
用TurboProlog进行数值计算进行数值计算
例1从键盘输入2个整数,求两数之和。
程序:
goalreadint(X),/*输入一个整数给输入一个整数给X*/输入一个整数给readint(Y),/*输入一个整数给输入一个整数给Y*/输入一个整数给Z=X+Y,write(X,"+",Y,"=",Z),nl./*输出计算结果输出计算结果Z*/输出计算结果
用TurboProlog求解阶乘问题求解阶乘问题
例2阶乘问题:
n!
=n*(n-1)*(n-2)*…*3*2*1
汉诺塔问题
例3:
传说在古代印度的贝拿勒斯圣庙里,安放了一块黄铜板,板上插了三根宝石柱,在其中一根宝石柱上,自上而下按由小到大的顺序串有64个金盘子。
要求将这64个盘子从柱1移到柱3。
在移动时必须遵照以下规则:
a)一次只能移一个盘子;b)盘子只能在三个柱子上存放;c)大盘任何时候不能放在小盘上面。
问应该如何移动?
汉诺塔问题的求解思路
若设定盘子的数目为N:
第1步:
将柱1上的N-1个盘子从柱1移到柱2上(可借助柱3);第2步:
将柱1上剩下的一个盘子从柱1直接移到柱3上;第3步:
将柱2上的N-1个盘子从柱2移到柱3上(可借助柱1)。
汉诺塔问题的求解程序
搜索及其类型
1、什么是搜索
◆人工智能所要解决的问题大部分不具备明确的解题步骤,人工智能所要解决的问题大部分不具备明确的解题步骤,
而只能是利用已有的知识一步一步地摸索前进。
而只能是利用已有的知识一步一步地摸索前进。
◆根据问题的实际情况不断寻找可利用的知识,从而构造一根据问题的实际情况不断寻找可利用的知识,
条代价较少的推理路线,条代价较少的推理路线,使问题得到圆满解决的过程称之为搜索。
搜索及其类型
2、可以用搜索解决的问题
8数码问题猴子和香蕉问题旅行商问题
走迷宫博弈问题规划问题…………
搜索及其类型
3、常用的搜索技术
◆盲目搜索又称无信息/穷举式搜索,只能按照预先规定的搜索控制策略进行又称无信息/穷举式搜索,搜索,没有任何中间信息来改变这些控制策略。
搜索,没有任何中间信息来改变这些控制策略。
具有盲目性,效率不高,不便于复杂问题的求解。
具有盲目性,效率不高,不便于复杂问题的求解。
具体可以分为宽度优先搜索和深度优先搜索两种。
具体可以分为宽度优先搜索和深度优先搜索两种。
◆启发式搜索在搜索求解过程中,在搜索求解过程中,根据问题本身的特性或搜索过程中所产生的一些与问题有关的启发性信息,一些与问题有关的启发性信息,指导搜索朝着最有希望的推理方向前进,加速问题的求解过程并找到最优解。
向前进,加速问题的求解过程并找到最优解。
盲目搜索
宽度优先搜索
◆基本思想从初始节点So开始,So开始从初始节点So开始,逐层地对节点进行扩展并考察它是否为目标节点,在第n层的节点没有全部扩展并考察之前,不对第n+1n+1层的节点,在第n层的节点没有全部扩展并考察之前,不对第n+1层的节点进行扩展。
它是一种先生成的节点先扩展的搜索方法。
先生成的节点先扩展的搜索方法节点进行扩展。
它是一种先生成的节点先扩展的搜索方法。
◆课件演示8数码问题的宽度优先搜索过程数码问题的宽度优先搜索过程
盲目搜索
宽度优先搜索示例
◆求解八数码问题
宽度优先搜索示例
8数码问题的宽度优先搜索树数码问题的宽度优先搜索树
盲目搜索
深度优先搜索
◆深度优先搜索中,搜索树是从树根开始一枝一枝逐渐生成深度优先搜索中,
的。
它是一种后生成的节点先扩展的搜索方法。
它是一种后生成的节点先扩展的搜索方法。
后生成的节点先扩展的搜索方法
◆基本思想:
基本思想:
从初始节点So开始,在其子节点中选择一个节点进行考察,So开始从初始节点So开始,在其子节点中选择一个节点进行考察,若不是目标节点,则再在该子节点的子节点中选择一个节点进行考察,是目标节点,则再在该子节点的子节点中选择一个节点进行考察,如果该子节点可以扩展,则扩展该子节点,依次向下搜索,如果该子节点可以扩展,则扩展该子节点,依次向下搜索,在搜索树的每一层始终先只扩展一个子节点,如此一直向下搜索,索树的每一层始终先只扩展一个子节点,如此一直向下搜索,直到某个子节点既不是目标节点又不能继续扩展时,到某个子节点既不是目标节点又不能继续扩展时,才从当前节点返回上
一级节点,沿另一方向又继续前进。
返回上一级节点,沿另一方向又继续前进。
盲目搜索
深度优先搜索示例
◆求解八数码问题(课件演示)求解八数码问题(课件演示)
深度优先搜索示例
8数码问题的深度优先搜索树
盲目搜索
有界深度优先搜索
◆在深度优先搜索的基础上,给出了搜索树深度限制,当从在深度优先搜索的基础上,给出了搜索树深度限制,
初始节点出发沿某一分枝扩展到一限定深度时,就不能再初始节点出发沿某一分枝扩展到一限定深度时,继续向下扩展,而只能改变方向继续搜索。
继续向下扩展,而只能改变方向继续搜索。
算法示例
◆八数码问题课件演示)八数码问题(课件演示课件演示
启发式搜索
启发式搜索
◆
是指在控制性知识中增加关于被解问题和相应任务的某些特性,是指在控制性知识中增加关于被解问题和相应任务的某些特性,利用启发性信息来确定节点的生成、扩展和搜索顺序,用启发性信息来确定节点的生成、扩展和搜索顺序,指导搜索朝着最有希望的方向前进的一类搜索方法。
最有希望的方向前进的一类搜索方法。
启发式搜索的特点
◆◆◆◆◆
大多是深度优先搜索的改进,即尽量沿着最有希望的路径,向深度大多是深度优先搜索的改进,即尽量沿着最有希望的路径,方向小范围前进;方向小范围前进;在有多条路可走时,会给出该走哪条路径的建议,在有多条路可走时,会给出该走哪条路径的建议,从而指导搜索过程朝最有利的方向前进;程朝最有利的方向前进;利用问题求解的先验知识,使之尽快找到问题的解;利用问题求解的先验知识,使之尽快找到问题的解;可采用估值的方法进行搜索指导;可采用估值的方法进行搜索指导;生成的状态空间小、搜索时间短且效率高、控制性好,生成的状态空间小、搜索时间短且效率高、控制性好,易于使问题得到解。
得到解。
启发式搜索
启发性信息的类型
◆◆◆
有效地帮助确定扩展节点的信息,即用于决定应先扩展哪一个节点,有效地帮助确定扩展节点的信息,即用于决定应先扩展哪一个节点,以免盲目扩展。
以免盲目扩展。
有效地帮助决定哪些后继节点应被生成的信息,有效地帮助决定哪些后继节点应被生成的信息,即用于决定应生成哪些后继节点,以免盲目地生成过多无用节点。
哪些后继节点,以免盲目地生成过多无用节点。
能决定在扩展一个节点时哪些节点应从搜索树上删除的信息,能决定在扩展一个节点时哪些节点应从搜索树上删除的信息,即用于决定应删除哪些无用节点,以免造成时
空浪费。
于决定应删除哪些无用节点,以免造成时空浪费。
估价函数
◆◆◆◆
用来估价节点重要性的函数f(n)=g(n)+h(n)g(n)是从初始节点到节点的已经实际付出的代价;是从初始节点So到节点的已经实际付出的代价;是从初始节点到节点n的已经实际付出的代价h(n)是从节点到目标节点的最优路径的估计代价是从节点n到目标节点是从节点到目标节点Sg的最优路径的估计代价
启发式搜索示例
设估价函数为f(n)=g(n)+h(n),,
其中g其中(n)表示节点表示节点n的搜索深度,的搜索深度,的搜索深度h(n)表示节点与表示节点n与表示节点目标节点两个棋局之间位置不相同的棋子数。
每个节点左边的蓝色数字表示其估价值。
博弈与启发式搜索
博弈
◆诸如下棋、打牌、战争等一类竞争性的智能活动。
诸如下棋、打牌、战争等一类竞争性的智能活动。
◆其中最简单的一种称为双方完备博弈。
其中最简单的一种称为双方完备博弈。
博弈树
◆当某一方当前有多个行动方案可供选择时,他总是选择对自己最为有当某一方当前有多个行动方案可供选择时,
利而对对方最为不利的那个行动方案。
利而对对方最为不利的那个行动方案。
◆当轮到A方走棋时,则可供A方选择的若干个行动方案之间是“或”的当轮到A方走棋时,则可供A方选择的若干个行动方案之间是“关系。
轮到B方走棋时,方也有若干个可供选择的行动方案,关系。
轮到B方走棋时,B方也有若干个可供选择的行动方案,但此时这些行动方案对A方来说它们之间是“的关系。
时这些行动方案对A方来说它们之间是“与”的关系。
◆使用与或图(与或树)来表示博弈过程,叫做博弈树。
使用与或图(与或树)来表示博弈过程,叫做博弈树。
博弈与启发式搜索
博弈树的特点
◆博弈的初始格局是初始节点。
博弈的初始格局是初始节点。
◆在博弈树中,“或”节点和“与”节点是逐层交替出现的。
自己一方在博弈树中,节点和“节点是逐层交替出现的。
扩展的节点之间是“扩展的节点之间是“或”关系,对方扩展的节点之间是“与”关系。
关系,对方扩展的节点之间是“关系。
双方轮流扩展节点。
双方轮流扩展节点。
博弈与启发式搜索
极大极小分析法
◆设博弈的双方分别为A和B,然后为其中的一方(如A)寻找一个最优设博弈的双方分别为A然后为其中的一方(
行动方案。
行动方案。
◆为了找到当前的最优行动方案,需要对各个方案可能产生的结果进行为了找到当前的最优行动方案,比较,并计算可能的得分。
比较,并计算可能的得分。
◆
为了计算得分,需要根据问题的特性信息定义一个估价函数,用来估为了计算得分,需要根据问题的特性信息定义一个估价函数,算当前博弈树端节点的得分。
此时估算出来的得分称为静态估值。
算当前博弈树端节点的得分。
此时估算出来的得分称为静态估值。
◆当端节点的估值计算出来后,再推算父节点的得分。
当端节点的估值计算出来后,再推算父节点的得分。
◆如果一个行动方案能获得最大的倒推值,那么它就是当前最好的行动如果一个行动方案能获得最大的倒推值,方案。
方案。
博弈与启发式搜索
一字棋问题的求解
课件演示:
课件演示:
一字棋
博弈与启发式搜索
一字棋问题的求解思路
设A的棋子用“a”表示,B的棋子用“b”表示。
并设棋局为P,估价函的棋子用“a”表示,的棋子用“b”表示。
并设棋局为P表示表示数为e),其中其中:
数为e(P),其中:
获胜的棋局,
(1)若P是A获胜的棋局,则e(P)=+∞。
获胜的棋局,
(2)若P是B获胜的棋局,则e(P)=-∞。
是胜负未定的棋局,e(+P)(3)若P是胜负未定的棋局,则e(P)=e(+P)-e(-P)。
其中e+P)表示棋局上有可能使a成一线的数目;其中e(+P)表示棋局上有可能使a成一线的数目;e(-P)则表示棋局上有可能使b成一线的数目。
上有可能使b成一线的数目。
博弈与启发式搜索
一字棋的极大极小搜索(第一回合)一字棋的极大极小搜索(第一回合)
博弈与启发式搜索
一字棋的极大极小搜索