Unifikasi Robinson: Pendahuluan



      Diberikan dua buah formula logika predikat, ingin diketahui apakah
      kedua formula tersebut dapat diunifikasi atau tidak.
      Jika dapat diunifikasi, artinya kedua formula yang tampaknya
      berbeda secara sintaks, sesungguhnya sama satu sama lain.
      Jika dapat diunifikasi, maka salah satu formula dapat diubah
      menjadi bentuk yang sama secara sintaks ke menjadi bentuk formula
      lainnya melalui most general unifier (mgu).
      Salah satu metode untuk memeriksa apakah sepasang formula
      predikat dapat diunifikasi adalah Algoritma Unifikasi Robinson
      (Robinson’s Unification Algorithm).
Algoritma Unifikasi Robinson

      Algoritma unifikasi Robinson bekerja dengan membaca kedua
      formula dari kiri ke kanan sampai habis. Jika proses pembacaan
      menemukan disagreement set yang tidak dapat diunifikasi, maka
      kedua formula awal yang diberikan tidak dapat diunifikasi, atau
      dikatakan fail to unify. Jika proses pembacaan berhasil membaca
      kedua formula hingga selesai, maka artinya kedua formula awal yang
      diberikan dapat diunifikasi. Jika kedua formula dapat diunifikasi,
      maka algoritma unifikasi Robinson juga akan menghasilkan mgu.
      Dalam setiap langkah mencari unifikasi dari kedua formula predikat,
      algoritma unifikasi Robinson membangun disagreement set, yang
      menampung simbol-simbol yang ditemukan berbeda dari kedua
      formula tersebut. Berikut ini diberikan dua buah contoh sederhana
      yang dapat digunakan untuk menggambarkan proses yang terjadi
      ketika algoritma unifikasi Robinson diterapkan. Sebelum membahas
      kedua contoh, perlu diketahui bahwa algoritma unifikasi ini diusulkan
      oleh John Alan Robinson pada tahun 1965.
Contoh 1
  Diberikan dua formula predikat:

                            A0 : p(a; x; f (g (y )))
  dan
                            B0 : p(y ; f (z); f (z))
  Baca kedua formula tersebut mulai dari kiri ke kanan. Ketika membaca
  simbol predikat p, proses pembacaan tidak mengalami masalah, demikian
  juga ketika membaca tanda kurung buka. Perbedaan muncul ketika pada
  formula pertama dibaca simbol konstanta a sedangkan dari formula
  kedua dibaca simbol variabel y . Dari perbedaan ini dibentuk sebuah
  disagreement set

                                    {a, y }
  Dari disagreement set ini, bangun sebuah unifikator

                                σ1 : [y ← a]
Ketika sebuah unifikator dibentuk dari disagreement set, unifikator
tersebut langsung diterapkan kepada kedua formula predikat. Jika
unifikator σ1 ini langsung diterapkan kepada kedua formula predikat,
semua kemunculan variabel y diganti dengan konstanta a, sehingga
didapatkan sebuah pasangan formula predikat yang baru setelah
dilakukan unifikasi:

                          A1 : p(a; x; f (g (a)))
dan
                          B1 : p(a; f (z); f (z))
Perhatikan bahwa variabel y pada kedua formula diubah menjadi
konstanta a.
Dari pasangan formula predikat yang baru didapatkan dalam iterasi kedua
ini, proses pembacaan dilanjutkan. Proses pembacaan kedua formula
predikat langsung mendapatkan sebuah disagreement set yang lain yaitu:

                                {x, f (z)}
Dari diasgreement set ini dibentuk sebuah unifikator baru:

                            σ2 : [x ← f (z)]
dan unifikator ini pun langsung diterapkan kepada kedua formula predikat
dari iterasi ini sehingga didapatkan sebuah pasangan formula predikat
ketiga:

                        A2 : p(a; f (z); f (g (a)))
dan
                          B2 : p(a; f (z); f (z))
Dalam iterasi berikutnya, proses pembacaan dilanjutkan kepada kedua
formula predikat sehingga didapatkan sebuah disagreement set ketiga
yaitu:

                                {g (a), z}
yang membentuk unifikator ketiga:

                            σ3 : [z ← g (a)]
