LAPORAN PRAKTIKUM KECERDASAN BUATAN Modul 2 DASAR-DASAR PROLOG

26
              LAPORAN PRAKTIKUM
KECERDASAN BUATAN
Modul 2
DASAR-DASAR PROLOG








Disusun Oleh :

HERI PURNAMA
125410101
TI 04


UPT LABORATORIUM
Sekolah Tinggi Manajemen Informatika dan Komputer
AKAKOM
Yogyakarta
2013


DARTAR ISI

Judul.………………………………………………………………………………………..     01

Daftar isi..…………………………………………………………………………………     02

Bab 1  : Pendahuluan……………………………………………………………….      03
             A.Tujuan…………………………………………………………………………       03
               B.Dasar Teori……………………………………………………………………       03

Bab 2  : Hasil Praktikum……………………………………………………………      06

Bab 3  : Analisa Hasil Praktikum……………………………………………….       07
              A.Listing Program 1……………………………………………………………………..         07
.             B.Listing Program 2………………………………………………………………………        08
             C.Listing Program  3……………………………………………………………………            08
              D.Listing Program 4……………………………………………………………………..         09
              E.Listing Program 5………………………………………………………………………        10
              F.Listing Program 6………………………………………………………………………       10

Bab 4  : Kesimpulan…………………………………………………………………       11

Bab 5  : Tugas…………………………………………………………………………..      12



                       














Bab 1
Pendahuluan

A.Tujuan
      Mahasiswa mampu :
1.       Mengetahui apa yang dimaksud dengan pemrograman logika (PROgramming in LOGic).
2.       Dapat mengkonversikan dari bahasa natural (natural language) ke bahasa PROLOG dan begitu juga sebaliknya.
3.       Mengetahui konsep dasar fakta-fakta (facts), aturan-aturan (rules), predikat-predikat (predicates) dan variable.

A.    DASAR TEORI
Pemrograman Logika

Prolog dikenal sebagai bahasa deskriptif (descriptive language), yang berarti dengan diberikan serangkaian fakta-fakta dan aturan-aturan, Prolog, dengan menggunakan cara berpikir deduktif (deductive reasoning), akan dapat menyelesaikan permasalahan suatu program. Ini dikontraskan dengan bahasa komputer tradisional seperti C, BASIC, Pascal yang dikenal sebagai bahasa prosedural (procedural language). Dalam bahasa prosedural, programmer harus memberikan instruksi tahap demi tahap agar komputer dapat dengan pasti bagaimana menyelesaikan permasalahan yang diberikan. Dengan kata lain, programmer harus tahu lebih dahulu bagaimana cara menyelesaikan permasalahan sebelum diinstuksikan ke komputer. Lain jika dibandingkan dengan programmer Prolog. Programmer Prolog hanya membutuhkan deskripsi/gambaran permasalahan, lalu menerjemahkannya ke bahasa Prolog.  Selanjutnya tinggal sistem Prolog yang menentukan bagaimana mencari solusinya.

Prolog didasarkan pada klausa-klausa Horn (Horn clauses), yang merupakan himpunan bagian dari sistem formal yang dinamakan logika predikat (predicate logic). 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 mirip dengan bahasa natural.

    Prolog mempunyai mesin inferensi (infrence engine) yang merupakan suatu proses berpikir logis mengenai informasi. Mesin inferensi mempunyai pencocok pola (pattern matcher)  yang akan mengambil informasi yang telah disimpan (diketahui) 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 alternatif dan mencari semua kemungkinan dari pada hanya satu solusi

a.       Kalimat : Fakta dan Aturan
Programmer Prolog mendefinisikan object-object dan relasi-relasi, kemudian mendefinisikan aturan mengenai kapan relasi-relasi ini dikatakan benar (true). Contoh kalimat :

Wening suka bakso.

Dalam Prolog, relasi antara object-object dinamakan predikat. Dalam bahasa natural relasi disimbolisasikan oleh suatu kalimat. Dalam logika predikat yang Prolog gunakan, suatu relasi adalah kesimpulan dalam suatu frase sederhana.

b.      Query
Kalau kita sudah memberikan Prolog sekumpulan fakta, selanjutkan dapat diajukan pertanyaan sehubungan dengan fakta-fakta. Ini dikenal dengan nama memberikan query ke sistem Prolog (querying the Prolog system). Pertanyaan yang diajukan ke Prolog sama tipenya seperti dalam bahasa natural. Berdasarkan pada fakta dan aturan yang diberikan sebelumnya, kita dapat menjawab pertanyaan tentang relasi-relasi ini sebagaimana Prolog juga bisa:

                                Apakah Toni menyukai Inung?
               
                      dalam sintak Prolog:

                                suka(toni, inung).


