Senin, 02 Januari 2017

Sistem Cerdas Bab 9 - 12

Bab 9.

9.1 Mengubah inferensi order pertama menjadi inferensi proposisi

Inferensi pada logika proposisi dapat dilakukan dengan menggunakan resolusi. RESOLUSI adalah suatu aturan untuk melakukan inferensi yg dapat berjalan secara efisien dalam suatu bentuk khusus yg disebut  Conjunctive Normal Form (CNF).
         CNF ini memiliki ciri-ciri sebagai berikut :
        Setiap kalimat merupakan disjungsi literal
        Semua kalimat terkonjungsi secara implisit
         Dua atau lebih proposisi dapat digabungkan dengan menggunakan operator logika :
            a. Negasi         : Ø (NOT)
            b. Konjungsi    : Ù (AND)
            c. Disjungsi     : Ú (OR)
            d. Implikasi     : ® (IF-THEN)
            e. Ekuivalen    : Û
         Operator NOT            : digunakan untuk memberikan nilai negasi (lawan) dari pernyataan yang telah ada.
         Langkah-langkah mengubah kalimat ke dalam bentuk CNF, sebagai berikut :
    > hilangkan implikasi dan ekuivalensi
               mis.  X ® Y menjadi  ØX Ú Y (hukum implikasi)
                          X Û Y menjadi (X=>Y) Ù (Y=>X) (hukum bi-implikasi)
                                                   (ØX Ú Y)Ù(ØY Ú X) (hukum implikasi)
    > kurangi lingkup semua negasi menjadi satu negasi saja
       mis. Ø(Ø X) menjadi X (hukum negasi ganda)
                         Ø(X Ú Y) menjadi (ØX Ù ØY) (hukum de’Morgan)
                         Ø(X Ù Y) menjadi (ØX Ú ØY) (hukum de’Morgan)
> gunakan aturan assosiatif dan distributif untuk mengkonversi menjadi conjunction of    disjunction
       mis.  Assosiatif : (A Ú B) Ú C = A Ú (B Ú C)
   Distributif : (A Ù B) Ú C = (A Ú C) Ù (B Ú C)
           
         Algoritma Resolusi
            Input   : serangkaian clauses yang disebut axioma dan tujuannya.
            Output :uji apakah tujuan diturunkan dari axioma
            Begin
            1. Kembangkan serangkaian pernyataan axioma termasuk tujuan yang dinegasikan
            2. Representasikan tiap elemen statemen ke dalam Conjunctive Normal Form (CNF)
                berdasarkan langkah-langkah berikut :
Ø  Hilangkan operator “if-then” dengan  operasi  NEGATION dan OR berdasarkan hukum logika
         Algoritma Resolusi
 Input : serangkaian clauses yang disebut axioma dan tujuannya.
 Output :uji apakah tujuan diturunkan dari axioma
 3. Repeat
a. Pilih dua clauses mana saja dari S, sehingga satu clause berisi literal yang dinegasikan dan clause yang lainnya berisi literal positif yang berhubungan (literal yang tidak dinegasikan)
b. Pisahkan dua clauses ini dan panggil clause yang dihasilkan (resolvent). Hapus parent clause dari S.
Until sebuah clause null dihasilkan atau tidak ada progress lebih lanjut yang bisa dibuat
4. Jika sebuah clause null dihasilkan, maka “tujuan terbukti” atau Pernyataan “valid”

