人工智能+试题+课件.docx
- 文档编号:8615776
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:29
- 大小:36.30KB
人工智能+试题+课件.docx
《人工智能+试题+课件.docx》由会员分享,可在线阅读,更多相关《人工智能+试题+课件.docx(29页珍藏版)》请在冰豆网上搜索。
人工智能+试题+课件
人工智能的定义AI(ArtificialIntelligence)
是研究如何使用机器,能够做一些通常需要人的智慧才能完成的工作。
或人工智能就是机器(计算机)执行某些与人的智能有关的复杂功能(如判断、识别、学习、理解、问题求解等)的能力。
1.2人工智能的研究途径与方法1.2.1结构模拟,神经计算
④采用结构模拟,运用神经网络和神经计算的方法研究人工智能者→生理学派、连接主义。
1.2.2功能模拟(符号主义、心理学派、逻辑学派)
1.2.3行为模拟(行为主义、进化主义、控制论学派)
④以行为模拟法研究人工智能者→行为主义、进化主义、控制论学派。
1.4人工智能的基本技术
推理技术。
基于谓词逻辑的自然演绎推理和归结反演推理。
搜索技术。
盲目搜索、启发式搜索。
神经网络搜索。
启发式搜索是人工智能的核心课题,
1.5、人工智能的发展概况,需要处理的是知识。
由数据处理范围扩展到符号知识处理范畴的转变是人工智能诞生的重要因素之一。
而试探性的搜索、启发式的不精确的模糊的甚至允许出现错误的推理方法指导了人工智能的求解方法。
在许多应用中,被编码进入产生式系统数据库的信息来源于说明语句,这些语句难以或者不能自然地用像数组或集合那样的简单结构来表示。
而逻辑语句,或者更具体地说,一阶谓词演算能用来表示种类众多的语句,且能给出一种从旧知识直接求得新知识的有效方法——数学演绎。
如果我们把句子限制为我们至今已介绍过的造句法所能表示的那些句子,而且也不使用变量项,那么我们可以把这个谓词演算的子集叫做命题演算。
例:
每个有理数都是实数有些实数是有理数并非每个实数都是有理数
解:
令原子谓词公式P(x)表示x是有理数Q(x)表示x是实数
(
x)[P(x)=>Q(x)]
(彐x)[Q(x)∧P(x)]
~((
x)[Q(x)=>P(x)])等价于(彐x)[Q(x)∧~P(x)]
例:
每一个人的外祖父都是他母亲的父亲。
令P(x)表示x是人O(x,y)表示x是y的外祖父F(x,y)表示x是y的父亲
M(x,y)表示x是y的母亲
将原句转化为:
每一个人y的外祖父x都是该y的母亲z的父亲。
(
x)(
y)(P(x)∧P(y)∧O(x,y))=>(彐z)(P(z)∧F(x,z)∧M(z,y))
在一个量化的表达式中的约束变量是一个虚元,它可以用任何一个不在表达式中出现过的其他变量符号来代替。
Allblocksontopofblocksthathavebeenmovedorthatareattachedtoblockthathavebeenmovedalsohavebeenmoved.
可表示为:
(
x)(
y){{BLOCK(x)∧BLOCK(y)∧[ONTOP(x,y)∨
ATTACHED(x,y)]∧MOVED(y)}→MOVED(x)}
寻找项对变量的置换,以使表达式一致,叫做合一。
求mgu的算法:
非递归算法
例:
求公式集{P[a,x,f(g(y))],P[z,h(z,u),f(u)]}的最一般合一者mgu。
解:
k=0;F0=F;б0=ε;F0不是单一元素集,有D0={a,z}
б1=б0·{a/z}=ε·{a/z}={a/z};
F1=F0·{a/z}={P[a,x,f(g(y))],P[a,h(a,u),f(u)]};
k=1;F1不是单一元素集,有D1={x,h(a,u)}
б2=б1·{h(a,u)/x}={a/z}·{h(a,u)/x}={a/z,h(a,u)/x};
F2=F1·{h(a,u)/x}={P[a,h(a,u),f(g(y))],P[a,h(a,u),f(u)]};
k=2;F2非单一,有D2={g(y),u}
б3=б2·{g(y)/u}={a/z,h(a,g(y))/x,g(y)/u};
F3=F2·{g(y)/u}={P[a,h(a,g(y)),f(g(y))]};
k=3;F3已为单一元素集
∴б3={a/z,h(a,g(y))/x,g(y)/u}为公式集F的mgu
递归
例:
E1=’P[a,x,f(g(y))]’
E2=’P[z,h(z,u),f(u)]’
则:
unify(E1,E2);
Z1:
=unify(‘P’,’P’)
Z2:
=unify(‘[a,….]’,’[z,…]’)
return{Z1·Z2}
取值分析
第i层次F1值F2值Z1值F1属性F2属性
1PP谓词符号谓词符号
2[[方括号方括号
3az{a/z}常量符号变量符号
4,,
5xh(a,u){h(a,u)/x}变量函数符号(参数)
6,,逗号逗号
7ff函数符号函数符号
8((圆括号圆括号
9g(y)u{g(y)/u}函数符号(参数)变量
10))圆括号圆括号
11]]方括号方括号
归结:
是一种可用于一定的子句公式的重要推理规则。
例将下列谓词公式
(
x){P(x)→{(
y)[P(y)→P(f(x,y))]∧~(
y)[Q(x,y)→P(y)]}}按标准步骤化为子句集。
解:
(1)(
x){~P(x)∨{(
y)[~P(y)∨P(f(x,y))]∧~(
y)[~Q(x,y)∨P(y)]}}
(2)(
x){~P(x)∨{(
y)[~P(y)∨P(f(x,y))]∧
(彐y){~[~Q(x,y)∨P(y)]}}}
(
x){~P(x)∨{(
y)[~P(y)∨P(f(x,y))]∧(彐y)[Q(x,y)∧~P(y)]}}
(3)(
x){~P(x)∨{(
y)[~P(y)∨P(f(x,y))]∧(彐w)[Q(x,w)∧~P(w)]}}
(4)(
x){~P(x)∨{(
y)[~P(y)∨P(f(x,y))]∧[Q(x,g(x))∧~P(g(x))]}}
式中,g(x)为一Skolem函数。
(5)(
x)(
y){~P(x)∨{[~P(y)∨P(f(x,y))]∧[Q(x,g(x))∧~P(g(x))]}}
(6)(
x)(
y){[~P(x)∨~P(y)∨P(f(x,y))]∧[~P(x)∨Q(x,g(x))]∧[~P(x)∨~P(g(x))]}
(7){[~P(x)∨~P(y)∨P(f(x,y))]∧[~P(x)∨Q(x,g(x))]∧
[~P(x)∨~P(g(x))]}
(8)~P(x)∨~P(y)∨P(f(x,y))
~P(x)∨Q(x,g(x))
~P(x)∨~P(g(x))
(9)更改变量名称,在上述第(8)步的三个子句中,我们分别以x1,x2和x3代替变量x。
这种更改变量名称的过程,有时称为变量分离标准化。
于是,我们可以得到下列子句集:
~P(x1)∨~P(y)∨P[f(x1,y)]
~P(x2)∨Q[x2,g(x2)]
~P(x3)∨~P[g(x3)]
一般归结规则:
设有两个子句{Li}与{Mi},
若{li}是{Li}的一个子集,{mi}是{Mi}的一个子集,
且存在一个最一般合一者s,使得{li}s={~mi}s,
则可归结前提子句{Li}与{Mi}成为
{{Li}-{li}}s∪{{Mi}-{mi}}s
例:
考虑两个子句:
P[x,f(A)]∨P[x,f(y)]∨Q(y)和~P[z,f(A)]∨~Q(z)如果我们取{li}={P[x,f(A)]}{mi}={~P[z,f(A)]}
那么我们得到归结式:
P[z,f(y)]∨~Q(z)∨Q(y)
如果我们取{li}={Q(y)}{mi}={~Q(z)}
那么我们得到归结式:
P[x,f(A)]∨P[x,f(y)]∨~P[y,f(A)]
进一步归结得归结式:
P[y,f(y)]
设有前提公式集S,欲证结论公式L。
步骤:
(1)否定L,得~L
(2)把~L添加到S中去(3)把新产生的集合{~L,S}化成子句集;(4)应用归结原理,力图推导出一个表示矛盾的空子句。
例:
前提:
每个储蓄钱的人都获得利息。
结论:
如果没有利息,那么就没有人去储蓄钱。
证明:
令S(x,y)表示“x储蓄y”
M(x)表示“x是钱”I(x)表示“x是利息”E(x,y)表示“x获得y”
于是我们可把上述命题写成下列形式:
前提:
(
x)[(彐y)(S(x,y)∧M(y))→(彐y)(I(y)∧E(x,y))]
结论:
~(彐x)I(x)→(
x)(
y)(S(x,y)→~M(y))
把前提化为子句形:
(
x)[~(彐y)(S(x,y)∧M(y))∨(彐y)(I(y)∧E(x,y))]
(
x)[(
y)(~S(x,y)∨~M(y))∨(彐y)(I(y)∧E(x,y))]
令y=f(x)为Skolem函数,则可得子句形如下:
(1)~S(x,y)∨~M(y)∨I(f(x))
(2)~S(x,y)∨~M(y)∨E(x,f(x))
又结论的否定为:
~(~(彐x)I(x)→(
x)(
y)(S(x,y)→~M(y)))
化为子句形:
~((彐x)I(x)∨(
x)(
y)(~S(x,y)∨~M(y)))
(~(彐x)I(x))∧(~(
x)(
y)(~S(x,y)∨~M(y)))
(
x)(~I(x))∧(彐x)
(彐y)(S(x,y)∧M(y))
变量分离标准化之后得下列各子句:
(3)~I(z)(4)S(a,b)(5)M(b)
子句
(1)子句(3)
{f(x)/z}
~S(x,y)∨~M(y)
子句(6)子句(4)
{a/x,b/y}
~M(b)
子句(7)子句(5)
NIL
例:
对于所有的x和y,如果x是y的父亲,y是z的父亲,那么x是z的祖父。
每个人都有一个父亲。
是否会有这样的两个人x和y,使得x是y的祖父?
证明:
令F(x,y)表示“x是y的父亲”G(x,y)表示“x是y的祖父”
把命题写成下列公式:
(1)(
x)(
y)(
z)[(F(x,y)∧F(y,z))→G(x,z)]
(2)(
y)(彐x)F(x,y)
(3)(彐x)(彐y)G(x,y)
其中,公式(3)是我们试图证明的结论。
将公式
(1)、
(2)化为子句形,得:
(1′)~F(x,y)∨~F(y,z)∨G(x,z)
(2′)F(f(w),w)x=f(w)为一Skolem函数
取公式(3)的否定:
~(3)~[(彐x)(彐y)G(x,y)]
得其子句形为:
(3′)~G(u,v)
子句(1’)子句(3’)
~F(u,y)∨~F(y,v)
{u/x,v/z}
子句(2’)
~F(u,f(v))
{f(w)/y,v/w}
子句(2’)
NIL
{f(w)/u,f(v)/w}
宽度优先搜索方法:
如:
(1)P∨Q
S0:
(2)~P∨Q
(3)P∨~Q
(4)~P∨~Q
(5)Q{1-2}
(6)P{1-3}
(7)Q∨~Q{1-4(i)}
S1:
(8)P∨~P{1-4(ii)}
(9)Q∨~Q{2-3(i)}
(10)P∨~P{2-3(ii)}
(11)~P{2-4}
(12)~Q{3-4}
S2:
?
NIL?
例:
前提
(1)(
x)[R(x)=>L(x)]任何能阅读的人都是能识字的。
(2)(
x)[D(x)=>~L(x)]任何海豚都不识字。
(3)(彐x)[D(x)∧I(x)]有些海豚是有智力的。
结论:
(4)(彐x)[I(x)∧~R(x)]有些有智力者不能阅读。
解:
将
(1)
(2)(3)及(4)的否定化成子句集:
(1)I(A)
S0:
(2)~I(z)∨R(z)
(3)~R(x)∨L(x)
(4)~D(y)∨~L(y)
(5)D(A)
(6)R(A){1-2A/z}
S1:
(7)~I(z)∨L(z){2-3z/x}
(8)~R(y)∨~D(y){3-4y/x}
(9)~L(A){4-5A/y}
(10)L(A){1-7A/z}
(11)~I(z)∨~D(z){2-8z/y}
(12)L(A){3-6A/x}
S2:
(13)~R(A){3-9A/x}
(14)~I(z)∨~D(z){4-7z/y}
(15)~R(A){5-8A/y}
(16)~D(A){6-8A/y}
(17)~I(A){7-9A/z}
S3?
NIL?
3.4.3改进策略
1.支持集策略准则:
每个归结式的父辈中至少有一个是从目标公式的否定或者从它们的后裔(即从支持集)所引起的子句中间选择的。
结论:
若任意反演存在,则支持集反演就存在。
特点:
逆向推理之风格,一般可加快推导速度。
例:
(1)~I(z)∨R(z)目标之否定
S0:
(2)I(A)
(3)~R(x)∨L(x)
(4)~D(y)∨~L(y)
(5)D(A)
S1:
(6)R(A){1-2A/z}
(7)~I(z)∨L(z){1-3z/x}
S2:
(8)L(A){2-7A/z}
(9)L(A){3-6A/x}
(10)~I(y)∨D(y){4-7y/z}
S3:
(11)~D(A){2-10A/y}
(12)~D(A){4-8A/y}
(13)~D(A){4-9A/y}
(14)~I(A){5-10A/y}
S4:
2.线性输入形(藤形)策略准则:
每个归结式的中至少要有一个父辈属于原始子句集。
不完备性:
有时候存在一个反演,但不存在线性输入形反演。
例:
(1)I(A)
S0:
(2)~I(z)∨R(z)
(3)~R(x)∨L(x)
(4)~D(y)∨~L(y)
(5)D(A)
(6)R(A){1-2A/z}
S1(7)~I(z)∨L(z){2-3z/x}
(8)~R(y)∨~D(y){3-4y/x}
(9)~L(A){4-5A/y}
(10)L(A){1-7A/z}
(11)~I(z)∨~D(z){2-8z/y}
S2:
(12)L(A){3-6A/x}
(13)~R(A){3-9A/x}
(14)~I(z)∨~D(z){4-7z/y}
(15)~R(A){5-8A/y}
S3?
NIL?
有些情形存在一个反演但不存在一个线性输入反演,所以线性输入形策略是不完备的。
S0:
(1)Q(u)∨P(A)
(2)~Q(w)∨P(w)
(3)~Q(x)∨~P(x)
(4)Q(y)∨~P(y)这个子句集显然是不可满足的。
可用下图的反演树来证明。
Q(y)∨~P(y)
~Q(x)∨~P(x)
(3)(4)
{x/y}
~Q(w)∨P(w)
~P(x)
(2)
{w/x}
Q(u)∨P(A)
~Q(w)
(1)
P(A)
{u/w}
NIL
{A/x}
一个线性输入形反演必须要有NIL的一个父辈为原始子句集的成员,即原始子句集必须存在一个单文字子句才有可能最终归结出矛盾子句NIL,故这个集不存在一个线性输入形反演。
3.4.5由归结反演求取答案的方法
例:
事实:
(1)(
x)[AT(JOHN,x)→AT(FIDO,x)]
(2)AT(JOHN,SCHOOL)
结论:
(3)(彐x)AT(FIDO,x)目标否定之子句形:
~AT(FIDO,x)
~AT(JOHN,y)∨AT(FIDO,y)
~AT(FIDO,x)
反演树:
{x/y}
AT(JOHN,SCHOOL)
~AT(JOHN,x)
{SCHOOL/x}
NIL
2.答案求取过程(彐之实例化,如FIDO在哪里)
首先生成反演树,之后通过该反演树中的归结方式来求取某问题的答案,具体步骤如下:
(1)将反演树中那些由目标公式的否定所产生的每个子句都变换为重言式(通过添加上它们本身的否定来实现)。
(2)按照反演树,执行与以前相同的归结,直至在根部得到某个子句为止。
(3)用根部的子句作为一个回答语句。
对于上例我们有:
(1)目标公式否定的子句形式:
~AT(FIDO,x)重言式:
~AT(FIDO,x)∨AT(FIDO,x)
(2)用上图的反演树进行归结,并在根部得到子句:
AT(FIDO,SCHOOL)
(3)从根部求得答案AT(FIDO,SCHOOL),用此子句作为回答语句。
因此,子句AT(FIDO,SCHOOL)就是这个问题的合适答案。
~AT(JOHN,y)∨AT(FIDO,y)
~AT(FIDO,x)∨AT(FIDO,x)
{x/y}
AT(JOHN,SCHOOL)
~AT(JOHN,x)∨AT(FIDO,x)
AT(FIDO,SCHOOL)
{SCHOOL/x}
前面例子中,我们曾考虑过下列公式集:
前提
(1)(
x)(
y)(
z)[(F(x,y)∧F(y,z))→G(x,z)]
(2)(
y)(彐x)F(x,y)
问题:
是否存在一个具体的x和一个具体的y,使x是y的祖辈
目标公式(3)(彐x)(彐y)G(x,y)
前面已给出反演归结树(证明树)
修改证明树
~F(x,y)∨~F(y,z)∨~G(x,z)
~G(u,v)∨G(u,v)
F(f(w),w)
G(u,v)∨~F(u,y)∨~F(y,v)
{u/x,v/z}
F(f(w),w)
G(u,v)∨~F(u,f(v))
{f(w)/y,v/w}
{f(w)/u,f(v)/w}=?
G(f(f(v)),v)
4.1.2算符与重写规则
1.A$A→A以A开始和结束的字符串可用单一出现的A来取代
2.$1BAB$2→$1BB$2出现在两个B之间的字符串可被删去
3.$1$2$3→$1$2$2$3任何子字符串均可被重复
4.$1$2$2$3→$1$2$3任何相邻重复的子字符串可被删去
例如,应用最后两个规则,我们可以把字符串
ABCBABC变为字符串ABC:
ABCBABC→ABABCBABC→ABABC→ABC
4.1.3目标状态
一对节点可能互为后裔,这时,该对有向弧线有时就用一条棱线代替。
某个节点序列(ni1,ni2,…,nik)当j=2,3,…,k时,如果对于每一个nij-1都有一个后继节点nij存在,那么就把这个节点序列叫做从节点ni1至节点nik的长度为K的路径。
例1推销员旅行问题
推销员旅行问题是个古典的综合问题。
一个推销员计划做一次旅行,他必须访问如图所示的每个城市。
每两个城市间的路径旁标有距离。
问题的提法如下:
从城市A出发,访问每个城市一次,且最多一次,并返回到城市A,要求寻找一条距离最短的路线。
为了确定这个问题,我们规定如下:
(1)总数据库是到目前为止所访问过的城市表。
初始数据库被描述为表(A)。
我们不允许表中任一城市的出现多于一次,只有A城市例外,但也只有当所有其他城市均已出现之后,才能再次出现A。
(2)规则对应于决策:
(a)下一步走向城市A:
(b)下一步走向城市B;…,(e)下一步走向城市E。
一条规则除非能够把某个数据库变换为一合法的数据库,否则就不适用于这个数据库。
因此应用“下一步走向城市A”这条规则就不适用于尚未出现所有城市的任一数据库。
(3)任一以A为起点和终点,并出现所有其他城市的总数据库,都满足终止条件。
我们可以使用下图的距离图表来计算任一旅程的总距离。
提出作为解答的任一旅程,必须是具有最短矩离的旅程。
10⑦0
7 B
A C E
D
推销员旅行问题地图下面给出求解该问题时可能生成的部分搜索树。
树枝旁边的数字是应用相应规则时加到旅程上的距离增量。
(A)
(AB)(AC)(AD)(AE)
例2猴子和香蕉问题
状态描述模式:
用来描述一个状态集合的含有变量的表达式
下面,我们举例来说明。
在人工智能文献中,“猴子和香蕉”问题常常被用来说明自动求解系统的操作。
在一个房间内有一只猴子(可以认为这是一个机器人),一个箱子和一束挂在天花板上的香蕉。
但猴子的高度不足以碰到香蕉,那么这只猴子怎样才能摘到香蕉?
现在我们用含有变量的状态来描述这个问题。
我们用一个四元表列(W,x,Y,z)来表示猴子和香蕉问题的状态,其中:
W:
猴子的水平位置
x:
当猴子在箱子顶上时取x=1;否则取x=0
Y:
箱子的水平位置
z:
当猴子摘到香蕉时取z=1;否则z=0
这个问题中的操作(算符)如下:
(1)goto(U)猴子走到水平位置U,或者用产生式规则表示为:
(W,0,Y,z)goto(U)(U,0,Y,z)
即应用操作goto(U),能把状态(W,0,Y,z)变换为状态(U,0,Y,z)。
(2)pushbox(V)猴子把箱子推到水平位置V,即有:
(W,0,W,z)pushbox(V)(V,0,V,z)
应当注意的是:
要调用算符pushbox(V),就要求产生式规则的左边,猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上。
这种强加于操作的适用性条件,叫做产生式规则的先决条件。
(3)climbbox猴子爬上箱顶,即有:
(W,0,W,z)climbbox(W,1,W,z)
在应用算符climbbox时也必须注意到,猴子和箱子应当在同一位置上,而且猴子不在箱顶上。
(4)grasp猴子摘到香蕉,即有:
(C,1,C,0)grasp(C,1,C,1)
其中,C是香蕉正下方的地板位置。
在应用算符grasp时,要求猴子和箱子都在位置C上,并且猴子已在箱子顶上。
应当说明的是,在这种情况下,算符(操作)的适用性及作用均由产生式规则表示。
令初始状态为(a,0,b,0)。
这时goto(U)是唯一适用的操作,并导致下一状态(U,0,b,0)。
现在有三个适用的操作,即goto(U),pushbox(V),和climbbox(若U=b)。
把所有适用的操作继续应用于每个状态,我们就能够得到状态空间图如下。
从图中不难看出,把该初始状态变换为目标状态的操作序列为:
{goto(b),pu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 试题 课件