Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
BİRLEŞİM VE ARAMA (UNIFICATION & SEARCH)
Prolog Programlama BİRLEŞİM VE ARAMA (UNIFICATION & SEARCH)
2
Birleşim (Unification)
Geçtiğimiz derste verdiğimiz örnekler içerisinde; kedi(X) şeklinde bir sorgulama yapıldığında bu sorgunun kedi(garfield) ile birleşerek X değişkeninin garfield atom değerine sahip olabildiğini görmüştük.
3
Prolog’un Temel Yapıları
Terimler Önermeler Sabitler Değişkenler Gerçekler Kurallar Örn: ayşe öğrenci 15 33.8 Örn: öğrenci(ayşe). Örn: gelecek(X):- öğrenci(X). Bileşik Terimler Örn: X _ Sorgular Atomlar Örn: ?- gelecek(ayşe). Sayılar Örn: öğrenci(ayşe).
4
Birleşim İşlemi İki Prolog teriminin birleşim gerçekleştirebilmesi için: Ya bu terimler birbirinin aynı olmalıdır, Ya da bu terimler içlerinde başka terimlerin değerlerini aldığında iki terimin aynılığını sağlayacak değişkenler barındırmalıdır.
5
Birleşim İşlemi Buna göre: Bu aynı zamanda: garfield ile garfield
kedi(garfield) ile kedi(garfield) birleşebilmektedir. Bu aynı zamanda: garfield ile tom ya da kedi(garfield) ile kedi(tom) terimlerinin birleşemeyeceği anlamına gelir.
6
Birleşim İşlemi Aşağıdaki terimler için durum ne olur? tom ile X
kedi(Z) ile kedi(tom) seviyor(ali,X) ile seviyor(X,ayşe)
7
Değer Atama (Instantiation)
Prolog’da iki terim birleştirilirken gerekli tüm işlemler yerine getirilirek birleşim işleminden sonra bu terimlerin birbirine eşit olması sağlanır.
8
Formal Definition If T1 and T2 are constants, then
T1 and T2 unify if they are the same atom, or the same number If T1 is a variable and T2 is any type of term, then T1 and T2 unify, and T1 is instantiated to T2 (and vice versa) If T1 and T2 are complex terms then they unify if: They have the same functor and arity, and all their corresponding arguments unify, and the variable instantiations are compatible.
9
=/2 ?- ali = ali. yes ?- ali = hasan. no ?-
10
=/2 ?- ali = X. X=ali yes ?-
11
Prolog Nasıl Bir Yanıt Verir?
?- X=ali, X=hasan.
12
Bileşik Terimlerde Birleşim
?- k(s(g),Y) = k(X,t(k)). X=s(g) Y=t(k) yes ?-
13
Bileşik Terimlerde Birleşim
?- k(s(g),t(k)) = k(X,t(Y)). X=s(g) Y=k yes ?-
14
?- seviyor(X,X) = seviyor(ali,ayşe).
no ?-
15
dikey(çizgi(nokta(X,Y),
nokta(X,Z))). yatay(çizgi(nokta(X,Y), nokta(Z,Y))). ?- dikey(çizgi(nokta(1,1),nokta(1,3))). yes ?- dikey(çizgi(nokta(1,1),nokta(3,2))). no ?-
16
dikey(çizgi(nokta(X,Y),
nokta(X,Z))). yatay(çizgi(nokta(X,Y), nokta(Z,Y))). ?- yatay(çizgi(nokta(1,1),nokta(1,Y))). Y = 1; no ?-
17
dikey(çizgi(nokta(X,Y),
nokta(X,Z))). yatay(çizgi(nokta(X,Y), nokta(Z,Y))). ?- yatay(çizgi(nokta(2,3),Nokta)). Nokta = nokta(_554,3); no ?-
18
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). ?- k(Y).
19
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). ?- k(Y).
20
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). ?- k(Y).
21
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a ?- g(a), h(a). ?- k(Y).
22
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a ?- g(a), h(a). ?- k(Y). ?- h(a).
23
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a ?- g(a), h(a). ?- k(Y). ?- h(a).
24
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(b), h(b). ?- g(a), h(a). ?- k(Y). ?- h(a).
25
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(b), h(b). ?- g(a), h(a). ?- k(Y). ?- h(a). ?- h(b).
26
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(b), h(b). ?- g(a), h(a). ?- k(Y). Y=b ?- h(a). ?- h(b).
27
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y). Y=X ?- f(X), g(X), h(X). X=a X=b ?- g(b), h(b). ?- g(a), h(a). ?- k(Y). Y=b; no ?- ?- h(a). ?- h(b).
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.