9.2. Unifikasi
Unifikasi adalah usaha untuk mencoba membuat dua ekspresi menjadi identik (mempersatukan keduanya) dengan mencari substitusi-substitusi tertentu untuk mengikuti peubah-peubah dalam ekspresi mereka tersebut. Unifikasi merupakan suatu prosedur sistematik untuk memperoleh peubah-peubah instan dalam wffs. Ketika nilai kebenaran predikat adalah sebuah fungsi dari nilai-nilai yang diasumsikan dengan argumen mereka, keinstanan terkontrol dari nilai-nilai selanjutnya yang menyediakan cara memvalidasi nilai-nilai kebenaran pernyataan yang berisi predikat. Unifikasi merupakan dasar atas kebanyakan strategi inferensi dalam Kecerdasan Buatan. Sedangkan dasar dari unifikasi adalah substitusi.
Suatu substitusi (substitution) adalah suatu himpunan penetapan istilah-istilah kepada peubah, tanpa ada peubah yang ditetapkan lebih dari satu istilah. Sebagai pengetahuan jantung dari eksekusi Prolog, adalah mekanisme unifikasi.
Aturan-aturan unifikasi :
1.     Dua atom (konstanta atau peubah) adalah identik.
2.     Dua daftar identik, atau ekspresi dikonversi ke dalam satu buah daftar.
3.     Sebuah konstanta dan satu peubah terikat dipersatukan, sehingga peubah menjadi terikat kepada konstanta.
4.     Sebuah peubah tak terikat diperssatukan dengan sebuah peubah terikat.
5.     Sebuah peubah terikat dipersatukan dengan sebuah konstanta jika pengikatan pada peubah terikat dengan konstanta tidak ada konflik.
6.     Dua peubah tidak terikat disatukan. Jika peubah yang satu lainnya menjadi terikat dalam upa-urutan langkah unifikasi, yang lainnya juga menjadi terikat ke atom yang sama (peubah atau konstanta).
7.     Dua peubah terikat disatukan jika keduanya terikat (mungkin melalui pengikatan tengah) ke atom yang sama (peubah atau konstanta).

9.3. Generalized Modus Ponens (GMP)
Kaidah dasar dalam menarik kesimpulan  dari dua nilai logika tradisional adalah modus ponens, yaitu kesimpulan tentang nilai kebenaran pada Bdiambil berdasarkan kebenaran pada A. Sebagai contoh, jika A diidentifikasi dengan “tomat itu merah” dan B dengan “tomat itu masak”, kemudian jika benar kalau “tomat itu merah” maka “tomat itu masak”, juga benar. Konsep ini digambarkan sebagai berikut:

premise 1 (kenyataan)       
:
x adalah A,
premise 2 (kaidah)             
:
jika x adalah A maka y adalah B.
Consequence (kesimpulan)
:
y adalah B.

Secara umum dalam melakukan penalaran, modus ponens digunakan dengan cara pendekatan. Sebagai contoh, jika ditemukan suatu kaidah implikasi yang sama dengan “jika tomat itu merah maka tomat itu masak”, misalnya “tomat itu kurang lebih merah,” maka dapat disimpulkan “tomat itu kurang lebih masak”, hal ini dapat dituliskan seperti berikut:

premise 1 (kenyataan)       
:
x adalah A’,
premise 2 (kaidah)             
:
jika x adalah A maka y adalah B.
Consequence (kesimpulan)
:
y adalah B’.

Dengan A’adalah dekat ke A dan B’adalah dekat ke B. Ketika ABA’ dan B’adalah himpunan fuzzy dari semesta yang berhubungan, maka penarikan kesimpulan seperti tersebut dinamakan penalaran dengan pendekatan (approximate reasoning) yang disebut juga dengan generalized modus ponens (GMP).

9.4. Rangkaian Forward dan backward
Forward chaining merupakan metode inferensi yang melakukan penalaran dari suatu masalah kepada solusinya. Jika klausa premis sesuai dengan situasi (bernilai TRUE), maka proses akan menyatakan konklusi. Forward chaining adalah data-driven karena inferensi dimulai dengan informasi yang tersedia dan baru konklusi diperoleh. Jika suatu aplikasi menghasilkan tree yang lebar dan tidak dalam, maka gunakan forward chaining.
Contoh :
Terdapat 10 aturan yang tersimpan dalam basis pengetahuan yaitu :
R1 : if A and B then C
R2 : if C then D
R3 : if A and E then F
R4 : if A then G
R5 : if F and G then D
R6 : if G and E then H
R7 : if C and H then I
R8 : if I and A then J
R9 : if G then J
R10 : if J then K

Fakta awal yang diberikan hanya A dan E, ingin membuktikan apakah K bernilai benar. Proses penalaran forward chaining terlihat pada gambar dibawah :




