许多实际的,相关的问题不能或者只能用命题逻辑的语言非常不方便地制定,正如我们在下面的例子中可以很容易地认识到的那样。该声明
“ 机器人7位于xy位置(35,79) ”
实际上可以直接用作命题逻辑变量
“ Robot_7_is_situated_at_xy_position_(35,79) ”
・・
×
用命题逻辑推理,但用这种命题推理是非常不方便的。假设这些机器人中的100个可以在100个100点的网格上停留。为了描述每个机器人的每个位置,我们需要100 100
= =
100 1 000 000 10 6个不同的变量。关系的定义
物体(这里是机器人)变得非常困难。关系
“ 机器人A位于机器人B的右侧。”
・=
・=
在语义上只不过是一组对。在10 000个可能的x坐标对中,有( 99 98 )/ 2 4851个有序对。与两个机器人可能的y值的所有10 000种组合一起,有( 100 99 ) 9900种类型的公式
⇔
Robot_7_is_to_the_right_of_robot_12
Robot_7_is_situated_at_xy_position_(35,79)
∧机器人_ 12 _被_位于_在_ XY _位置_(10,93)∨…
・=・
定义这些关系,每个关系都有(
10 4 ) 2 0 。485 0 。右侧有485 10 8个备选方案。在一阶谓词逻辑中,我们可以为此定义一个谓词Position(number,xPosition,yPosition)。上述关系不再必须被视为大量的对,而是用形式规则抽象地描述
∀ ü ∀ v是_进一步_右(U,V)⇔
∃ 许 ∃
宇 ∃ XV ∃ YV位置(U,戌,宇) ∧ 位置(V,XV,YV) ∧ 许> XV ,
当∀ ü读作“为每ú ”和∃ v为“存在v ”。
W. Ertel,人工智能导论,31
计算机科学本科专业,
DOI
10.1007 / 978-0-85729-299-5_3,©Springer-Verlag London Limited 2011
在本章中,我们将定义一阶谓词逻辑(PL1)的语法和语义,表明许多应用程序可以使用这种语言建模,并表明这种语言有一个完整而合理的演算。