?ikes(mary,X).湩 或蕌 ?ikes(mary, musIc).湩 或 ? friend(x,Y).湩 或 ?ikes(bel, sports),蕌 ikes( mary, musIc),菖 friend john,X),潼
?-likes(mary,X). 或 ?-likes(mary,music). 或 ?-friend(X,Y). 或 ?-likes(bell,sports), likes(mary,music), friend(john,X).
2.1.3PR0L0G程序的运行机理 1.自由变量与约束变量 2.匹配合一 两个谓词可匹配合一,是指两个谓词的名相同 参量项的个数相同,参量类型对应相同,并且对应 参量项还满足下列条件之一: (1)如果两个都是常量,则必须完全相同。蕌 (2)如果两个都是约束变量,则两个约束值必 须相同。蕌 (3)如果其中一个是常量,一个是约束变量, 则约束值与常量必须相同。 蕌(4)至少有一个是自由变量
2.1.3 PROLOG程序的运行机理 1. 自由变量与约束变量 2. 匹配合一 两个谓词可匹配合一, 是指两个谓词的名相同, 参量项的个数相同, 参量类型对应相同, 并且对应 参量项还满足下列条件之一: (1) 如果两个都是常量, 则必须完全相同。 (2) 如果两个都是约束变量, 则两个约束值必 须相同。 (3) 如果其中一个是常量, 一个是约束变量, 则约束值与常量必须相同。 (4) 至少有一个是自由变量
考虑下面的各组谓词是否可匹配合一?蕌 pre Ob1〃〃 ob2″,Z)蕌 prel(ob1 ob3″,Y)湩 prel("ob1″,"ob2″,Z) prel("ob1″,Ⅹ,"ob3″) prel("ob1″,"ob2″,Z)蕌 prel("ob1″,X,Y)
考虑下面的各组谓词是否可匹配合一? pre1(″ob1″ , ″ob2″ ,Z) pre1(″ob1″ , ″ob3″ ,Y) pre1(″ob1″ , ″ob2″ ,Z) pre1(″ob1″ ,X, ″ob3″) pre1(″ob1″ , ″ob2″ ,Z) pre1(″ob1″ ,X,Y)
3.回溯蕌 所谓回溯,就是在程序运行期间,当某一个子 目标不能满足(即谓词匹配失败)时,控制就返回到 前一个已经满足的子目标(如果存在的话),并撤消 其有关变量的约束值,然后再使其重新满足。成 功后,再继续满足原子目标。如果失败的子目标前 再无子目标,则控制就返回到该子目标的上一级目 标(即该子目标谓词所在规则的头部)使它重新匹配。 回溯也是 PROLOG的一个重要机制
3. 回溯 所谓回溯, 就是在程序运行期间, 当某一个子 目标不能满足(即谓词匹配失败)时,控制就返回到 前一个已经满足的子目标(如果存在的话), 并撤消 其有关变量的约束值, 然后再使其重新满足。 成 功后, 再继续满足原子目标。如果失败的子目标前 再无子目标, 则控制就返回到该子目标的上一级目 标(即该子目标谓词所在规则的头部)使它重新匹配。 回溯也是PROLOG的一个重要机制
likes(bell, sports). likes(mary, music).蕌 likes(mary, sports).H likes(jane, smith).蕌 friend(john, X): -likes(X, reading), likes(X, music friend(john, X): -likes(X, sports), likes(X, music) friend (john, y) 则求解目标为 friend(john, Y 新目标蕌 ikes (x, reading), likes(X, music).Ei
likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane,smith). friend(john,X):-likes(X,reading),likes(X,music). friend(john,X):-likes(X,sports),likes(X,music). ?-friend(john,Y). 则求解目标为 friend(john,Y). 新目标 likes(X,reading),likes(X,music).