Prolog

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.

Bagikan Melalui :

Post Author: Berandalan Jenius

Seorang Berandalan Jenius yang bercita-cita menjadi penulis dan membuat terkesan cewek yang ia sukai.