Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma...

20

Click here to load reader

Transcript of Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma...

Page 1: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 2: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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.

Page 3: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 4: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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 …𝑎𝑛

Page 5: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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 𝐴.

Page 6: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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.

Page 7: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 8: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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 𝐵 ∈ 𝑇𝑖+𝑘,𝑗−𝑘}

Page 9: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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:

Page 10: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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:

Page 11: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 12: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 13: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 14: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 15: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 16: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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

Page 17: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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 𝑥 ∈ 𝐿?

Page 18: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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 𝑥 ∈ 𝐿?

Page 19: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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.

Page 20: Algoritma CYK - Jurusan Informatikainformatika.unsyiah.ac.id/~viska/tba/algoritma.cyk.pdfAlgoritma CYK . FMIPA Informatika Universitas Syiah Kuala – Semester Ganjil 2013 . 3 Teori

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)