Friday, January 15, 2016

Pasangan Pola


1.  Unifikasi dan Runut Balik

1.1  Unifikasi
Unifikasi adalah proses yang dilakukan oleh prolog untuk mencari padanan antara pernyataan yang terdapat pada aturan dengan fakta atau kepala aturan yang lain.

            Syarat terjadinya unifikasi adalah:
§  Mempunyai relasi yang sama
§  Mempunyai jumlah argumen yang sama dan posisi argumen yang sama pula
§  Argumen yang berpadanan harus mempunyai jenis data yang sama
§  Semua pasangan argumen (pada data majemuk) harus juga berpadanan



1.2  Proses Pencarian Jawaban

GOAL : kakek(Kakek,budi).

Kakek(Kakek,budi) – kakek(Kakek,Cucu)

ayah(Ayah,Cucu) – ayah(Ayah,budi)

ayah(Ayah,budi) – ayah(amin,budi)

ayah(Kakek,Ayah) – ayah(Kakek,amin)

ayah(Kakek,amin) – ayah(slamet,amin)

kakek(Kakek,budi) – kakek(slamet,budi)

Kakek = slamet



1.3  Predikat Not
Predikat Not digunakan untuk menyatakan lawan logika dari suatu pernyataan. Predikat ini  tidak dapat berdiri sendiri juga tidak dapat dipasangkan pada fakta atau kepala suatu aturan, tetapi hanya dapat dipasangkan pada bagian suatu aturan

Contoh : menyatakan saudara sepupu
Saudara_sepupu(Sdr1,Sdr2) :- kakek(Kakek,Sdr1), kakek(Kakek,Sdr2), not(saudara_kandung(Sdr1,Sdr2)), Sdr1 <> Sdr2.


2.     Predikat Input dan Output

2.1 Write
Write digunakan untuk menuliskan konstanta atau isi variabel ke piranti keluaran yang dikenali pada saat itu.

write(E1,E2,E3,…,En) – (i,i,i,…,i). E1,E2,E3,…En adalah konstanta (karakter atau string) atau variable

Contoh :
Tes :- Write(“Saya sedang belajar Turbo Prolog.”), write(“Teman saya belajar Basic”)
Output :
Saya sedang belajar Turbo Prolog.Teman saya belajar Basic

2.2 Writef
Writef mempunyai fungsi yang hampir sama dengan predikat write, hanya hasilnya mempunyai format seperti yang diinginkan.

writef(format,E1,E2,…,En) – (i,i,…,i)

Macam-macam format :
f : format bilangan real dalam notasi desimal
e : format bilangan real dalam notasi eksponensial
d : format karakter atau bilangan bulat dalam desimal
c : format karakter atau bilangan bulat sebagai karakter


2.3 Writedevice
Writedevice digunakan untuk mengubah atau mendapatkan informasi tentang piranti keluaran yang dikenali oleh program pada saat itu.
writedevice(VarPiranti) – (i), (o)

Macam-macam piranti keluaran :
         Screen
         Printer
         Com1
         Tdout
         Stderr

2.4 Readln
     Digunakan untuk membaca sederetan karakter dari piranti masukan sampai ditemukan tanda carriage return (ASCII 13). Karakter yang dibaca akan ditampilkan di layar monitor.
2.5 Readchar
Digunakan untuk membaca karakter tunggal dari piranti masukan (tanpa perlu enter). Berbeda dengan readln, untuk readchar karakter yang dibaca tidak ditampilkan di layar monitor.
2.6 Readint
Readint digunakan untuk membaca bilangan bulat sampai tombol Enter. Akan gagal apabila bilangan bulat yang dibaca tidak sesuai dengan yang sudah didefinisikan.
2.7 Readreal
Digunakan untuk membaca bilangan real sampai tombol Enter.
2.8 Readdevice
Digunakan untuk mengubah atau meminta informasi tentang piranti masukan yang saat itu dikenal







3.     Perbandingan Operator