c.       Variabel
Seperti yang telah disebutkan sebelumnya, untuk memberikan nama variabel dalam Visual Prolog harus diawali dengan huruf besar (capital letter) atau garis bawah (underscore), berikutnya dapat berupa huruf (besar atau kecil), angka (“0-9”) dan garis bawah (“_”). Berikut ini merupakan contoh penamaan variabel yang valid:
                               
                                Ini_adalah_variabel_yang_valid
                                Tanggal_Lahir_Anak_Saya_1_12_1999
                                _Ini_juga_valid

sedangkan berikut ini penamaan variabel yang tidak valid:

                                1desember_1999                %diawali dengan angka
                                ini_tidak_valid      %diawali dengan huruf kecil
                                $Pengganggu                        %terdapat karakter yang dilarang (‘$’)

Penamaan variabel selain valid sebaiknya yang mudah dimengerti. Sebagai contoh daripada memberikan nama variabel X untuk:

                                suka(X, tennis).

akan lebih dimengerti jika menggunakan nama variabel Orang sehingga menjadi:

                                suka(Orang, tennis).

d.Komentar
Programmer yang baik selalu memberikan catatan atau komentar untuk menjelaskan sesuatu yang mungkin tidak jelas bagi orang lain (atau bahkan bagi programmer sendiri dalam setahun ke depan misalnya). Komentar akan membuat program menjadi lebih mudah untuk dimengerti.
Komentar  dengan baris jamak harus dimulai dengan karakter /* (slash, asterik) dan diakhiri dengan karakter */ (asterik, slash). Untuk memberikan komentar dengan baris tunggal dapat menggunakan karakter yang sama atau dapat dimulai dengan tanda persen (%). Contoh:

/* Ini contoh sebuah komentar */

%  Ini juga contoh komentar

/* Ini komentar
   dengan
   tiga baris */

/* Ini contoh komentar /* dalam komentar */ di Visual Prolog */




























Bab 2
Hasil Praktikum
























Bab 3
Analisa Hasil Praktikum

A.LISTING PROGRAM 1  :
PREDICATES
 nondeterm dapat_membeli(symbol,symbol)
 nondeterm orang(symbol)
 nondeterm mobil(symbol)
 suka(symbol,symbol)
 dijual(symbol)
Ø  Pada block ini disebut sebagai section PREDIKAT  yang mana terdapat 5 baris data yakni : dapat_membeli, orang, mobil, suka,dan dijual pada masing-masing baris tersebut bertipe symbol.Dan pada 3 baris yang pertama ada kata nondeterm yang artinya untuk memberitahu ke compiler Visual Prolog bahwa predikat tersebut mempunyai lebih dari satu kemungkinan jawaban (non-deterministik).Secara default Visual Prolog akan menganggap predikat yang ada di section predicates sebagai deterministik (kecuali pada section facts, merupakan kebalikannya).

 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(heri,buku).
    suka(nur,komputer).

    dijual(kijang).
    dijual(atoz).
    dijual(buku).
Ø  Pada block ini disebut Section clauses merupakan section yang paling penting pada program Visual Prolog. Pada section inilah kita meletakkan fakta dan aturan. Ketika mencari jawaban, Visual Prolog akan mencari dari bagian paling atas dari section clauses, melihat setiap fakta dan aturan untuk mendapat jawaban benar, hingga ke bagian paling bawah dari section ini.
Ø  Pada paragraf pertama diletakkan aturan yakni : dapat_membeli (X,Y) :- orang(X),mobil(Y),suka(X,Y),dijual(Y). Yang berarti “Jika X adalah orang dan Y adalah mobil dan X suka Y dan Y dijual maka X dapat membeli Y.”
Ø  Pada paragraph kedua berisi fakta dengan variabel orang yang mana terdiri dari 4 data pada variabel ini yakni nur,yudi,dian,dan heni.
Ø  Pada paragraph ketiga berisi fakta dengan variabel mobil yang mana terdiri dari 2  data pada variabel ini yakni atoz dan kijang.
Ø  Pada paragraph ketiga berisi fakta dengan variabel suka yang mana terdiri dari  4 data pada variabel ini yakni   suka(dian,atoz).
    suka(yudi,pecel).
    suka(heri,buku).
    suka(nur,komputer).
·         Pada baris pertama dapat dibaca dian suka atoz.
·         Pada baris kedua dapat dibaca yudi suka pecel.
·         Pada baris ketiga dapat dibaca heri suka buku.
·         Pada baris keempat dapat dibaca nur  suka komputer.

Ø  Pada paragraph keempat  berisi fakta dengan variabel dijual yang mana terdiri dari  3 data pada variabel ini yakni   kijang,atoz,dan buku.

GOAL
    dapat_membeli (Siapa,Apa).