·       Backward Chaining
Menggunakan pendekatan goal-driven, dimulai dari harapan apa yang akan terjadi (hipotesis) dan kemudian mencari bukti yang mendukung (atau berlawanan) dengan harapan kita. Sering hal ini memerlukan perumusan dan pengujian hipotesis sementara. Jika suatu aplikasi menghasilkan tree yang sempit dan cukup dalam, maka gunakan backward chaining.
Contoh :
Seperti pada contoh forward chining, terdapat 10 aturan yang sama pada basis pengetahuan dan fakta awal yang diberikan hanya A dan E. ingin membuktikan apakah K bernilai benar.


Bab 10.


10.1. Ketidakpastian

PENALARAN DENGAN KETIDAKPASTIAN (UNCERTAINITY) KETIDAKPASTIAN (Uncertainity)
- Ketidakpastian dapat dianggap sebagai suatu kekurangan informasi yang memadai untuk membuat suatu keputusan.

- Ketidakpastian merupakan suatu permasalahan karena mungkin menghalangi kita membuat suatu keputusan yang terbaik.

- Teori-teori yang berhubungan dengan ketidakpastian :

= Probabilitas Klasik
= Probabilitas Bayes
= Teori Hartley yang berdasarkan pada himpunan klasik
= Teori Shanon yang didasarkan pada peluang
=Teori Dempster-Shafer
= Teori Fuzzy Zadeh

- Contoh aplikasi yang klasik sistem pakar yang sukses sehubungan dengan ketidakpastian :
= MYCIN untuk diagnosa medis
= PROPECTOR untuk ekplorasi mineral


10.2. Probabilitas dan teorema Bayes

TEORI PROBABILITAS
- Teori formal probabilitas dibuat dengan menggunakan 3 aksioma

- Teori aksiomatik disebut juga objective theory of probability diperkenalkan oleh Kolmogorov, sedangkan teori aksiomatik probabiliti kondisional dibuat oleh Renyi.

PROBABILITY KLASIK
- Probability merupakan cara kuantitas yang berhubungan dengan ketidakpastian
- Teori probability diperkenalkan pada abad 17 oleh penjudi Perancis dan pertama kali diajukan oleh Pascal dan Fermat (1654)
- Prob. Klasik disebut juga dengan a priori probability karena berhubungan dg game atau sistem.

- Formula fundamental prob. Klasik

P = W / N
dimana :
W = jumlah kemenangan
N = jumlah kemungkinan kejadian yang sama pada percobaan

TEOREMA BAYES

- Ditemukan oleh Thomas Bayes

- Teorema Bayes kebalikan dari probabilitas kondisional P(A|B) atau disebut posteriori probability, dimana dalam teorema Bayes : state probabilitas dari kejadian awal diberikan untuk melihat kejadian yang mungkin akan terjadi
kemudian.

 Dari contoh kerusakan disket merk X dan bukan merk X :

-  (6) 75% kemungkinan disket merk X akan rusak dlm 1
tahun adalah.
-          (7) probabilitas disket merk bukan X rusak dalam 1
tahun 50%.
-         Pertanyaannya adalah : kita punya disket dan tidak tahu merk apa, bagaimana probabilitas kerusakannya jika merk X ? Atau merk bukan X ?

- Bentuk umum Teorema Bayes : P(Hi|E) = P(EÇHi)
                                                               å j P(EÇHj)
= P(E|Hi) P(Hi)
å j P(E|Hj) P(Hj)

 = P(E|Hi) P(Hi)
P(E)


10.3.  FAKTOR KEPASTIAN

Faktor Kepastian (Certainty Factor)

Faktor kepastian merupakan cara dari penggabungan kepercayaan (belief) dan ketidapercayaan (unbelief) dalam bilangan yang tunggal. Dalam certainty theory, data-data kualitatif direpresentasikan sebagai derajat keyakinan (degree of belief).

Tahapan Representasi Data Kualitatif

Tahapan dalam merepresentasikan data-data kualitatif :

-         kemampuan untuk mengekspresikan derajat keyakinan sesuai dengan metode yang sudah dibahas sebelumnya.

