If412 08

566 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
566
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

If412 08

  1. 1. IF412 – Konsep Bahasa Pemrograman Pertemuan : 08 UNIFICATION q Kejadian (instance) dari suatu term T diperoleh dengan menggantikan subterm dari variabel-variabel T. q Contoh : f(a, b) instance dari : f(a, y) f(x, b) f(x, y) g(a, b) instance dari : g(x, y) h(a, a) instance dari : h(x, x) j(a, b) bukan instance dari j(x, x) q Dua buah term T1 dan T2 dapat diunifikasi apabila T1 dan T2 mempunyai instance yang sama. Contoh: f(x,b) & f(a,y) ⇒ dapat diunifikasi instance yang sama adalah f(a,b) ? -f(a,y) = f(x,b) x=a y=b q Tanda = adalah unifikasi is adalah := dalam pascal Contoh: ?- x = 2 + 3 x =2+3 ?- x is 2 + 3 x=5 ?- x is 2 + 3, x = 5 x=5 ?- x is 2 + 3. x = 2 + 3 2 + 3 tidak diunifikasi dengan 5 STRUKTUR DATA PADA PROLOG List : v List dalam Prolog yang terdiri dari tiga atom a, b dan c ditulis sbb: [a, b, c]. dan list kosong ditulis [ ]. v Head dan Tail dari suatu list dipisahkan oleh tanda |. Contoh : [H | T], dimana H adalah elemen dan T adalah list (bisa juga list kosong) BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
  2. 2. IF412 – Konsep Bahasa Pemrograman Pertemuan : 08 v list [a, b, c] dapat juga ditulis sbb : ♦ [a, b, c | [] ] ♦ [a, b | [c] ] ♦ [a | [b, c] ] ?- [H | T] = [a, b, c]. H=a T = [b, c] ?- [a | T] = [H, b, c]. T = [b, c] H=a v Contoh menambah (append) list secara rekursif append ([], Y, Y). append ([H | X], Y, [H | Z] ) : append (X, Y, Z). Contoh : ?- append ([a, b], [c, d], Z). Z = [a, b, c, d] ?- append ([a, b], Y, [a, b, c, d]). Y = [c, d] ?- append (X, [c, d], [a, b, c, d]). X = [a, b] Keanggotaan dalam List v member (X, [X | _ ]). member(X,[_|Y]) := member (X,Y). v Contoh : ?- member (a, [p, q, a]) yes Proses searching : 1. member (a, [p|[q, a]]) ⇒ no 2. member (a, [q, a])? (1). member (a, [q|[a]])? ⇒ no (2). member (a, [a])? [1]. member (a,[a|[] ]) ⇒ yes GUESS & VERIFY Ø Dalam rangka memenuhi jawaban goal, maka dicoba sub-goal dari kiri ke kanan. Is there an S such that BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
  3. 3. IF412 – Konsep Bahasa Pemrograman Pertemuan : 08 guess(S) and verify(S) sub-goal guess(S) dan verify(S) adalah sub-goal. Subgoal dicoba dari kiri ke kanan. Ø Contoh: member (M, [M | _ ]). member(M, [_| T] :- member (M, T). overlap (X, Y) :- member (M, X), member (M, Y). ?- overlap ([a, b, c, d], [1, 2, c, d]) yes Solusi yang dibuat oleh sub-goal pertama sbb: ?- member (M, [a, b, c, d]). M=a M=b M=c M=d no Kemudian oleh subgoal kedua : ?- member (a, [1,2,c,d]) ⇒ no ?- member (b, [1,2,c,d]) ⇒ no ?- member (c, [1,2,c,d]) ⇒ yes Ø Dalam guess & verify letak dari subgoal mempengaruhi waktu pencarian, begitu juga letak fakta dan aturan. Contoh: ?- X = [1, 2, 3], member(a, X). no ?- member (a, X), X = [1, 2, 3]. ( infinite computation) karena guess goal member(a,X) mempunyai infinite number of solution. X = [a | _ ] X = [ _ , a, | _ ] X = [ _ ,_, a, | _ ] ...... dst...... OPEN LIST q Adalah list yang diakhiri dengan variabel Contoh : [a, b | X] BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998
  4. 4. IF412 – Konsep Bahasa Pemrograman Pertemuan : 08 X diunifikasi dengan [ ] ⇒ hasilnya [a, b] X diunifikasi dengan [c] ⇒ hasilnya [a, b, c] Placeholders v Nama variabel sementara yang digunakan oleh Prolog biasanya digunakan sebagai nama semen-tara, pengganti dari open list. v Contoh : ?- L = [a, b | X]. L = [a, b| _1] X = _1 ?- L = [a, b | X], X = [c, Y]. L = [a, b, c | _2] X = [c | _2] Y = _2 Underscore ( _ ), diikuti oleh integer adalah variabel yang dibuat oleh prolog. L x L x • • - 1 ⇒ • • • -2 a b a b c BINA NUSANTARA Edisi : 1 Revisi : 1 Sept - 1998

×