Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma...
Click here to load reader
Transcript of Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma...
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013
Teori Bahasa dan Automata Semester Ganjil 2013
Jum’at, 06.12.2013
Dosen pengasuh: Kurnia Saputra ST, M.Sc
Email: [email protected]
Jurusan Informatika Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Syiah Kuala 1
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 2
Teori Bahasa dan Automata 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.
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 3
Teori Bahasa dan Automata 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
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 4
Teori Bahasa dan Automata Algoritma CYK
Kemungkinan 2 dapat digambarkan dengan skema sebagai berikut:
𝐴
𝐵 𝐵
𝑎1 …𝑎𝑘 𝑎𝑘+1 …𝑎𝑛
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 5
Teori Bahasa dan Automata 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 𝐴.
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 6
Teori Bahasa dan Automata 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.
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 7
Teori Bahasa dan Automata 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
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 8
Teori Bahasa dan Automata Algoritma CYK
𝑇𝑖,𝑗 adalah himpunan variabel dimana 𝑥𝑖,𝑗 bisa di-derivasi. 𝑇𝑖,𝑗 ditentukan dari himpunan 𝑇𝑖′,𝑗′ dan 𝑗′ < 𝑗, dimana: 𝑇𝑖,𝑗 = 𝐴 𝐴 ⟶ 𝐵𝐵 ∈ 𝑃 dan 𝑘 < 𝑗 dimana 𝐵 ∈ 𝑇𝑖,𝑘 dan 𝐵 ∈ 𝑇𝑖+𝑘,𝑗−𝑘}
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 9
Teori Bahasa dan Automata Algoritma CYK
𝑎1 𝑎2 . . . 𝑎𝑛−1 𝑎𝑛
𝑗 = 1
𝑗 = 2
𝑗 = 𝑛 − 1
𝑗 = 𝑛
𝑇1,1 𝑇2,1 . . . . . . 𝑇𝑛−1,1 𝑇𝑛,1
𝑇𝑛−1,2 𝑇1,2 𝑇2,2 . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
𝑇1,𝑛−1 𝑇2,𝑛−1
𝑇1,𝑛
Eksekusi algoritma: Masukkan himpunan variabel 𝑇𝑖,𝑗 ke tabel:
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 10
Teori Bahasa dan Automata Algoritma CYK
𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6
𝑗 = 1
𝑗 = 2
𝑗 = 3
𝑗 = 4
𝑗 = 5
𝑗 = 6
𝑇1,1 𝑇2,1 𝑇3,1 𝑇4,1 𝑇5,1 𝑇6,1
𝑇1,2 𝑇3,2 𝑇4,2 𝑇5,2
𝑇1,3 𝑇2,3 𝑇3,3 𝑇4,3
𝑇2,2
𝑇1,4 𝑇2,4 𝑇3,4
𝑇1,5 𝑇2,5
𝑇1,6
Variabel akan derivasi subword sebagai berikut:
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 11
Teori Bahasa dan Automata Algoritma CYK
𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6
𝑗 = 1
𝑗 = 2
𝑗 = 3
𝑗 = 4
𝑗 = 5
𝑗 = 6
𝑇6,1
𝑇1,5
𝑇1,6
𝑥 = 𝑎1𝑎2𝑎3𝑎4𝑎5 | 𝑎6 𝐴 ⟶ 𝐵𝐵 ∈ 𝑃, 𝐵 ∈ 𝑇1,5, 𝐵 ∈ 𝑇6,1 ⇒ 𝐴 ∈ 𝑇1,6
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 12
Teori Bahasa dan Automata Algoritma CYK
𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6
𝑇5,2
𝑇1,4
𝑇1,6
𝑥 = 𝑎1𝑎2𝑎3𝑎4 | 𝑎5𝑎6 𝐴 ⟶ 𝐵𝐵 ∈ 𝑃, 𝐵 ∈ 𝑇1,4, 𝐵 ∈ 𝑇5,2
𝑗 = 1
𝑗 = 2
𝑗 = 3
𝑗 = 4
𝑗 = 5
𝑗 = 6
⇒ 𝐴 ∈ 𝑇1,6
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 13
Teori Bahasa dan Automata Algoritma CYK
𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6
𝑇4,3 𝑇1,3
𝑇1,6
𝑥 = 𝑎1𝑎2𝑎3 | 𝑎4𝑎5𝑎6 𝐴 ⟶ 𝐵𝐵 ∈ 𝑃, 𝐵 ∈ 𝑇1,3, 𝐵 ∈ 𝑇4,3
𝑗 = 1
𝑗 = 2
𝑗 = 3
𝑗 = 4
𝑗 = 5
𝑗 = 6
⇒ 𝐴 ∈ 𝑇1,6
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 14
Teori Bahasa dan Automata Algoritma CYK
𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6
𝑇3,4
𝑇1,2
𝑇1,6
𝑥 = 𝑎1𝑎2 | 𝑎3𝑎4𝑎5𝑎6 𝐴 ⟶ 𝐵𝐵 ∈ 𝑃, 𝐵 ∈ 𝑇1,2, 𝐵 ∈ 𝑇3,4
𝑗 = 1
𝑗 = 2
𝑗 = 3
𝑗 = 4
𝑗 = 5
𝑗 = 6
⇒ 𝐴 ∈ 𝑇1,6
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 15
Teori Bahasa dan Automata Algoritma CYK
𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6
𝑇2,5
𝑇1,1
𝑇1,6
𝑥 = 𝑎1 | 𝑎2𝑎3𝑎4𝑎5𝑎6 𝐴 ⟶ 𝐵𝐵 ∈ 𝑃, 𝐵 ∈ 𝑇1,1, 𝐵 ∈ 𝑇2,5
𝑗 = 1
𝑗 = 2
𝑗 = 3
𝑗 = 4
𝑗 = 5
𝑗 = 6
⇒ 𝐴 ∈ 𝑇1,6
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 16
Teori Bahasa dan Automata 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
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 17
Teori Bahasa dan Automata Algoritma CYK
Contoh 1: Diketahui grammar context free dengan production sebagai berikut: 𝑆 ⟶ 𝐴𝐴 | 𝐹𝐺
𝐴 ⟶ 𝑆𝑆 | 𝐵𝐵
𝑆 ⟶ 𝐵𝐵
𝐹 ⟶ 𝐴𝐹 | 𝑎
𝐺 ⟶ 𝐵𝐺 𝐵𝐺 𝑏
𝐻 ⟶ 𝑆𝐵
𝐴 ⟶ 𝑎
𝐵 ⟶ 𝑏
𝐵 ⟶ 𝑐
Pertanyaan: Diketahui 𝑥 = 𝑎𝑎𝑏𝑐𝑏𝑐. Apakah word 𝑥 ∈ 𝐿?
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 18
Teori Bahasa dan Automata Algoritma CYK
Contoh 2: Diketahui grammar context free dengan production sebagai berikut: 𝑆 ⟶ 𝐴𝐵
𝐴 ⟶ 𝑎𝑏 | 𝑎𝐴𝑏 𝐵 ⟶ 𝑐 | 𝑐𝐵
Pertanyaan: Diketahui 𝑥 = 𝑎𝑎𝑎𝑏𝑏𝑏𝑐𝑐. Apakah word 𝑥 ∈ 𝐿?
Algoritma CYK
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 19
Teori Bahasa dan Automata 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.
Referensi
FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 20
Teori Bahasa dan Automata 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)