3.1  Perbandingan
Operator perbandingan berfungsi untuk membandingkan nilai suatu variable terkat atau suatu objek. Variable atau objek yang dibandingkan disebut operand. Kedua operand yang dibandingkan haruslah sudah terikat dengan nilai tertentu (baik variable maupun objek), kecuali operator sama dengan.

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNNBHF6Y8qfcA1QJu7WS64w0cj4aWg899QOiQtx67TxANMDGUzIDVhiwfYTH6hRxrKtBli7joZb7ELqJzVIRRB1nsDuCsInbdVEZaxhw1UUJfy1Fz2QZLHSLpwRv4L4uf9ET8w_j_b9Bkq/s1600/operator+perbandingan.png

3.2  Operasi Aritmatika
Pernyataan aritmatika terdiri dari operand (bilangan atau variable), operator dan tanda kurung (bila diperlukan).

Ada 6 buah operator aritmatika, yaitu:

Description: https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqXCqj_6ude9v9xxMOLGTE7F7zgm2WspmIZod0wuh7ueHJcVQli5UvM0o4GcaveYPJStqZIGJEuk12AEwdBfvcqFhShruBFLdIIMvjUvSZe_lL6I2JAKS0vsJwxxqufqs2E7xR7Ow3EV6v/s1600/operator+aritmatika.png

3.3  Fungsi Aritmatika
Disamping mempunyai kemampuan dalam perhitungan aritmatika, Prolog juga dilengkapi dengan predikat jadi yang merupakan fungsi matematika (fungsi aljabar, trigonometri, logaritma).

4.     Runut Balik
Algoritma runut balik pertama kali diperkenalkan oleh D.H. Lehmer pada tahun 1950. Algoritma ini cukup praktis untuk digunakan dalam beberapa penyelesaian masalah dan juga untuk memberikan kecerdasaan buatan dalam game. Beberapa game populer seperti: Sudoku, Labirin, Catur juga bisa diimplementasikan dengan menggunakan algoritma runut balik. Algoritma runut balik (back tracking) merupakan algoritma yang digunakan untuk mencari solusi persoalan secara lebih praktis daripada menggunakan algoritma brute force. Algoritma ini akan mencari solusi berdasarkan ruang solusi yang ada secara sistematis namun tidak semua ruang solusi akan diperiksa, hanya pencarian yang mengarah kepada solusi yang akan diproses.

Algoritma Runut Balik berbasis pada DFS (Depth First Search) sehingga aturan pencariannya akan mengikut kepada aturan pencarian DFS yaitu dengan mencari solusi dari akar ke daun (dalam pohon ruang solusi) dengan pencarian kedalam. Simpul-simpul yang sudah dilahirkan (diperiksa) dinamakan sipmup hidup (live node). Simpul hidup yang sedang diperluas dinamakan simpul-E atau Expand Node.

Algoritma runut balik memiliki property umum yaitu :
1)    Solusi persoalan
 Solusi dinyatakan sebagai vektor dengan n-tuple:
X = (x1, x2, …, xn), xi Si .
Mungkin saja S1 = S2 = … = Sn.
Contoh: Si = {0, 1}, xi = 0 atau 1
2)  Fungsi pembangkit nilai xk
Dinyatakan sebagai:
T(k)
T(k) membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi.
3)   Fungsi pembatas (pada beberapa persoalan fungsi ini dinamakan fungsi kriteria)
Dinyatakan sebagai B(x1, x2, …, xk)
B bernilai true jika (x1, x2, …, xk) mengarah ke solusi.
Jika true, maka pembangkitan nilai untuk xk+1 dilanjutkan, tetapi jika
false, maka (x1, x2, …, xk) dibuang dan tidak dipertimbangkan lagi
dalam pencarian solusi.
Solusi persoalan adalah kemungkinan solusi yang didapatkan dari permasalahan yang diberikan, sedangakan fungsi pembatas merupakan fungsi yang akan menentukan langkah selanjutnya berupa penerusan pencarian solusi ataupun melakukan backtrack.

























Daftar Pustaka

http://ayu_ws.staff.gunadarma.ac.id/

http://kuliah-oti.blogspot.co.id/2015/11/perbandingan-dan-operasi-aritmatika.html
            http://muhaynatsir.blogspot.co.id/

            http://utari-21.blogspot.co.id/2012/09/algoritma-backtracking-runut-balik.html

No comments:

Post a Comment