untuk digunakan membentuk pasangan formula:

                      A3 : p(a; f (g (a)); f (g (a)))
dan
                      B3 : p(a; f (g (a)); f (g (a)))
Perhatikan bahwa variabel z pada kedua formula juga ikut diubah.
Pada akhir iterasi ketiga ini didapatkan bahwa kedua formula tersebut
ternyata serupa. Artinya, pasangan formula yang diberikan di awal dapat
diunifikasi, dengan menggunakan mgu yang dibentuk dari unifikator σ1 ,
σ2 , dan σ3 :

              σ = σ1 σ2 σ3 = [y ← a, x ← f (z), z ← g (a)]
Contoh 2


  Diberikan dua formula predikat:

                          A0 : p(x; g (f (a)); f (x))
  dan
                             B0 : p(f (y ); z; y )
  Seperti pada contoh sebelumnya, proses pembacaan diterapkan kepada
  kedua formula. Disagreement set pertama yang didapatkan adalah

                                    {x, f (y )}
  untuk membentuk unifikator:

                              σ1 : [x ← f (y )]
Pada iterasi kedua, proses pembacaan dilanjutkan kpeada pasangan
formula yang baru:

                    A1 : p(f (y ); g (f (a)); f (f (y )))
dan
                           B1 : p(f (y ); z; y )
Disagreement set kedua adalah

                              {g (f (a)), z}
yang membentuk unifikator kedua:

                           σ2 : [z ← g (f (a))]
Unifikator ini digunakan untuk membentuk pasangan formula berikutnya:

                    A2 : p(f (y ); g (f (a)); f (f (y )))
dan
                       B2 : p(f (y ); g (f (a)); y )
Pasangan formula ini membentuk disagreement set

                             {f (f (y )), y }
Jika dibentuk sebuah unifikator, akan didapatkan

                          σ3 : [y ← f (f (y ))]
Unifikator ini tidak dapat digunakan untuk me-unifikasi kedua formula
yang diberikan, karena secara rekursif setiap kemunculan variabel y akan
berulang digantikan oleh simbol fungsi f . Artinya, pada contoh ini,
unifikator σ3 bukanlah unifikator, dan ini berarti bahwa pasangan formula
awal yang diberikan tidak dapat diunifikasi.
Proses unifikasi pada contoh ini gagal, atau fail.