-         kemampuan untuk menempatkan dan mengkombinasikan derajat keyakinan tersebut dalam sistem pakar.
Dalam mengekspresikan derajat keyakinan digunakan suatu nilai yang disebut certainy factor (CF) untuk mengasumsikan derajat keyakinan seorang pakar terhadap suatu data.


Dimana :
-          CF = Certainy Factor (faktor kepastian) dalam hipotesis H yang dipengaruhi oleh fakta E.
-          MB=Measure of Belief (tingkat keyakinan), adalah ukuran kenaikan dari kepercayaan hipotesis H dipengaruhi oleh fakta E.
-          MD=Measure of Disbelief (tingkat ketidakyakinan), adalah kenaikan dari ketidakpercayaan hipotesis H dipengaruhi fakta E.
-          E = Evidence (peristiwa atau fakta).
-          H = Hipotesis (Dugaan).


10.4. TEORI DEMPSTER – SHAFER

Teori Dempster-Shafer adalah teori matematika untuk pembuktian berdasarkan belief functions(fungsi kepercayaan) dan plausible reasonin (penalaran yang masuk akal). Digunakan untuk mengkombinasikan potongan informasi (fakta) yang terpisah untuk mengkalkulasi kemungkinan dari suatu peristiwa.Teori Dempster-Shafer adalah suatu teori matematika untuk pembuktian (Kusumadewi, 2003) berdasarkan belief functions and plausible reasoning (fungsi kepercayaan dan pemikiran yang masuk akal), yang digunakan untuk mengkombinasikan potongan informasi yang terpisah (bukti) untuk mengkalkulasi kemungkinan dari suatu peristiwa. Teori ini dikembangkan oleh Arthur P. Dempster dan Glenn Shafer.

Ada berbagai macam penalaran dengan model yang lengkap dan sangat konsisten, tetapi pada kenyataannya banyak permasalahan yang tidak dapat terselesaikan secara lengkap dan konsisten. Ketidakkonsistenan yang tersebut adalah akibat adanya penambahan fakta baru. Penalaran yang seperti itu disebut dengan penalaran non monotonis. Untuk mengatasi ketidakkonsistenan tersebut maka dapat menggunakan penalaran dengan teori Dempster-Shafer. Secara umum teori Dempster-Shafer ditulis dalam suatu interval:
           Belief,Plausibility
Belief (Bel) adalah ukuran kekuatan evidence dalam mendukung suatu himpunan proposisi. Jika bernilai 0 maka mengindikasikan bahwa tidak ada evidence, dan jika bernilai 1 menunjukkan adanya kepastian. Dimana nilai bel yaitu (0-0.9).
Plausibility (Pl) dinotasikan sebagai : Pl(s) = 1 – Bel (-s) Plausibility juga bernilai 0 sampai 1. Jika yakin akan-s, maka dapat dikatakan bahwa Bel(-s)=1, dan Pl(-s)=0.

Contoh :
 Diketahui nilai belief  adalah 0,5 dan nilai plausibility adalah 0,8 untuk proposisi “the cat in the box is dead”
 Bel = 0,5
 Fakta yang mendukung proposisi tersebut memiliki nilai kepercayaan sebesar 0,5
  Pl = 0,8
  Fakta yang melawan proposisi tersebut hanya memiliki nilai kepercayaan sebesar 0,2

Bab 11.


11.1. Fakta dan Relasi

      Fakta Adalah suatu unit yang selalu bernilai benar,fakta ini merupakan kumpulan data-data objek. Suatu fakta dibedakan dalam 2 jenis, yaitu fakta yang menunjukan relasi dan fakta yang menunjukan milik/sifat, penulisan suatu fakta selalu di akhir dengan (.)

Aturan (“Rules”)

      Aturan adalah suatu pernyataan yang menunjukan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan. Sebuah aturan dinyatakan sebagai suatu kalimat bersyarat. Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.

Pertanyaan (“Query”)
Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada. Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”.


11.2. STRUKTUR PROGRAM PROLOG

Dalam struktur program prolog terdapat 4 macam di antara nya adalah Domain,Predicate,Variable, dan goal.

