BAHASA PEMROGRAMAN
(IKP213)
Pertemuan 5: Prolog, 22 November 2011
Pemrograman Prolog
2


       Pemrograman Deklaratif
         Fakta

         Aturan-aturan   deduksi
       First-Order Predicate Logic
       Execution Engine
         unification

         resolution




                             Pemrograman Prolog – IKP213
Pemrograman Prolog
3


       Konstanta, Entitas, Atom
         rangkaian   huruf lower case
         pat, jim, bob, . .

       Variabel
         huruf  UPPER CASE
         X, Y, Z, . .




                              Pemrograman Prolog – IKP213
SWI-Prolog
4


       http://www.swi-prolog.org/
       Implementasi Prolog di Windows
       Tuliskan fakta dan rules dalam berkas teks
       Consult berkas teks dari IDE SWI-Prolog
         File    Consult
       Tuliskan kueri / goals




                             Pemrograman Prolog – IKP213
Contoh Silsilah Keluarga
5




                 Pemrograman Prolog – IKP213
Fakta Silsilah Keluarga
6


    parent(tom,bob).
    parent(pam,bob).
    parent(tom,liz).
    parent(bob,ann).
    parent(bob,pat).
    parent(pat,jim).
       Relasi dengan arity 2
       parent/2

                          Pemrograman Prolog – IKP213
Kueri Prolog
7


    parent(tom, X).
    X = bob ;
    X = liz ;
    false.
     Siapa yang memiliki tom sebagai orang tua?

    parent(Y, ann).
    Y = bob ;
    false.
     Siapa orang tua dari ann?


                      Pemrograman Prolog – IKP213
Kueri Prolog
8


    parent(X, Y).
     Menampilkan semua fakta

     Cari semua X dan Y yang memenuhi relasi parent

     Substitusi variabel dengan atom di dalam fakta

      yang ada
     Tidak ada atom yang dapat mensubstitusi: false

    parent(badu, Y).
    false.

                       Pemrograman Prolog – IKP213
Konjungsi Kueri
9


       Siapa grandparent dari jim?
         Siapa parent dari jim? Y
         Siapa parent dari Y? X

         X adalah grandparent dari jim

       parent(Y, jim), parent(X, Y).
       Cari seseorang, Y, yang menjadi parent dari jim
        dan cari X yang menjadi orang tua dari Y



                           Pemrograman Prolog – IKP213
Fakta-fakta Baru
10


     female(pam).
     female(liz).
     female(pat).
     female(ann).
     male(tom).
     male(bob).
     male(jim).
      Relasi dengan arity 1


                         Pemrograman Prolog – IKP213
Rules
11


     offspring(X, Y) :- parent(Y, X).
      X adalah offspring dari Y, jika Y adalah parent

       dari X
     mother(X,Y) :- parent(X,Y),
       female(X).
      X adalah mother dari Y, jika X adalah parent dari

       Y dan X adalah female



                         Pemrograman Prolog – IKP213
Unifikasi
12


        parent(X, liz).
          Periksa semua fakta yang diberikan
          Untuk fakta yang sama, terapkan algoritma Unifikasi
          Disagreement set

        parent(X, liz) dengan parent(tom, bob).
          disagreement    set {X, tom}
          fail

        parent(X, liz) dengan parent(tom, liz).
          disagreement    set {X, tom}
          success

                               Pemrograman Prolog – IKP213
Resolusi
13


        offspring(X, liz)
          Terapkan   algoritma unifikasi untuk rule offspring(X, Y)
          disagreement set {liz, Y}

          resolusi / menggantikan Head Goal offspring(X, Y)
           dengan sub-goal parent(Y, X)
          unifikasi Y dengan liz pada sub-goal parent(Y, X)

        Unifikasi sub-goal parent(liz, X)



                              Pemrograman Prolog – IKP213
Monkey and Banana Problem
14


        States
          Monkey  at door
          Monkey on floor

          Box at window

          Monkey does not have banana

        Ultimate goal
          state(X,   Y, Z, has).



                                    Pemrograman Prolog – IKP213
Monkey and Banana Problem
15


        Allowable moves
          grasp banana
          climb box

          push box

          walk around

        Prolog rule
          move  ( state(middle, onbox, middle, hasnot), grasp,
           state(middle, onbox, middle, has) ).


                             Pemrograman Prolog – IKP213
Monkey and Banana Problem
16


        canget(state(atdoor, onfloor, atwindow, hasnot) ).




                            Pemrograman Prolog – IKP213
Ringkasan
17


        Deklarasi clauses berupa fakta dan rules
        Fakta dinyatakan dengan relasi
        Fakta memuat Atom
        Rules memuat Variabel
        Kueri (Goals) memuat Variabel atau Atom




                          Pemrograman Prolog – IKP213
Latihan
18


        Siapa grandparent dari ann?
        Siapa grandchild dari bob?
        Tuliskan rule aunt(X, Y)
        Tuliskan rule hastwochildren(X)
        Tuliskan rule hasdaughter(X)
        Tuliskan rule grandchildren(X, Y)



                            Pemrograman Prolog – IKP213
Pustaka
19


        SWI-Prolog, http://www.swi-prolog.org/
        GNU-Prolog
        Ivan Bratko, "Prolog Programming for Artificial
         Intelligence"
        http://tjerdastangkas.blogspot.com/search/label/ikp213




                             Pemrograman Prolog – IKP213
