Kamis, 27 Desember 2012

Praktek Kecerdasan Buatan



LAPORAN PRAKTIKUM
KECERDASAN BUATAN
PERTEMUAN 2
DASAR-DASAR PROLOG




NAMA              : Rena Prasetya Ady
NIM                  : 115410020
JURUSAN       : TI / S1

Sekolah Tinggi Manajemen Informatika dan Komputer
Yogyakarta
2012


PERTEMUAN 2
DASAR-DASAR PROLOG

MAKSUD DAN TUJUAN


TUJUAN
1.      Mengetahui apa yang dimaksud dengan pemrograman logika (PROgramming in LOGic)
2.      Dapat mengkonversi dari bahsa natural (natural language) ke bahasa PROLOG dan begitu juga sebaliknya
3.      Mengetahui konsep dasar fakta-fakta (facts), aturan-aturan (rule), predikat-predikat dan variable.
 
DASAR TEORI

Pemrograman Logika
            Prolog dikenal sebagai bahasa deskriptif, yang berarti dengan diberikan serangkai fakta-fakta dan aturan-aturan, Prolog, dengan menggunakan cara berpikir deduktif, akan dapat menyelesaikan permasalah suatu program. Ini dikontraskan dengan bahasa computer tradisioanal seperti C, BASIC, Pascal yang dikenal sebagai bahasa procedural. Dalam bahasa procedural, programmer harus memberikan instruksi tahap demi tahap agar computer dapat dengan pasti bagaimana menyelesaikan permasalahan yang diberikan. Dengan kata lain, programmer harus tahu terlebih dahulu bagaimana cara menyelesaikan permasalahan sebelum diinstruksikan ke computer. Lain jika dibandingkan dengan programmer Prolog. Programmer Prolog hanya membutuhkan deskripsi/gambaran permasalahan, lalu menerjemahkan ke bahasa Prolog. Selanjutnya tinggal system Prolog yang menentukan bagaimana mencari solusinya
            Prolog didasarkan pada klausa-klausa Horn, yang merupakan himpunan bagian dari system formal yang dinamakan logika predikat. Logika predikat menyederhanakan cara agar jelas bagaimana berpikir akan dilakukan. Prolog menggunakan variasi sintak logika predikat yang telah disederhanakan dengan demikian sintaknya mudah dimengerti dan sangat merip dengan bahas natural.
            Prolog mempunyai mesin inferensi yang merupakan suatu prosesberpikir logis mengenai informasi. Mesin inferensi mempunyai pencocok pola yang akan mengambil informasi yang telah disimpan dan kemudian mencocokkan jawaban atas pertanyaan. Satu feature penting dari Prolog adalah bahwa sehubungan mencari jawaban logis atas pertanyaan yang diajukan, ia dapat berhubungan dengan banyak alternative dan mencari semua kemungkinan dari pada hanya satu solusi.
            Logika Predikat dibangun agar mudah menerjemahkan ide-ide berbasis logika menjadi bentuk tertulis. Prolog mengambil keunggulan dari sintak ini untuk membangun suatu bahasa pemrograman yang berbasis logika. Dalam logika predikat, pertama kali harus membuang kata-kata yang tidak dibutuhkan dari suatu kalimat. Kemudian mentransformasikan kalimat tersebut dengan mencari relasi terlebih dahulu, kemudian setelah itu melakukan pengelompokan object. Object kemudian menjadi argument dari relasi atas object tersebut. Berikut ini merupakan contoh kalimat bahasa natural yang ditransformasikan menjadi sintak logika perdikat :
Bahasa Natural
Logika Predikat
Eskrim rasanya enak
enak(eskrim)
Mawar berwarna merah
merah(mawar)
Mitfah menyukai mobil
suka(mitfah,mobil)
Wening suka bakso jika bakso rasanya enak
suka(wening,bakso) if enak(bakso)



  
PEMBAHASAN

Pembahasan Praktik
Praktek 1
PREDICATES
          nondeterm dapat_membeli(symbol, symbol)
          nondeterm orang(symbol)
          nondeterm mobil(symbol)
          suka(symbol, symbol)
          dijual(symbol)
CLAUSES
dapat_membeli(X, Y):-orang(X), mobil(Y), suka(X, Y), dijual(Y).
          orang(nur).
          orang(yudi).
          orang(dian).
          orang(heni).
     mobil(atoz).
     mobil(kijang).
     suka(dian, atoz).
     suka(yudi, pecel).
     suka(heni, buku).
     suka(nur, komputer).
     dijual(kijang).
     dijual(atoz).
     dijual(buku).
GOAL
          dapat_membeli(Siapa, Apa).

Hasil setelah Test Goal :