Domain

                        Domain berfungsi untuk menyatakan jenis suatu variabel seperti hal nya tipe data dalam bahasa prosedural (Pascal,C) . beberapa domain standar dalam prolog diantara nya char,integer,real,string,symbol. Contoh :
namaBunga = symbol
mataKuliah = string
nilai = integer

- Domains char dipakai pada predikat yang argumennya memiliki nilai berupa karakter tunggal,  yaitu abjad,  angka,  pungtuasi (?.!,<,...), dan operasi (+,‐,...). Penulisan argumen bertipe char dalam prolog diapit tanda ’...’. contoh : nilai (dita, ’A’).

- Domains string dipakai pada predikat yang argumennya memiliki nilai berupa karakter jamak yang dapat berupa kata maupun suatu tulisan (kumpulan kata‐kata termasuk di dalamnya pungtuasi dan tanda operasi yang dapat dipisahkan spasi). Penulisan argumen bertipe string dalam prolog diapit tanda ”...”. contoh: hobi(rina,”Memasak”).

-Domains integer dipakai pada predikat yang argumennya memiliki nilai berupa bilangan bulat.
Contoh : nilai(tini,”Kalkulus”,75).

-Domains real dipakai pada predikat yang argumennya memiliki nilai berupa bilangan pecahan. Penulisan argumen bertipe real dalam prolog untuk nilai pecahan ditulis di belakang tanda titik (.). contoh: nilai(ivan, 8.75).

-Domains symbol dipakai pada predikat yang argumennya memiliki nilai berupa kumpulan karakter yang hanya terdiri dari huruf atau kata tanpa dipisahkan oleh spasi. Suatu kata  dapat disambungkan dengan kata lain dengan  tanda _ (underscore). contoh : lelaki(toni_setiawan).

Predicate

                        Dalam bahasa prolog kita perlu mendeklarasikan predikat yang ada pada bagian Predicates dan mendefinisikannya dalam bagian Clauses. Jika tidak, Prolog tidak akan mengenalnya. Namun untuk predikat standar seperti cursor, makewindow, readln, readchar dsb tidak perlu dideklarasikan.
Misalkan untuk domains seperti di atas dapat dibuat predicates
            Predicates
            menu(integer)
            data(NamaOrang, Alamat, Umur)
Deklarasi predicates dalam bagian predicates, harus disertai argumen jika memang berargumen. Nama predikat harus diawali dengan huruf, boleh besar atau kecil, selebihnya bisa huruf, angka, garis bawah, namun dianjurkan untuk dimulai dengan huruf kecil. Nama predikat tidak boleh mengandung spasi, tanda minus, asteris atau garis miring.

Variable
                        Variabel merupakan sebuah interpretasi yang digunakan untuk menemukan
nilai dari sebuah klausa. Variabel harus diawali dengan huruf besar. Contoh :

- suka(andi,X) .
            X = eskrim
- anakperempuan(lila, X).
            X = agus

Variabel yang memiliki beberapa value kamu dapat memunculkan nilai lain dengan
menekan tombol (;)

Deskripsi Rekrusif dari Sebuah Hubungan
Nah ini yang gak kalah penting, Rekursif ini digunakan untuk mencari seluruh dari
child dari sebuah tree. Intinya, misalkan terdapat sebuah keluarga terdapat kakek,
ayah, dan anak. Maka untuk mendapatkan seluruh keturunan dari kakek, yaitu kakek,
ayah, anak, anaknya anak dan seterusnya kita membutuhkan rekursif.




Representasinya seperti berkut
turunan(X,Y) :- antiturunan(Y,X).
turunan(X,Y) :- antiturunan(Y,Z), turunan(X,Z).

Goal

Goal dalam turbo Prolog ada 2 macam yakni :
a. Goal eksternal
b. Goal internal

            Goal eksternal diketikkan langsung pada bagian ‘goal’ : di jendela dialog pada kompiler terpadu Turbo Prolog. dengan cara ini kita hanya bisa menjalankan program dari lingkungan kompiler Turbo Prolog. Untuk dapat dijalankan di lingkungan DOS kita harus menggunakan goal internal yang di simpan pada bagian Goal. Sebenarnya goal inilah yang dicari dan dipanggil pada saat program dijalankan. Jika goal tercapai, program berhenti dengan berhasil, tapi jika sebaliknya, program berhenti dalam keadaan gagal.