AKHIR PERTEMUAN 4
Rabu, 19 Oktober 2011

ikp213-05-prolog

  • 1.
  • 2.
    Pemrograman Prolog 2  Pemrograman Deklaratif  Fakta  Aturan-aturan deduksi  First-Order Predicate Logic  Execution Engine  unification  resolution Pemrograman Prolog – IKP213
  • 3.
    Pemrograman Prolog 3  Konstanta, Entitas, Atom  rangkaian huruf lower case  pat, jim, bob, . .  Variabel  huruf UPPER CASE  X, Y, Z, . . Pemrograman Prolog – IKP213
  • 4.
    SWI-Prolog 4  http://www.swi-prolog.org/  Implementasi Prolog di Windows  Tuliskan fakta dan rules dalam berkas teks  Consult berkas teks dari IDE SWI-Prolog  File  Consult  Tuliskan kueri / goals Pemrograman Prolog – IKP213
  • 5.
    Contoh Silsilah Keluarga 5 Pemrograman Prolog – IKP213
  • 6.
    Fakta Silsilah Keluarga 6 parent(tom,bob). parent(pam,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim).  Relasi dengan arity 2  parent/2 Pemrograman Prolog – IKP213
  • 7.
    Kueri Prolog 7 parent(tom, X). X = bob ; X = liz ; false.  Siapa yang memiliki tom sebagai orang tua? parent(Y, ann). Y = bob ; false.  Siapa orang tua dari ann? Pemrograman Prolog – IKP213
  • 8.
    Kueri Prolog 8 parent(X, Y).  Menampilkan semua fakta  Cari semua X dan Y yang memenuhi relasi parent  Substitusi variabel dengan atom di dalam fakta yang ada  Tidak ada atom yang dapat mensubstitusi: false parent(badu, Y). false. Pemrograman Prolog – IKP213
  • 9.
    Konjungsi Kueri 9  Siapa grandparent dari jim?  Siapa parent dari jim? Y  Siapa parent dari Y? X  X adalah grandparent dari jim  parent(Y, jim), parent(X, Y).  Cari seseorang, Y, yang menjadi parent dari jim dan cari X yang menjadi orang tua dari Y Pemrograman Prolog – IKP213
  • 10.
    Fakta-fakta Baru 10 female(pam). female(liz). female(pat). female(ann). male(tom). male(bob). male(jim).  Relasi dengan arity 1 Pemrograman Prolog – IKP213
  • 11.
    Rules 11 offspring(X, Y) :- parent(Y, X).  X adalah offspring dari Y, jika Y adalah parent dari X mother(X,Y) :- parent(X,Y), female(X).  X adalah mother dari Y, jika X adalah parent dari Y dan X adalah female Pemrograman Prolog – IKP213
  • 12.
    Unifikasi 12  parent(X, liz).  Periksa semua fakta yang diberikan  Untuk fakta yang sama, terapkan algoritma Unifikasi  Disagreement set  parent(X, liz) dengan parent(tom, bob).  disagreement set {X, tom}  fail  parent(X, liz) dengan parent(tom, liz).  disagreement set {X, tom}  success Pemrograman Prolog – IKP213
  • 13.
    Resolusi 13  offspring(X, liz)  Terapkan algoritma unifikasi untuk rule offspring(X, Y)  disagreement set {liz, Y}  resolusi / menggantikan Head Goal offspring(X, Y) dengan sub-goal parent(Y, X)  unifikasi Y dengan liz pada sub-goal parent(Y, X)  Unifikasi sub-goal parent(liz, X) Pemrograman Prolog – IKP213
  • 14.
    Monkey and BananaProblem 14  States  Monkey at door  Monkey on floor  Box at window  Monkey does not have banana  Ultimate goal  state(X, Y, Z, has). Pemrograman Prolog – IKP213
  • 15.
    Monkey and BananaProblem 15  Allowable moves  grasp banana  climb box  push box  walk around  Prolog rule  move ( state(middle, onbox, middle, hasnot), grasp, state(middle, onbox, middle, has) ). Pemrograman Prolog – IKP213
  • 16.
    Monkey and BananaProblem 16  canget(state(atdoor, onfloor, atwindow, hasnot) ). Pemrograman Prolog – IKP213
  • 17.
    Ringkasan 17  Deklarasi clauses berupa fakta dan rules  Fakta dinyatakan dengan relasi  Fakta memuat Atom  Rules memuat Variabel  Kueri (Goals) memuat Variabel atau Atom Pemrograman Prolog – IKP213
  • 18.
    Latihan 18  Siapa grandparent dari ann?  Siapa grandchild dari bob?  Tuliskan rule aunt(X, Y)  Tuliskan rule hastwochildren(X)  Tuliskan rule hasdaughter(X)  Tuliskan rule grandchildren(X, Y) Pemrograman Prolog – IKP213
  • 19.
    Pustaka 19  SWI-Prolog, http://www.swi-prolog.org/  GNU-Prolog  Ivan Bratko, "Prolog Programming for Artificial Intelligence"  http://tjerdastangkas.blogspot.com/search/label/ikp213 Pemrograman Prolog – IKP213
  • 20.
    AKHIR PERTEMUAN 4 Rabu,19 Oktober 2011