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
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.
3.2 Operasi Aritmatika
Pernyataan aritmatika terdiri dari operand (bilangan
atau variable), operator dan tanda kurung (bila diperlukan).
Ada 6 buah
operator aritmatika, yaitu:
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://utari-21.blogspot.co.id/2012/09/algoritma-backtracking-runut-balik.html
No comments:
Post a Comment