Contoh :
            Predicates
                        tulis(string)
            Goal
                        tulis(X),
                        write(X).
            Clauses
                        tulis(“Bandung”).
                        tulis(“Yogya”).
                        tulis(“Jakarta”).
Program ini pertama akan memanggil goalnya, yang terdiri dari sub goal tulis dan write. Ini artinya, goal akan memanggil klausa tulis. Di bagian clauses, terdapat tulis yang berupa fakta. Prolog akan mencarinya dari paling atas, diperoleh tulis(“Bandung”). Ini berarti sub-goal tulis(X) berhasil dengan X terikat dengan nilai “Bandung”. Selanjutnya Prolog membuktikan sub-goal kedua yakni write(X). Ini pasti berhasil dan program berhenti. Jika goal diajukan dari luar (dari jendela Goal, goal internalnya dibuang), kemudian kita tuliskan : tulis(X) [enter], akan tertulis pada layar :
            X = Bandung
            X = Yogya
                 X = Jakarta
11.1. Fakta dan Relasi

      Fakta Adalah suatu unit yang selalu bernilai benar,fakta ini merupakan kumpulan data-data objek. Suatu fakta dibedakan dalam 2 jenis, yaitu fakta yang menunjukan relasi dan fakta yang menunjukan milik/sifat, penulisan suatu fakta selalu di akhir dengan (.)

Aturan (“Rules”)

      Aturan adalah suatu pernyataan yang menunjukan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan. Sebuah aturan dinyatakan sebagai suatu kalimat bersyarat. Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.

Pertanyaan (“Query”)
Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada. Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”.


11.2. STRUKTUR PROGRAM PROLOG

Dalam struktur program prolog terdapat 4 macam di antara nya adalah Domain,Predicate,Variable, dan goal.

Domain

                        Domain berfungsi untuk menyatakan jenis suatu variabel seperti hal nya tipe data dalam bahasa prosedural (Pascal,C) . beberapa domain standar dalam prolog diantara nya char,integer,real,string,symbol. Contoh :
namaBunga = symbol
mataKuliah = string
nilai = integer

- Domains char dipakai pada predikat yang argumennya memiliki nilai berupa karakter tunggal,  yaitu abjad,  angka,  pungtuasi (?.!,<,...), dan operasi (+,‐,...). Penulisan argumen bertipe char dalam prolog diapit tanda ’...’. contoh : nilai (dita, ’A’).

- Domains string dipakai pada predikat yang argumennya memiliki nilai berupa karakter jamak yang dapat berupa kata maupun suatu tulisan (kumpulan kata‐kata termasuk di dalamnya pungtuasi dan tanda operasi yang dapat dipisahkan spasi). Penulisan argumen bertipe string dalam prolog diapit tanda ”...”. contoh: hobi(rina,”Memasak”).

-Domains integer dipakai pada predikat yang argumennya memiliki nilai berupa bilangan bulat.
Contoh : nilai(tini,”Kalkulus”,75).

-Domains real dipakai pada predikat yang argumennya memiliki nilai berupa bilangan pecahan. Penulisan argumen bertipe real dalam prolog untuk nilai pecahan ditulis di belakang tanda titik (.). contoh: nilai(ivan, 8.75).

-Domains symbol dipakai pada predikat yang argumennya memiliki nilai berupa kumpulan karakter yang hanya terdiri dari huruf atau kata tanpa dipisahkan oleh spasi. Suatu kata  dapat disambungkan dengan kata lain dengan  tanda _ (underscore). contoh : lelaki(toni_setiawan).

Predicate

                        Dalam bahasa prolog kita perlu mendeklarasikan predikat yang ada pada bagian Predicates dan mendefinisikannya dalam bagian Clauses. Jika tidak, Prolog tidak akan mengenalnya. Namun untuk predikat standar seperti cursor, makewindow, readln, readchar dsb tidak perlu dideklarasikan.
