Teori Bahasa dan Automata Penyederhanaan Tata Bahasa Bebas Konteks
Penyederhanaan Tata Bahasa Bebas Konteks Tujuan
Penyederhanaan Tata Bahasa Bebas Konteks Tujuan melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki kerumitan yang tak pelu atau aturan produksi yang tak berarti.
Penyederhanaan Tata Bahasa Bebas Konteks Tujuan melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki kerumitan yang tak pelu atau aturan produksi yang tak berarti. Contoh: Terdapat tata bahasa bebas konteks dgn aturan produksi: SAB a Aa ???
Penyederhanaan Tata Bahasa Bebas Konteks Tujuan melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki kerumitan yang tak pelu atau aturan produksi yang tak berarti. Contoh: Terdapat tata bahasa bebas konteks dgn aturan produksi: SAB a Aa B Tidak memiliki penurunan …
Penyederhanaan Tata Bahasa Bebas Konteks Bagaimana dengan CFG berikut? SA AB BC CD Da A Terlalu panjang path yang dilalui D A : menyebabkan kerumitan (redundant)
Penyederhanaan Tata Bahasa Bebas Konteks Suatu tata bahasa bebas konteks dapat disederhanakan dengan melakukan : Penghilangan produksi useless Penghilangan produksi unit Penghilangna produksi
Penghilangan Produksi Useless Produksi useless didefinisikan sebagai : Produksi yang memuat variabel yang tidak memiliki penurunan yang akan menghasilkan terminal-terminal seluruhnya. Produksi ini tidak berguna karena bila diturunkan tidak akan pernah selesai (masih ada symbol variabel yang tersisa) Produksi yang tidak akan pernah dicapai dengan penurunan apapun dari symbol awal, sehingga produksi itu berlebih.
Penghilangan Produksi Useless Contoh : Terdapat tata bahasa bebas konteks : SaSa Abd Bde AAda BBBB a Simbol variabel A tidak memiliki penurunan yang menuju terminal sehingga bisa dihilangkan. Konsekuensi diatas, aturan produksi S Abd tidak memiliki penurunan Maka tata bahasa bebas konteks setelah disederhanakan menjadi : SaSa Bde
Penghilangan Produksi Useless Contoh : Terdapat tata bahasa bebas konteks : SaSa Abd Bde AAda BBBB a Simbol variabel A tidak memiliki penurunan yang menuju terminal sehingga bisa dihilangkan. Konsekuensi diatas, aturan produksi S Abd tidak memiliki penurunan Maka tata bahasa bebas konteks setelah disederhanakan menjadi : SaSa Bde
Penghilangan Produksi Useless Contoh : Terdapat tata bahasa bebas konteks : S Aa B Aab D Bb E Cbb EaEa Simbol variabel D tidak memiliki penurunan Tidak ada penurunan yang mencapai simbol variabel C Simbol variabel E tidak memiliki penurunan menuju terminal Aturan2 Produksi yang useless : AD Cbb EaEa BE Tata bahasa bebas konteks setelah disederhanakan menjadi : SAa B Aab Bb
Penghilangan Produksi Useless Contoh : Sederhanakan CFG dengan Aturan produksi berikut dengan menghilangkan aturan2 produksi useless! 1. SaAb cEB AdBE eeC Bff Cae Dh 2. SaBD BcD Ab Def AEd Fdc
Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan produksi hanya berupa satu symbol variabel. e.g. A B, C D Tata bahasa bebas konteks dgn aturan produksi : SSb SC CD Cef Ddd
Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan produksi hanya berupa satu symbol variabel. e.g. A B, C D Tata bahasa bebas konteks dgn aturan produksi : SSb SC CD Cef Ddd
Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan produksi hanya berupa satu symbol variabel. e.g. A B, C D Tata bahasa bebas konteks dgn aturan produksi : SSb SC C dd Cef Ddd
Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan produksi hanya berupa satu symbol variabel. e.g. A B, C D Tata bahasa bebas konteks dgn aturan produksi : SSb SC C dd Cef Ddd
Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan produksi hanya berupa satu symbol variabel. e.g. A B, C D Tata bahasa bebas konteks dgn aturan produksi : SSb S dd | ef C dd Cef Ddd
Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan produksi hanya berupa satu symbol variabel. e.g. A B, C D Tata bahasa bebas konteks setelah penghilangan produksi unit: SSb S dd | ef C dd Cef Ddd
Penghilangan Produksi Unit Contoh: Sederhanakan CFG dengan Aturan produksi berikut dengan menghilangkan aturan2 produksi unit! SCba D AbbC BSc ddd CeA f C DE SABC Egh
Penghilangan Produksi Produksi adalah produksi dalam bentuk (nullable) Penghilangan produksi dilakukan dengan melakukan penggantian produksi yang memuat variabel yang bisa menuju produksi . Contoh: SbcAd A A nullable, A Hasil penyederhanaan tata bahasa bebas konteks: Sbcd
Penghilangan Produksi Contoh: Terdapat tata bahasa bebas konteks : SbcAd Abd A adalah variabel nullable Hasil penyederhanaan tata bahasa bebas konteks: SbcAd bcd Abd
Penghilangan Produksi Contoh: Terdapat tata bahasa bebas konteks : SbcAd Abd A adalah variabel nullable Hasil penyederhanaan tata bahasa bebas konteks: SbcAd bcd Abd
Penghilangan Produksi Contoh: Terdapat tata bahasa bebas konteks : S ACD A a B C ED | D BC | b E b Lakukan penghilangan aturan2 produksi unit ! Variabel nullable: B, C, D
Penghilangan Produksi D C S AD D B D e S AC S A C E S ACD A a B C ED | D BC | b E b Variabel nullable: B, C, D Hasil penyederhanaan tata bahasa bebas konteks: SACD | AD | AC | A Aa C ED | E D C | b E b
Penghilangan produksi useless, unit dan Pada prakteknya ketiga penyederhanaan ( penghilangan useless, unit, ) dilakukan bersama pada suatu tata bahasa bebas konteks diubah ke dalam suatu bentuk normal Chomsky. Maka kita bisa menghapuskan semua produksi yang tidak diinginkan tersebut dengan melakukan urutan sebagai berikut : Hilangkan produksi Hilangkan produksi unit Hilangkan produksi useless
Penghilangan produksi useless, unit dan Contoh: Sebuah CFG dengan aturan produksi: S AA C bd A Bb B AB d C de Lakukan ketiga penyederhanaan (useless, unit dan ) !
Penghilangan produksi useless, unit dan Pertama Penghilangan produksi : S A AA C bd A Bb B B AB d C de Kedua Penghilangan produksi unit: S Bb AA de bd A Bb B AB d
Penghilangan produksi useless, unit dan Ketiga Penghilangan produksi useless : S Bb AA de bd A Bb B AB d Tidak terdapat lagi produksi , produksi unit maupun produksi useless.
Teori Bahasa dan Automata Bentuk Normal Chomsky (CNF)
CNF Bentuk Normal Chomsky/ Chomsky Normal Form (CNF) merupakan salah satu bentuk normal yang sangat berguna untuk tata bahasa bebas konteks (CFG) Suatu Context Free Grammar dapat dibuat menjadi bentuk normal Chomsky dengan syarat tata bahasa bebas konteks tersebut: tidak memiliki produksi useless tidak memiliki produksi unit tidak memiliki produksi
CNF Sebuah CFG disebut dalam bentuk Chomsky Normal Form apabila CFG tersebut memiliki aturan produksi yang ruas kanannya hanya terdapat tepat 1 terminal atau tepat 2 variabel. Contoh : A BC A b B a C BA d
CFG yang sudah disederhanakan Pembentukan CNF Biarkan yang sudah CNF CFG yang sudah disederhanakan Penggantian symbol terminal pada a.p, dg ruas kanan >1 Buat variabel dan a.p. baru bila perlu CNF Penggantian a.p. dg symbol variabel>2
Contoh CNF Contoh, Sebuah Tata bahasa bebas konteks dengan aturan produksi (sudah disederhanakan): S bA aB A bAA aS a B aBB bS b
Contoh CNF Aturan produksi yang sudah dalam CNF: A a B b Ubah aturan produksi: S bA S P1A S aB S P2B A bAA A P1AA A P1 P3 A aS A P2S B aBB B P2BB B P2 P4 B bS B P1S Buat aturan produksi dan symbol variabel baru: P1 b P2 a P3 AA P4 BB
Contoh CNF Hasil akhir aturan produksi dalam CNF A a B b S P1A S P2B A P1 P3 A P2S B P2 P4 B P1S P1 b P2 a P3 AA P4 BB
Latihan CNF Ubahlah CFG berikut menjadi CFG dengan Chomsky Normal Form ! 1. Aturan Produksi : S aB CA A a bc B BC Ab C aB b 2. Aturan Produksi: S aAB ch CD A dbE eEC B ff DD C ADB aS D i E jD
Algoritma Cocke, Younger & Kasami (CYK Algorithm) Digunakan untuk menunjukkan apakah suatu string diperoleh oleh suatu Grammar. Contoh : Terdapat tata bahasa bebas konteks : S AB | BC A BA | a B CC | b C AB | a Tentukan apakah string ‘baaba’ termasuk dalam CFG diatas!
Contoh Alogritma CYK Tentukan n dimana n merupakan panjang string. n = |’baaba’| = 5 Buatah tabel Vi,j dimana i merupakan kolom dan j merupakan baris (Vkolom,baris ): b a 1 2 3 4 5 V1,1 V2,1 V3,1 V4,1 V5,1 V1,2 V2,2 V3,2 V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Untuk V1,1 yang bisa menurunkan b : {B} Untuk V2,1 yang bisa menurunkan a : {A,C} Untuk V3,1 yang bisa menurunkan a : {A,C} Untuk V4,1 yang bisa menurunkan b : {B} Untuk V5,1 yang bisa menurunkan a : {A,C} b a 1 2 3 4 5 B A,C V1,2 V2,2 V3,2 V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S dan A. Untuk V1,2 dicari variabel yang bisa menurunkan B - AC atau BA atau BC. Jawabannya adalah : S dan A. b a 1 2 3 4 5 B A,C V1,2 V2,2 V3,2 V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S dan A. Untuk V1,2 dicari variabel yang bisa menurunkan B - AC atau BA atau BC. Jawabannya adalah : S dan A. b a 1 2 3 4 5 B A,C S,A V2,2 V3,2 V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : B. Untuk V2,2 dicari variabel yang bisa menurunkan AC- AC atau AA, AC, CA atau CC. Jawabannya adalah : B. b a 1 2 3 4 5 B A,C S,A V2,2 V3,2 V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : B. Untuk V2,2 dicari variabel yang bisa menurunkan AC- AC atau AA, AC, CA atau CC. Jawabannya adalah : B. b a 1 2 3 4 5 B A,C S,A V3,2 V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S dan C. Untuk V3,2 dicari variabel yang bisa menurunkan AC- B atau AB atau CB. Jawabannya adalah : S dan C. b a 1 2 3 4 5 B A,C S,A V3,2 V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S dan C. Untuk V3,2 dicari variabel yang bisa menurunkan AC- B atau AB atau CB. Jawabannya adalah : S dan C. b a 1 2 3 4 5 B A,C S,A S, C V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S dan A. Untuk V4,2 dicari variabel yang bisa menurunkan B - AC atau BA atau BC. Jawabannya adalah : S dan A. b a 1 2 3 4 5 B A,C S,A S, C V4,2 V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S dan A. Untuk V4,2 dicari variabel yang bisa menurunkan B - AC atau BA atau BC. Jawabannya adalah : S dan A. b a 1 2 3 4 5 B A,C S,A S, C V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : ∅. Untuk V1,3 dicari variabel yang bisa menurunkan B – B dan S,A – A,C atau BB, SA, SC, AA atau AC. Jawabannya adalah : ∅. b a 1 2 3 4 5 B A,C S,A S, C V1,3 V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : ∅. ∅ Untuk V1,3 dicari variabel yang bisa menurunkan B – B dan S,A – A,C atau BB, SA, SC, AA atau AC. Jawabannya adalah : ∅. b a 1 2 3 4 5 B A,C S,A S, C ∅ V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : B. ∅ Untuk V2,3 dicari variabel yang bisa menurunkan A,C – S,C dan B – B atau AS, AC, CS, CC atau BB. Jawabannya adalah : B. b a 1 2 3 4 5 B A,C S,A S, C ∅ V2,3 V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : B. ∅ Untuk V2,3 dicari variabel yang bisa menurunkan A,C – S,C dan B – B atau AS, AC, CS, CC atau BB. Jawabannya adalah : B. b a 1 2 3 4 5 B A,C S,A S, C ∅ V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : B. ∅ Untuk V3,3 dicari variabel yang bisa menurunkan A,C – S,A dan S,C – A,C atau AS, AA, CS, CA, SA, SC, CA atau CC. Jawabannya adalah : B. b a 1 2 3 4 5 B A,C S,A S, C ∅ V3,3 V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : B. ∅ Untuk V3,3 dicari variabel yang bisa menurunkan A,C – S,A dan S,C – A,C atau AS, AA, CS, CA, SA, SC, CA atau CC. Jawabannya adalah : B. b a 1 2 3 4 5 B A,C S,A S, C ∅ V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : ∅. ∅ Untuk V1,4 dicari variabel yang bisa menurunkan B – B dan S,A – S,C dan ∅- B atau BB, SS, SC, AS, atau AC. Jawabannya adalah : ∅. b a 1 2 3 4 5 B A,C S,A S, C ∅ V1,4 V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : ∅. ∅ Untuk V1,4 dicari variabel yang bisa menurunkan B – B dan S,A – S,C dan ∅- B atau BB, SS, SC, AS, atau AC. Jawabannya adalah : ∅. b a 1 2 3 4 5 B A,C S,A S, C ∅ V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S, A dan C. ∅ Untuk V2,4 dicari variabel yang bisa menurunkan A,C – B dan B – S,A dan B - A,C atau AB, CB, BS, BA, BA atau BC. Jawabannya adalah : S, A dan C. b a 1 2 3 4 5 B A,C S,A S, C ∅ V2,4 V1,5
Contoh Alogritma CYK Jawabannya adalah : S, A dan C. ∅ Untuk V2,4 dicari variabel yang bisa menurunkan A,C – B dan B – S,A dan B - A,C atau AB, CB, BS, BA, BA atau BC. Jawabannya adalah : S, A dan C. b a 1 2 3 4 5 B A,C S,A S, C ∅ S,A,C V1,5
Contoh Alogritma CYK Jawabannya adalah : S, A dan C. ∅ Untuk V1,5 dicari variabel yang bisa menurunkan B – S,A,C dan S,A – B dan ∅ - S,A dan ∅ - A,C atau BS, BA, BC, SB, atau AB. Jawabannya adalah : S, A dan C. b a 1 2 3 4 5 B A,C S,A S, C ∅ S,A,C V1,5
Contoh Alogritma CYK Jawabannya adalah : S, A dan C. ∅ Untuk V1,5 dicari variabel yang bisa menurunkan B – S,A,C dan S,A – B dan ∅ - S,A dan ∅ - A,C atau BS, BA, BC, SB, atau AB. Jawabannya adalah : S, A dan C. b a 1 2 3 4 5 B A,C S,A S, C ∅ S,A,C
Contoh Alogritma CYK S terdapat dalam V1,5 ∅ Untuk menentukan apakah string ‘baaba’ dapat diterima maka periksa apakah simbol awal (S) terdapat pada V1,n dalam soal ini maka S terdapat dalam V1,5 b a 1 2 3 4 5 B A,C S,A S, C ∅ S,A,C
Latihan Algoritma CYK Terdapat tata bahasa bebas konteks : S abAB B BAa | A | ℇ 1. Ubahlah CFG tersebut menjadi CFG dengan Chomsky Normal Form ! 2. Tentukan apakah string ‘aabab’ termasuk dalam CFG diatas!