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 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)}
5. 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))
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 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.