Misalkan untuk domains seperti di atas dapat dibuat predicates
            Predicates
            menu(integer)
            data(NamaOrang, Alamat, Umur)
Deklarasi predicates dalam bagian predicates, harus disertai argumen jika memang berargumen. Nama predikat harus diawali dengan huruf, boleh besar atau kecil, selebihnya bisa huruf, angka, garis bawah, namun dianjurkan untuk dimulai dengan huruf kecil. Nama predikat tidak boleh mengandung spasi, tanda minus, asteris atau garis miring.

Variable
                        Variabel merupakan sebuah interpretasi yang digunakan untuk menemukan
nilai dari sebuah klausa. Variabel harus diawali dengan huruf besar. Contoh :

- suka(andi,X) .
            X = eskrim
- anakperempuan(lila, X).
            X = agus

Variabel yang memiliki beberapa value kamu dapat memunculkan nilai lain dengan
menekan tombol (;)

Deskripsi Rekrusif dari Sebuah Hubungan
Nah ini yang gak kalah penting, Rekursif ini digunakan untuk mencari seluruh dari
child dari sebuah tree. Intinya, misalkan terdapat sebuah keluarga terdapat kakek,
ayah, dan anak. Maka untuk mendapatkan seluruh keturunan dari kakek, yaitu kakek,
ayah, anak, anaknya anak dan seterusnya kita membutuhkan rekursif.




Representasinya seperti berkut
turunan(X,Y) :- antiturunan(Y,X).
turunan(X,Y) :- antiturunan(Y,Z), turunan(X,Z).

Goal

Goal dalam turbo Prolog ada 2 macam yakni :
a. Goal eksternal
b. Goal internal

            Goal eksternal diketikkan langsung pada bagian ‘goal’ : di jendela dialog pada kompiler terpadu Turbo Prolog. dengan cara ini kita hanya bisa menjalankan program dari lingkungan kompiler Turbo Prolog. Untuk dapat dijalankan di lingkungan DOS kita harus menggunakan goal internal yang di simpan pada bagian Goal. Sebenarnya goal inilah yang dicari dan dipanggil pada saat program dijalankan. Jika goal tercapai, program berhenti dengan berhasil, tapi jika sebaliknya, program berhenti dalam keadaan gagal.
Contoh :
            Predicates
                        tulis(string)
            Goal
                        tulis(X),
                        write(X).
            Clauses
                        tulis(“Bandung”).
                        tulis(“Yogya”).
                        tulis(“Jakarta”).
Program ini pertama akan memanggil goalnya, yang terdiri dari sub goal tulis dan write. Ini artinya, goal akan memanggil klausa tulis. Di bagian clauses, terdapat tulis yang berupa fakta. Prolog akan mencarinya dari paling atas, diperoleh tulis(“Bandung”). Ini berarti sub-goal tulis(X) berhasil dengan X terikat dengan nilai “Bandung”. Selanjutnya Prolog membuktikan sub-goal kedua yakni write(X). Ini pasti berhasil dan program berhenti. Jika goal diajukan dari luar (dari jendela Goal, goal internalnya dibuang), kemudian kita tuliskan : tulis(X) [enter], akan tertulis pada layar :
            X = Bandung
            X = Yogya
            X = Jakarta

Bab 12.


12.1. Contoh program prolog



write(“Program Sederhana Prolog”),nl,nl,

write(“Masukkan nama : “), read(Nama),

write(Nama),nl,

write(“Masukkan kelas : “), read(_kelas),

write(_kelas),nl,nl,

write(“Menghitung Luas Persegi Panjang!”),nl,

write(“Masukkan panjang : “), read(P),

write(P),nl,

write(“Masukkan lebar : “), read(L),

write(L),nl,

LUAS is P*L,

write(“Luas Persegi Panjang = “),

write(LUAS).




SUMBER:
http://pipittahta.blogspot.co.id/2015/06/teori-dempster-shafer.html
http://ryanstiawanlagi.blogspot.co.id/2016/01/dasar-dasar-prolog-dan-struktur-prolog.html

Tidak ada komentar:

Posting Komentar