Pada program diatas jika uji goal dengan menekan tombol akselerator Ctrl+G, maka akan muncul Siapa=dian, Apa=atoz. Hal ini dikarenakan syarat dapat_membeli adalah X dapat membeli Y jika X adalah merupakan orang, Y adalah mobil, X menyukai Y dan Y tersebut dijual.
Karena dalam program ini yang memenuhi semua syarat tersebut hanya dian dan atoz, maka yang muncul hanya satu solusi tersebut yaitu X = dian dan Y = atoz.

Praktek 2
Menyisipkan kode dibawah ini pada CLAUSES :
     suka(heni, kijang).

Hasil setelah Test Goal :


Pada program diatas jika uji goal dengan menekan tombol akselerator Ctrl+G, maka akan muncul 2 solusi yaitu :
Siapa=dian, Apa=atoz
Siapa=heni, Apa=kijang
Hal ini dikarenakan syarat dapat_membeli adalah X dapat membeli Y jika X adalah merupakan orang, Y adalah mobil, X menyukai Y dan Y tersebut dijual.
Karena dalam program ini yang memenuhi semua syarat tersebut ada 2 solusi, maka yang muncul solusi tersebut yaitu X = dian dan Y = atoz dan X = heni dan Y = Kijang.

Praktek 3
Mengganti GOAL dengan  :
1.    suka(_, Apa).

Hasil setelah Test Goal :

     
Pada pengujian GOAL diatas akan menampilkan semua benda yang disukai, tanpa menampilkan siapa yang menyukai benda tersebut. Karena yang disukai ada 5 benda, maka yang akan muncul adalah 5 solusi.

2.  suka(Siapa, _).

Hasil setelah Test Goal :

Pada pengujian GOAL diatas akan menampilkan semua orang yang menyukai, tanpa menampilkan apa saja yang disukai oleh orang tersebut. Karena orang yang menyukai ada 5 orang, maka yang akan muncul adalah 5 solusi.

3.  dapat_membeli(_, Apa).

Hasil setelah Test Goal :

Pada pengujian GOAL diatas akan menampilkan semua benda yang dapat dibeli, tanpa menampilkan siapa yang dapat membeli benda tersebut. Karena yang dapat dibeli hanya ada 2 benda, maka yang akan muncul adalah 2 solusi.
Hal ini dikarenakan hanya benda tersebut yang memenuhi syarat tentang Y harus merupakan mobil dan Y dijual.

4.  dapat_membeli(Siapa, _).

Hasil setelah Test Goal :

Pada pengujian GOAL diatas akan menampilkan semua orang yang dapat membeli, tanpa menampilkan apa saja yang dapat dibeli oleh orang tersebut. Karena orang yang dapat membeli ada 2 orang, maka yang akan muncul adalah 2 solusi.
Hal ini dikarenakan hanya benda tersebut yang memenuhi syarat tentang X harus merupakan orang, X suka dengan Y.


TUGAS

1.    Prolog menjadi bahasa natural
a.    Dian adalah orang
b.    Atoz merupakan sebuah mobil
c.    Dian menyukai atoz
d.    Atos dijual
e.    X dapat membeli Y jika X adalah orang dan Y merupakan sebuah mobil dan X menyukai Y dan Y dijual
f.     Apa yang disukai

2.    Bahasa natural menjadi bahasa Prolog
a.    hobi(Ricky, catur)
b.    malas(Embang)
c.    vegetarian(Yusida)
d.    main(Kusdiar, gitar)
e.    merah(mobil), milik(Sadek), merk(BMW)
f.     pemain(Awan, piano), asal(Pontianak), suku(Jawa)
g.    baik(orang) :- penyayang(sifat), dermawan(sifat)
h.    pintar(orang) :- nilai(Matematika, tinggi) ; nilai(IPA, tinggi) ; nilai(IPS, tinggi)
i.      pasti(orang, mati)

3.    Program dalam Bahasa Prolog
PREDICATES
     nondeterm anak(STRING,STRING)
     nondeterm istri(STRING, STRING)
     nondeterm pria(STRING)
     nondeterm wanita(STRING)
     nondeterm usia(STRING, integer)
     nondeterm cucu(STRING cucu, STRING kakek)
     nondeterm ibu(STRING ibu, String anak)
     nondeterm adik(STRING adik, STRING kakak)
     nondeterm kakek(STRING kakek, STRING cucu)
CLAUSES
     anak("Jhon", "James").
     anak("James", "Peter").
     anak("Sue", "Ann").
     istri("Mary", "Peter").
     istri("Ann", "James").
     pria("Jhon").
     pria("James").
     pria("Peter").
     wanita("Mary").
     wanita("Sue").
     wanita("Ann").
     usia("Jhon", 10).
     usia("Sue", 13).
    
     cucu(A, B) :- anak(A, C), anak(C, B).
     ibu(A, B) :- anak(B, A), wanita(A).
     adik(A, B) :- usia(A, 10), usia(B, 13).
     kakek(A, B) :- anak(B, C), anak(C, A), pria(A).
    
GOAL
     kakek("James", X).


1 komentar: