Definisi
Prolog kependekan dari Programming of Logic adalah bahasa pemrograman logika atau di sebut juga sebagai bahasa non-procedural. Namanya diambil dari bahasa Perancis yaitu programmation en logique (pemrograman logika). Bahasa ini diciptakan oleh Alain Colmerauer dan Robert Kowalski sekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman yang memungkinkan pernyataan logika.
Algoritma dari prolog terdiri dari logika dan kontrol, logika terdiri dari fakta dan peraturan sedangkan kontrol cara sebuah algoritma untuk diterapkan pada sebuah peraturan.
Fakta dan Peraturan (Facts and Rules)
Fakta adalah satu unit informasi yang selalu bernilai benar.
Peraturan merupakan suatu pernyataan yang mengungkap sebuah hubungan diantara fakta-fakta dengan implikasi logika :-.
Peraturan benar jika syarat terpenuhi.
Peraturan terdiri dari bagian syarat (badan klausa)
Kesimpulan merupakan (kepala klausa).
Kesimpulan akan memberikan nilai benar ketika syarat juga bernilai benar.
Definsi Fakta
lelaki(X) : X adalah lelaki
perempuan(X) : X adalah perempuan
ayah(Y,X) : Y adalah ayah dari X
ibu(Y,X) : Y adalah ibu dari X
kakek(Z,X) : Z adalah kakek dari X
Definisi Peraturan
saudarakandung(X,Y) :- ibu(M,X), bapak(F,X), ibu(M,Y), bapak(F,Y).
kakek(X,Y) :- bapak(X,S), ibu(S,Y) ; bapak(X,S), bapak(S,Y).
nenek(X,Y) :- ibu(X,S), ibu(S,Y) ; ibu(X,S), bapak(S,Y).
anaklelaki(X,Y,Z) : – bapak(Y,X), ibu(Z,X)
anakperempuan(X,Y,Z) :- bapak(Y,X), ibu(Z,X)
Sebagai contoh misalnya untuk mengetahui saudara kandung, kakek dan nenek sebagaimana pada fakta-fakta di atas.
Saudara Kandung
Saudara kandung di dapat jika terdapat hubungan bahwa dua orang memiliki bapak dan ibu yang sama, bentuk peraturan (rules) nya sebagai berikut
saudarakandung(X,Y) :- ibu(M,X), bapak(F,X), ibu(M,Y), bapak(F,Y),
dimana saudarakandung(X,Y) merupakan bagian kesimpulan (kepala) dan ibu(M,X), bapak(F,X), ibu(M,Y), bapak(F,Y) adalah bagian syarat(badan).
Silsilah Keluarga
Pada contoh di atas, bisa dilihat salah satu fakta mengatakan bahwa udin adalah bapak dari kurdi yang ditulis dalam klausa
bapak(udin, kurdi).
Prolog bisa digunakan untuk mencari kebenaran hubungan dari fakta-fakta di atas, pertama prolog digunakan untuk mengetahui hubungan antara bapak dengan anak, ibu dengan anak,
?- bapak(ucup, ocid).
akan menghasilkan nilai
true
yang menyatakan bahwa ada hubungan ucup sebagai bapak dari ocid.
Contoh lagi :
?-ibu(uneh, karta).
Yang berarti apakah uneh merupakan ibu dari karta, maka prolog akan memberi jawaban
false
mungkin kita tidak hanya ingin menguji kebenaran pernyataan dengan jawaban true atau false, tetapi mungkin pertanyaannya adalah siapa saja anak dari udin
misalnya, siapakah anak dari udin dari istri yang bernama uneh. Penulisan dalam prolog sebagai berikut :
?-ibu(uneh, X).
Prolog akan memberitahukan nilai X agar pernyataan tersebut benar
X = emeh;
Kemudian dengan mengetikkan (;) semicolon, akan ditampilkan jawaban berikutnya yaitu.
X = kurdi;
false
Jika kita berusaha untuk mengetikkan semicolon kembali, prolog akan memberikan nilai false, yang berarti jawaban tidak ditemukan lagi.
Hal lain yang bisa dilakukan adalah mengetahui semua fakta yang memiliki predikat bapak misalnya dengan mengetikkan
?-bapak(X,Y).
Prolog akan memberikan semua jawaban hubungan bapak antara X dan Y sebagai berikut :
X = udin,
Y = pengkuh;
X = udin,
Y = nonong;
… dan seterusnya
Kemudian jika kita menuliskan prolog sbb :
?-saudarakandung(romlah,ocid).
Prolog akan memberikan nilai true, karena bapak mereka adalah ucup dan ibu mereka adalah icih.
Sedangkan jika dituliskan pertanyaan
?-saudarakandung(nonong,emeh).
Prolog akan memberikan nilai false, keduanya memiliki bapak yang sama tetapi ibu mereka berbeda.
Berdasarkan hal tersebut juga, bisa diketahui siapa saja yang bersaudara kandung, misalnya kita ingin mengetahui dari fakta-fakta tersebut siapa saja saudara kandung dari pengkuh
?-saudarakandung(pengkuh,X).
Jawabannya :
X = nonong; <enter>
X = karta; <enter>
false
Begitu juga dengan hubungan kakek dan cucu, kakek adalah bapak dari bapak kandung atau bapak dari ibu kandung, sehingga peraturan tersebut ditulis sebagai berikut :
Kakek(X,Y) :- bapak(X,S), bapak(S, Y) ; bapak(X, T), ibu(T,Y).
Semicolon memiliki arti “atau”.
Contoh ?-kakek(X,bale).
Prolog akan memberikan jawaban
X = udin;
X = ucup.