Ø  Pada blokc Ini adalah section goal yang secara essensial sama dengan body dari sebuah aturan (rule), yaitu sederetan sub-sub goal. Perbedaan antara section goal dengan suatu aturan adalah setelah kata kunci goal tidak diikuti tanda :- dan Visual Prolog secara otomatis mengeksekusi goal ketika program dijalankan.
Ø  Pada section ini ingin dicari GOAL SIAPA dapat Membeli Apa?

RUNNING PROGRAM 1 :
Ø  Dan hasilya adalah Siapa adalah Dian dan apa adalah atoz.Bisa menemukan goal seperti itu dikarenakan karena program meksekusi aturan dalam fakta ada program tersebut yang memenuhi semuanya adalah si dian dengan atoz.Karena dian suka dengan atoz dan atoz pun dijual jadi bisa mengambil kesimpulan seperti itu.

B.LISTING PROGRAM 2 :

    suka(dian,atoz).
    suka(yudi,pecel).
    suka(heri,buku).
    suka(heni,kijang).
    suka(nur,komputer).
Ø  pada program prolog yang kedua hanya menanbahkan fakta baru pada bagian clause yaki fakta :
suka(heni,kijang).

B.RUNNING PROGRAM 2:
Ø  Dan hasilnya menjadi terdapat 2 solusi yakni : dian atoz dan heni kijang karena data-data tersebut yang memenuhi semua dalam aturan yang ada pada section clauses.

C.LISTING PROGRAM 3 :
    GOAL
   suka (_,Apa).
Ø  Pada program prolog yang ketiga cukup menganti goal dengan suka (_,Apa).yang artinya anonym suka apa ?

RUNNING PROGRAM 3 :
Ø  Dan hasilnya adalah terdapat 5 solusi yakni masing-masing adalah atoz,pecel,buku,kijang dan komputer itu dikarenakan goal tersebut ingin mencari data apa saja yang disukai oleh masing-masing orang?maka munculah data-data tersebut yang terdapat pada variabel suka pada section clauses.

D.LISTING PROGRAM 4 :
    GOAL
   suka (Siapa,_).
Ø  Pada program prolog yang keempat  cukup menganti goal dengan suka (Siapa,_). Artinya adalah siapa suka anonym ?
RUNNING PROGRAM 4:
Ø  Dari goal tersebut ternyata terdapat 5 solusi yakni dian,yudi,heri,heni,dan nur. itu dikarenakan goal tersebut ingin mencari data siapa saja yang suka oleh masing-masing barang?maka munculah data-data tersebut yang terdapat pada variabel suka pada section clauses.

E.LISTING PROGRAM 5 :
    GOAL
   dapat_membeli (_,Apa).
Ø  Pada program prolog yang kelima cukup menganti goal dengan   dapat_membeli (_,Apa).yang dapat dibaca anonym dapat membeli apa ?atau semua orang dapat membeli apa?

RUNNING PROGRAM 5 :
Ø  Dan hasilnya terdapat 2 solusi yakni atos dan kijang,itu dikarenakan pada variabel dapat_membeli hanya terdapat 2 data/fakta itu saja.

F.LISTING PROGRAM 6 :
    GOAL
   dapat_membeli (Siapa,_).
Ø  Pada program prolog yang kelima cukup menganti goal dengan     dapat_membeli (Siapa,_).Yang artinya siapa saja dapat membeli?
RUNNING PROGRAM  6:
Ø  Dan hasilnya adalah terdapat 2 solusi yakni dian dan heni itu dikarenakan pada fakta fakta yang ada yang memenuhi kesemuanya hanyalah 2 orang tersebut.maka hanya dua orang tersebut yang tampil pada layar atau goal.




Bab 4
Kesimpulan
Dari Program yang dijalan dalam Visual Prolog diatas saya dapat menggambil kesimpulan bahwa:

1.      PREDICATES (PREDIKAT)
           Deklarasi predikat dimulai dengan nama predikat diikuti tanda kurung buka, kemudian diikuti nol atau lebih argumen dari predikat (setiap argumen dipisah dengan tanda koma) kemudian ditutup dengan tanda kurung tutup,Didalam Predikat terdiri dari Nama,Argumen predikat.
              Nama predikat harus dimulai dengan huruf diikuti dengan serangkaian huruf, angka dan atau garis bawah (underscore). Walaupun bisa dimulai huruf besar, namun sangat direkomendasikan untuk memakai huruf kecil diawal nama predikat (beberapa versi Prolog yang lain tidak memperbolehkan nama predikat diawali huruf besar). Panjang nama predikat bisa sampai 250 karakter
             Argumen predikat harus yang sudah dikenal oleh domain Visual Prolog. Suatu domain bisa merupakan domain standar atau bisa juga domain yang sudah dideklarasikan pada section domains.