ikp213-unifikasi

  • 1.
    Unifikasi Robinson: Pendahuluan Diberikan dua buah formula logika predikat, ingin diketahui apakah kedua formula tersebut dapat diunifikasi atau tidak. Jika dapat diunifikasi, artinya kedua formula yang tampaknya berbeda secara sintaks, sesungguhnya sama satu sama lain. Jika dapat diunifikasi, maka salah satu formula dapat diubah menjadi bentuk yang sama secara sintaks ke menjadi bentuk formula lainnya melalui most general unifier (mgu). Salah satu metode untuk memeriksa apakah sepasang formula predikat dapat diunifikasi adalah Algoritma Unifikasi Robinson (Robinson’s Unification Algorithm).
  • 2.
    Algoritma Unifikasi Robinson Algoritma unifikasi Robinson bekerja dengan membaca kedua formula dari kiri ke kanan sampai habis. Jika proses pembacaan menemukan disagreement set yang tidak dapat diunifikasi, maka kedua formula awal yang diberikan tidak dapat diunifikasi, atau dikatakan fail to unify. Jika proses pembacaan berhasil membaca kedua formula hingga selesai, maka artinya kedua formula awal yang diberikan dapat diunifikasi. Jika kedua formula dapat diunifikasi, maka algoritma unifikasi Robinson juga akan menghasilkan mgu. Dalam setiap langkah mencari unifikasi dari kedua formula predikat, algoritma unifikasi Robinson membangun disagreement set, yang menampung simbol-simbol yang ditemukan berbeda dari kedua formula tersebut. Berikut ini diberikan dua buah contoh sederhana yang dapat digunakan untuk menggambarkan proses yang terjadi ketika algoritma unifikasi Robinson diterapkan. Sebelum membahas kedua contoh, perlu diketahui bahwa algoritma unifikasi ini diusulkan oleh John Alan Robinson pada tahun 1965.
  • 3.
    Contoh 1 Diberikan dua formula predikat: A0 : p(a; x; f (g (y ))) dan B0 : p(y ; f (z); f (z)) Baca kedua formula tersebut mulai dari kiri ke kanan. Ketika membaca simbol predikat p, proses pembacaan tidak mengalami masalah, demikian juga ketika membaca tanda kurung buka. Perbedaan muncul ketika pada formula pertama dibaca simbol konstanta a sedangkan dari formula kedua dibaca simbol variabel y . Dari perbedaan ini dibentuk sebuah disagreement set {a, y } Dari disagreement set ini, bangun sebuah unifikator σ1 : [y ← a]
  • 4.
    Ketika sebuah unifikatordibentuk dari disagreement set, unifikator tersebut langsung diterapkan kepada kedua formula predikat. Jika unifikator σ1 ini langsung diterapkan kepada kedua formula predikat, semua kemunculan variabel y diganti dengan konstanta a, sehingga didapatkan sebuah pasangan formula predikat yang baru setelah dilakukan unifikasi: A1 : p(a; x; f (g (a))) dan B1 : p(a; f (z); f (z)) Perhatikan bahwa variabel y pada kedua formula diubah menjadi konstanta a. Dari pasangan formula predikat yang baru didapatkan dalam iterasi kedua ini, proses pembacaan dilanjutkan. Proses pembacaan kedua formula predikat langsung mendapatkan sebuah disagreement set yang lain yaitu: {x, f (z)}
  • 5.
    Dari diasgreement setini dibentuk sebuah unifikator baru: σ2 : [x ← f (z)] dan unifikator ini pun langsung diterapkan kepada kedua formula predikat dari iterasi ini sehingga didapatkan sebuah pasangan formula predikat ketiga: A2 : p(a; f (z); f (g (a))) dan B2 : p(a; f (z); f (z))
  • 6.
    Dalam iterasi berikutnya,proses pembacaan dilanjutkan kepada kedua formula predikat sehingga didapatkan sebuah disagreement set ketiga yaitu: {g (a), z} yang membentuk unifikator ketiga: σ3 : [z ← g (a)] untuk digunakan membentuk pasangan formula: A3 : p(a; f (g (a)); f (g (a))) dan B3 : p(a; f (g (a)); f (g (a))) Perhatikan bahwa variabel z pada kedua formula juga ikut diubah. Pada akhir iterasi ketiga ini didapatkan bahwa kedua formula tersebut ternyata serupa. Artinya, pasangan formula yang diberikan di awal dapat diunifikasi, dengan menggunakan mgu yang dibentuk dari unifikator σ1 , σ2 , dan σ3 : σ = σ1 σ2 σ3 = [y ← a, x ← f (z), z ← g (a)]
  • 7.
    Contoh 2 Diberikan dua formula predikat: A0 : p(x; g (f (a)); f (x)) dan B0 : p(f (y ); z; y ) Seperti pada contoh sebelumnya, proses pembacaan diterapkan kepada kedua formula. Disagreement set pertama yang didapatkan adalah {x, f (y )} untuk membentuk unifikator: σ1 : [x ← f (y )]
  • 8.
    Pada iterasi kedua,proses pembacaan dilanjutkan kpeada pasangan formula yang baru: A1 : p(f (y ); g (f (a)); f (f (y ))) dan B1 : p(f (y ); z; y ) Disagreement set kedua adalah {g (f (a)), z} yang membentuk unifikator kedua: σ2 : [z ← g (f (a))] Unifikator ini digunakan untuk membentuk pasangan formula berikutnya: A2 : p(f (y ); g (f (a)); f (f (y ))) dan B2 : p(f (y ); g (f (a)); y )
  • 9.
    Pasangan formula inimembentuk disagreement set {f (f (y )), y } Jika dibentuk sebuah unifikator, akan didapatkan σ3 : [y ← f (f (y ))] Unifikator ini tidak dapat digunakan untuk me-unifikasi kedua formula yang diberikan, karena secara rekursif setiap kemunculan variabel y akan berulang digantikan oleh simbol fungsi f . Artinya, pada contoh ini, unifikator σ3 bukanlah unifikator, dan ini berarti bahwa pasangan formula awal yang diberikan tidak dapat diunifikasi. Proses unifikasi pada contoh ini gagal, atau fail.