前往顾页
以后地位: 主页 > 收集编程 > Ajax实例教程 >

Prolog 婚配知识教程

时候:2017-12-04 21:55来源:知行网www.zhixing123.cn 编辑:麦田守望者

这篇 post 有两个首要的目标:

  1. 会商 Prolog 中的婚配, 解释婚配(match)与相称的不合.
  2. 利用 Prolog 搜刮的机制处理一些问题.

##Matching

Prolog 中有三种不合的 term, 分别的 constants, variablescomplex terms.

接上去我们解释一下两个 terms 是若何婚配的.

当两个 term 含有相称, 或两个 term 中的变量在被绑定为指定值以后, 两个 term 相称时, 两个 term 婚配.

也就是说, 以下的 term 都会婚配:

  • mia = mia.
  • 42 = 42.
  • mia = X.
  • X = Y.
  • friends(john,X) = friends(Y,tom).

接上去我们对婚配进行更切确的定义:

  1. 如果 term1 和 term2 都是常量, 那么只需当二者是不异的原子或不异的数字, term1 term2 婚配.
  2. 如果 term1 是变量, term2 是肆意范例的 term, 那么 term1 和 term2 婚配, term1 会被绑定为 term2.
  3. 如果 term1 term2 是 complex term, 那么鄙人面环境下, 它们会婚配
    • 它们含有不异的名字和参数数量.
    • 它们对应的参数婚配.
    • 变量的绑定是兼容的, 同一个变量不会同时绑定为两个值.
  4. 两个 terms 只需在上述 3 个前提之一建立时, 才会婚配.

婚配有甚么感化呢? 我们可利用婚配来为我们供应更强年夜的笼统才气:

vertical(line(point(X,Y),point(X,Z))).
horizontal(line(point(X,Y),point(Z,Y))).

这两行 Prolog 代码其实不是法则, 而是究竟, 我们可利用婚配的才气, 写出这两个法则, 如许我们便可以等闲地判定一条直线是不是是垂直的或是程度的.

?- vertical(line(point(1,1),point(1,3))).
true

一样我们也能够操纵婚配来寻觅与某一点构成垂线的点.

?- vertical(line(point(1,1),point(X,4))).
X = 1.

一样我们也能够操纵 Prolog 的婚配处理更加复杂更加坚苦的问题.

现在我们有 6 个单词, 我们需求将它们填入下面的拼图里:

word(abalone,a,b,a,l,o,n,e). 
word(abandon,a,b,a,n,d,o,n). 
word(enhance,e,n,h,a,n,c,e). 
word(anagram,a,n,a,g,r,a,m). 
word(connect,c,o,n,n,e,c,t). 
word(elegant,e,l,e,g,a,n,t).

我们可以经由过程 Prolog 得出答案, 只需求将需求满足的前提写在 predicate 里:

crosswd(V1,V2,V3,H1,H2,H3):-
    word(V1,_,A,_,B,_,C,_),
    word(V2,_,D,_,E,_,F,_),
    word(V3,_,G,_,H,_,I,_),
    word(H1,_,A,_,D,_,G,_),
    word(H2,_,B,_,E,_,H,_),
    word(H3,_,C,_,F,_,I,_),

如许我们便可以获得成果:

?- crosswd(H1,H2,H3,V1,V2,V3).
H1 = abalone,
H2 = anagram,
H3 = connect,
V1 = abandon,
V2 = elegant,
V3 = enhance ;
H1 = abandon,
H2 = elegant,
H3 = enhance,
V1 = abalone,
V2 = anagram,
V3 = connect ;
false.

Prolog 中婚配的才气非常强年夜, 其实它就是对已有的前提和数据进行搜刮, 测验测验所有的答案, 最后给出满足前提的所有成果, 可以或许极年夜的降落我们的计较量.

顶一下
(1)
100%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):Prolog
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