Anda di halaman 1dari 20

Algoritma CYK

Teori Bahasa dan Automata


Semester Ganjil 2013
Jum’at, 06.12.2013

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 dikembangkan oleh John Cocke, Daniel


Younger, dan Tadao Kasami.

Untuk dapat menggunakan algoritma ini dibutuhkan


grammar context free 𝐺 dalam bentuk Chomsky normal
form, dimana word 𝑤 adalah sebagai input, dan
outputnya adalah sebuah pembuktian apakah word 𝑤
merupakan bahasa dari grammar 𝐺 atau bukan.
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 2
Teori Bahasa dan Automata Algoritma CYK

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 ≤ 𝑘 < 𝑛).

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 3


Teori Bahasa dan Automata Algoritma CYK

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.

Maka: Kita harus mencoba semua kemungkinan 𝑘.


Jika diketahui 𝑥 = 𝑎1 … 𝑎𝑛 , dimana 1 < 𝑘 < 𝑛 lakukan langkah
berikut:
• Cek apakah himpunan variabel 𝑉1 dapat derivasi 𝑎1 … 𝑎𝑘 .
• Cek apakah himpunan variabel 𝑉2 dapat derivasi 𝑎𝑘+1 … 𝑎𝑛 .
• Cek apakah variabel 𝐴, 𝐵, 𝐶 dimana (𝐴 ⟶ 𝐵𝐵) ∈ 𝑃, 𝐵 ∈ 𝑉1 dan
𝐶 ∈ 𝑉2 . Dan 𝑥 untuk kasus ini di-derivasi dari 𝐴.

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 5


Teori Bahasa dan Automata Algoritma CYK

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,𝑛−𝑘

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 7


Teori Bahasa dan Automata Algoritma CYK

Algoritma CYK

𝑇𝑖,𝑗 adalah himpunan variabel dimana 𝑥𝑖,𝑗 bisa di-derivasi.

𝑇𝑖,𝑗 ditentukan dari himpunan 𝑇𝑖 ′,𝑗 ′ dan 𝑗 ′ < 𝑗, dimana:

𝑇𝑖,𝑗 = 𝐴 𝐴 ⟶ 𝐵𝐵 ∈ 𝑃 dan 𝑘 < 𝑗 dimana 𝐵 ∈ 𝑇𝑖,𝑘 dan


𝐶 ∈ 𝑇𝑖+𝑘,𝑗−𝑘 }

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 8


Teori Bahasa dan Automata Algoritma CYK

Algoritma CYK
Eksekusi algoritma:
Masukkan himpunan variabel 𝑇𝑖,𝑗 ke tabel:

𝑎1 𝑎2 ... 𝑎𝑛−1 𝑎𝑛

𝑗=1 𝑇1,1 𝑇2,1 ... ... 𝑇𝑛−1,1 𝑇𝑛,1

𝑗=2 𝑇1,2 𝑇2,2 ... ... 𝑇𝑛−1,2

... ... ... ...


...
... ... ...

𝑗 = 𝑛 − 1 𝑇1,𝑛−1 𝑇2,𝑛−1

𝑗=𝑛 𝑇1,𝑛

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 9


Teori Bahasa dan Automata Algoritma CYK

Algoritma CYK
Variabel akan derivasi subword sebagai berikut:

𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6

𝑗=1 𝑇1,1 𝑇2,1 𝑇3,1 𝑇4,1 𝑇5,1 𝑇6,1

𝑗=2 𝑇1,2 𝑇2,2 𝑇3,2 𝑇4,2 𝑇5,2

𝑗=3 𝑇1,3 𝑇2,3 𝑇3,3 𝑇4,3

𝑗=4 𝑇1,4 𝑇2,4 𝑇3,4

𝑗=5 𝑇1,5 𝑇2,5

𝑗=6 𝑇1,6

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 10


Teori Bahasa dan Automata Algoritma CYK

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

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 11


Teori Bahasa dan Automata Algoritma CYK

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

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 12


Teori Bahasa dan Automata Algoritma CYK

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

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 13


Teori Bahasa dan Automata Algoritma CYK

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

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 14


Teori Bahasa dan Automata Algoritma CYK

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

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 15


Teori Bahasa dan Automata Algoritma CYK

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:
𝑆 ⟶ 𝐴𝐴 | 𝐹𝐹
𝐷 ⟶ 𝑆𝑆 | 𝐵𝐵
𝐸 ⟶ 𝐵𝐵
𝐹 ⟶ 𝐴𝐴 | 𝑎
𝐺 ⟶ 𝐵𝐵 𝐶𝐶 𝑏
𝐻 ⟶ 𝑆𝑆
𝐴⟶𝑎
𝐵⟶𝑏
𝐶⟶𝑐

Pertanyaan: Diketahui 𝑥 = 𝑎𝑎𝑎𝑎𝑎𝑎. Apakah word 𝑥 ∈ 𝐿?


FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 17
Teori Bahasa dan Automata Algoritma CYK

Algoritma CYK
Contoh 2: Diketahui grammar context free dengan
production sebagai berikut:
𝑆 ⟶ 𝐴𝐴
𝐴 ⟶ 𝑎𝑎 | 𝑎𝑎𝑎
𝐵 ⟶ 𝑐 | 𝑐𝑐

Pertanyaan: Diketahui 𝑥 = 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎. Apakah word 𝑥 ∈ 𝐿?

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 18


Teori Bahasa dan Automata Algoritma CYK

Algoritma CYK
Algoritma CYK adalah salah satu algoritma yang paling
efisien yang dapat diterapkan pada grammar context free.

Pada prakteknya, algoritma ini akan lambat jika di parsing,


contohnya pada bahasa pemrograman Java yang panjang.

Ada prosedur yang lebih efisien, namun hanya bisa


digunakan pada sub-kelas bahasa context free. Pada
prakteknya algoritma yang lebih sering digunakan adalah
recursive decent parser dan LR(k)-parser.

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 19


Teori Bahasa dan Automata Referensi

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 Schöning: Theoretische Informatik – kurzgefaßt. Spektrum,
2008. (5. Auflage)

FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 20