Dosen pengasuh:
Kurnia Saputra ST, M.Sc
Email: kurnia.saputra@gmail.com
Jurusan Informatika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Syiah Kuala
FMIPA Informatika Universitas Syiah Kuala Semester Ganjil 2013 1
Teori Bahasa dan Automata Algoritma CYK
Algoritma CYK
Algoritma CYK adalah sebuah algoritma yang digunakan
untuk membuktikan apakah sebuah word di-generate
oleh grammar context free atau tidak.
Algoritma CYK
Konsep: Diketahui word . Kita ingin mengetahui
dari variabel apa saja word tersebut dapat di-derivasi.
Kemungkinan 1: = , dimana terdiri dari
simbol alphabet tunggal. Kemudian hanya bisa di-
derivasi dari variabel dimana terdapat .
Kemungkinan 2: = 1 dimana 2. Pada
kasus ini production harus dipilih terlebih
dahulu, dimana ada satu bagian dari word 1
harus di-derivasi dari dan satu bagian lagi dari
word +1 di-derivasi dari (1 < ).
Algoritma CYK
Kemungkinan 2 dapat digambarkan dengan skema
sebagai berikut:
1 +1
FMIPA Informatika Universitas Syiah Kuala Semester Ganjil 2013 4
Teori Bahasa dan Automata Algoritma CYK
Algoritma CYK
Tapi masih belum begitu jelas bagaimana cara memisahkannya word
karena index sangat besar.
Algoritma CYK
Untuk menghindari duplikasi, aplikasikan metode
dynamic programming, artinya:
Tentukan dahulu semua variabel yang bisa
derivasi subword dengan panjang 1.
Kemudian tentukan variabel yang bisa derivasi
subword dengan panjang 2.
Terakhir, tentukan semua variabel dimana bisa
di-derivasi. Jika simbol start berada diantara
variabel, maka adalah bahasa dari grammar
tersebut.
FMIPA Informatika Universitas Syiah Kuala Semester Ganjil 2013 6
Teori Bahasa dan Automata Algoritma CYK
Algoritma CYK
Notasi: , menunjukkan bahwa subword berada pada
lokasi dan memiliki panjang .
= 1 , = +1
Dengan notasi tersebut, maka pohon variabel menjadi:
1, +1,
Algoritma CYK
Algoritma CYK
Eksekusi algoritma:
Masukkan himpunan variabel , ke tabel:
1 2 ... 1
= 1 1,1 2,1
= 1,
Algoritma CYK
Variabel akan derivasi subword sebagai berikut:
1 2 3 4 5 6
=5 1,5 2,5
=6 1,6
Algoritma CYK
1 2 3 4 5 6
=1 6,1
=2 = 1 2 3 4 5 | 6
=3 ,
=4 1,5 , 6,1 1,6
=5 1,5
=6 1,6
Algoritma CYK
1 2 3 4 5 6
=1
=2 5,2 = 1 2 3 4 | 5 6
=3 ,
=4 1,4 1,4 , 5,2 1,6
=5
=6 1,6
Algoritma CYK
1 2 3 4 5 6
=1
=2 = 1 2 3 | 4 5 6
=3 1,3 4,3 ,
=4 1,3 , 4,3 1,6
=5
=6 1,6
Algoritma CYK
1 2 3 4 5 6
=1
=2 1,2 = 1 2 | 3 4 5 6
=3 ,
=4 3,4 1,2 , 3,4 1,6
=5
=6 1,6
Algoritma CYK
1 2 3 4 5 6
=1 1,1
=2 = 1 | 2 3 4 5 6
=3 ,
=4 1,1 , 2,5 1,6
=5 2,5
=6 1,6
Algoritma CYK
input = (, , , ),
||
for {1, , } do
,1 { | ,1 }
end
for {2, , } do
for {1, , + 1} do
,
for {1, , 1} do
, ,
{ | dimana , , +, }
end
end
end
if 1, then
return true
else
return false
FMIPA Informatika Universitas Syiah Kuala Semester Ganjil 2013 16
Teori Bahasa dan Automata Algoritma CYK
Algoritma CYK
Contoh 1: Diketahui grammar context free dengan
production sebagai berikut:
|
|
|
Algoritma CYK
Contoh 2: Diketahui grammar context free dengan
production sebagai berikut:
|
|
Algoritma CYK
Algoritma CYK adalah salah satu algoritma yang paling
efisien yang dapat diterapkan pada grammar context free.
Referensi
1. Hopcroft, Motwani, Ullman: Introduction to Automata Theory,
Languages, and Computation. Addison-Wesley, 2001
2. James A. Anderson: Automata Theory with Modern Applications,
Cambridge University Press, 2006.
3. Uwe Schning: Theoretische Informatik kurzgefat. Spektrum,
2008. (5. Auflage)