2.      CLAUSES (KLAUSA)
          Section clauses merupakan section yang paling penting pada program Visual Prolog. Pada section inilah kita meletakkan fakta dan aturan. Ketika mencari jawaban, Visual Prolog akan mencari dari bagian paling atas dari section clauses, melihat setiap fakta dan aturan untuk mendapat jawaban benar, hingga ke bagian paling bawah dari section ini
3.      GOAL (AKHIR)
         section goal secara essensial sama dengan body dari sebuah aturan (rule), yaitu sederetan sub-sub goal. Perbedaan antara section goal dengan suatu aturan adalah setelah kata kunci goal tidak diikuti tanda :- dan Visual Prolog secara otomatis mengeksekusi goal ketika program dijalankan
4.      Kata nondeterm yang artinya untuk memberitahu ke compiler Visual Prolog bahwa predikat tersebut mempunyai lebih dari satu kemungkinan jawaban (non-deterministik).






Bab 5
TUGAS

1).Mengubah bahasa prolog menjadi bahasa natural :
  Bahasa Prolog :
a)      orang (dian).
b)      mobil (atos).
c)      suka (dian,atoz).
d)      Dijual (atoz).
e)      Dapat_membeli (X,Y) :-
Orang (X),
Mobil (Y),
Suka( X,Y),
Dijual (Y).
f)       suka (_,Apa).

   Bahasa Natural :
a.      Dian adalah orang
b.      Atos adalah merk mobil
c.       Dian suka atos
d.      Atos dijual
e.      Jika X adalah orang dan mobil adalah Y dan X suka dengan Y dan Y dijual maka X dapat membeli Y .
f.        Setiap orang suka apa ???

2).Mengubah bahasa natural menjadi bahasa Prolog:
     Bahasa Natural :
a.      Ricky mempunyai hobi bermain catur.
b.      Embang orangnya pemalas.
c.       Yusida seorang vegetarian.
d.      Kusdiar pandai bermain gitar.
e.      Mobil yang berwarna merah itu milik Sadek, bermerk BMW.
f.        Awan seorang pemain piano, berasal dari Pontianak bersuku Jawa.
g.      Seseorang dikatakan baik jika mempunyai sifat penyayang dan dermawan.
h.      Seseorang dikatakan pintar jika salah satu dari Matematika atau IPA atau IPS mendapat nilai tinggi.
i.        Setiap orang pasti mati.

 Bahasa Prolog :
a.      hobi(ricky,catur)
b.      malas(embang)
c.       vegetarian(yusida)
d.      pandai(kusidiar,gitar)
e.      merah(mobil,sandek,bmw)
f.        piano(awan,((potianak),(jawa)))
g.      dikatakan(orang,baik) :- punya_sifat(penyayang),punya_sifat(dermawan).
h.      dikatakan(orang,pintar) :- nilai_tinggi(Matematika); nilai_tinggi(IPA); nilai_tinggi(IPS).
i.        pasti (_,mati).

3).Membuat program bahasa prolog untuk menguji:
a.      cucu  
jhon cucu dari siapa ???

PROGRAM PROLOG :
PREDICATES
      nondeterm cucu(symbol,symbol)
      nondeterm ibu(symbol,symbol)
      nondeterm adik(symbol,symbol)
      nondeterm kakek(symbol, symbol)
      nondeterm anak(symbol,symbol)
      istri(symbol,symbol)
      pria(symbol)
      wanita(symbol)
      usia(symbol,byte)
  
CLAUSES
     cucu(A,C):-anak(A,B),anak(B,C).
     ibu(C,A):-anak(A,B),istri(C,B).
     adik(A,B):-usia(A,10),usia(B,13).
     kakek(C,A):-anak(A,B),anak(B,C).       

anak (jhon, james).
anak (james, peter).
anak (sue, ann).

     istri (ann, james).
     istri (mary, peter).
pria(jhon).
pria (james).
pria (peter).
     wanita (mary).
     wanita(sue).
     wanita(ann).

usia(jhon,10).
usia(sue,13).
    
GOAL
cucu(jhon,A).

 JAWABAN PROLOG :

b.Ibu     
   Mary ibu dari siapa ???

Cukup dengan menganti pada GOAL “Program Prolog” dengan :
ibu(mary,A).
JAWABAN PROLOG :

c.adik
   jon adik dari siapa ???

Cukup dengan menganti pada GOAL “Program Prolog” dengan :
adik(jhon,A).
JAWABAN PROLOG :

d.kakek
   peter dari siapa ???

Cukup dengan menganti pada GOAL “Program Prolog” dengan :
kakek(peter,A).
JAWABAN PROLOG :


    Blogger Comment
    Facebook Comment

0 komentar:

Post a comment

Thanks For Your Feedback.