Anda di halaman 1dari 31

HIERARKI CHOMSKY

TEORI BAHASA DAN AUTOMATA, SEMESTER GENAP 2019


PTIK, FT - UNM
Materi Bahasan
A KONSEP HIERARKI CHOMSKY

B PENERAPAN HIERARKI CHOMSKY


Konsep Hierarki Chom-
sky
D
D
Context-Sensitive Grammar
Sebuah bahasa context-sensitive adalah sebuah bahasa
yang dibangkitkan oleh sebuah context sensitive grammar.
Definisi 1:
Sebuah context-sensitive grammar adalah sebuah tata
bahasa yang memproduksi bentuk

xAy xvy
dimana Av dan x, v, y(V T )* .
“Context-sensitive” merujuk kepada fakta bahwa modifikasi
string yang sebenarnya diberikan oleh A v, sementara x
dan y merujuk pada context dimana aturan yang akan
diterapkan.
Definisi 2: Sebuah context-sensitive grammar adalah sebuah tata
bahasa yang menghasilkan semua bentuk

x y dimana x, y(V T )+ , dan | x | | y |.

Jenis tata bahasa ini disebut “Non-contracting” karena tahapan-


tahapan turunannya tidak pernah mengurangi panjang dari
sentential form.
Defenisi kedua adalah defenisi yang paling banyak digunakan.
Dua jenis grammar di atas hampir ekuivalen dalam membangk-
itkan
bahasa yang sama kecuali : Salah satu grammar mengijinkan
bahasa untuk memiliki empty string, sedangkan yang lainnya
tidak.
Sebuah bahasa L adalah context-sensitive jika terdapat context
sensitive grammar G sehingga L = L(G) atau L = L(G) { }.
Linear Bounded Automata
Sebuah linear-bounded automata adalah sebuah mesin
Turing machine yang memiliki pita dengan panjang
seperempat, dimana ‘n’ adalah panjang dari input string
dan a adalah konstanta yang berhubungan dengan linear-
bounded automata tertentu.
TEOREMA (I): untuk setiap bahasa context-sensitive L
terdapat sebuah linear-bounded automata M sehingga
L = L(M), mis.,M menerima semua strings L.

TEOREMA (II): untuk setiap bahasa L yang diterima oleh


sebuah automata yang memproduksi tepat L atau L - { },
tergantung pada defenisi dari context sensitive grammar.
Hubungan dengan Grammar Lain

TEOREMA (I): Setiap bahasa context-free adalah juga


context-sensitive.
Bukti: Produksi dari sebuah bahasa context-free yang
memiliki bentuk A v. Produksi dari sebuah bahasa
context-sensitive memiliki bentuk xAy xvy, dimana x dan y
dibolehkan membentuk bahasa .

TEOREMA (II): Terdapat sebuah bahasa context-sensitive


yang tidak context-free.
Bukti: Bahasa {anbncn | n 0} bukan context-free
Hal ini dapat ditunjukkan bahwa bahasa tersebut adalah context-sensitive
dengan menggunakan grammar yang tepat.
Produksi dari grammar tersebut diberikan di bawah ini :
TEOREMA (III): Setiap bahasa context-sensitive adalah recursive.

Bukti: Sebuah context-sensitive grammar adalah noncontracting. Untuk setiap


integer n hanya ada sejumlah terbatas sentential forms dengan panjang n.

Jadi, untuk setiap string w , kita dapat menset sebuah batasan jumlah tahapan
turunan yang dibutuhkan untuk membangkitkan w, yang menghasilkan sejumlah
batasan turunan yang mungkin. String w adalah sebuah bahasa jika dan hanya
jikan salah satu dari batasan tersebut menghasilkan w.
Hierarki Bahasa
Unrestricted Grammar
Grammar dalam hierarki Chomsky memiliki aturan produksi dalam
Bentuk a b
dimana a dan b adalah representasi string dari simbol grammar symbols,
dengan a .
Tipe-tipe grammar ini dikenal sebagai “Unrestricted grammars”.
Notasi 4-tuplen G = (V,T, P, S ) yang digunakan untuk unrestricted
grammars juga berarti
L(G) = {w | w berada dalam T * dan S w}

melambangkan reflexive dan transitive closure dari relasi .


Mesin Random Access

Sebuah mesin random didefinsikan sebagai berikut :

Tipe Data: Tipe data yang didukung hanya bilangan Natural 0, 1, 2, 3,.........
Tetatp jumlah angkanya sangat besar.

Variabel: sejumlah variable acak diijinkan. Setiap variable dapat mendukung


sebuah bilangan natural. Semua variable diinisialisasi menjadi 0.

Tests: Test yang didukung hanya <variable> = 0.

Pernyataan (Statement): Berikut ini adalah tipe pernyataan dalam bahasa:


(a) if <test> then <statement> else <statement>;
(b) while <test> do <statements>;
(c) <variable> : = <variable> +1; (increment)
(d) <variable>: = <variable> –1; (decrement)
Perlu diperhatikan bahwa membuat sebuah variable yang memiliki nilai 0
decrement tidak akan mengalami perubahan.

Pernyataan (Statements) yang dieksekusi dalam sekuens


(<statement>; <statement>; <statement>; ......
Diijikan dan parantheses (tanda baca) digunakan untuk menggrupkan sebuah
sequence statement menjadi a single statement.
Bahasa ini memiliki kemampuan yang ekuivalen dengan sebuah mesinTuring
Hal ini dapat dibuktikan dengan menggunakan bahasa untuk
mengimplementasikan sebuah mesin turing, dan menggunakan sebuah
mesin turing untuk mengartikan bahasa..
Bahasa ini sangat kuat untuk digunakan mengkomputasi apapun yang dapat
dikomputasi dalam semua bahasa pemrograman.
Ringkasan

Berdasarkan komposisi bentuk ruas kiri dan ruas kanan produksinya ,


Noam Chomsky mengklasifikasikan 4 tipe grammar :

1. Grammar tipe ke-0 : Unsrestructed Grammar (UG).


Ciri : ,  Є ( VT VN)*,  > 0

2. Grammar tipe ke-1 : Context Sensitive Grammar (CSG).


Ciri : ,  Є ( VT VN)*, 0 <   

3. Grammar tipe ke-2 : Context Free Grammar (CFG)


Ciri :  Є VN,  Є ( VT  VN) *

4. Grammar tipe ke-3, Regular Grammar (RG)


Ciri :  Є VN,  Є { VT , VTVN} atau  Є VN,  Є { VT , VNVT} .
Penerapan Hierarki
Chomsky
D
D
Bentuk Normal Chomsky

Bentuk normal Chomsky (Chomsky Normal Form, CNF) adalah grammar bebas
konteks (CFG) dengan setiap produksinya berbentuk : A → BC atau A → a.
Transformasi CFG ke CNF adalah trnasformasi berikut :

4 langkah konversi CFG – CNF adalah sebagai berikut :


1. Eliminir semua produksi hampa
2. Eliminir semua produksi unitas
3. Terapkan prinsip batasan bentuk ruas kanan produksi
4. Terapkan prinsip batasan panjang ruas kanan produksi
Penjelasan Konversi

1. Eliminasi produksi hampa

Produksi hampa dikaitkan dengan pengertian nullable


Suatu simbol A ∈ VN dikatakan nullable jika :
(a) terkait dengan produksi berbentuk : A → ε, atau
(b) terkait dengan derivasi berbentuk : A ⇒… ⇒ ε

Eliminasi yang dilakukan terhadap simbol nullable adalah :


(a) Buang produksi hampa
(b) Tambahkan produksi lain yang merupakan produksi lama tetapi
simbol nullablenya yang di ruas kanan produksi dicoret.
Contoh

Lakukan eliminasi produksi hampa terhadap himpunan produksi


berikut :
Q = { S → a I Xb I aYa, X → Y I ε, Y → b I X}
Solusi :
• Simbol nullable adalah X (karena X → ε) dan Y (karena Y ⇒ X ⇒ ε)
• Dua langkah eliminasi simbol nullable adalah :
langkah (a) menghilangkan produksi X → ε
langkah (b) menambahkan produksi S → b (pencoretan simbol
nullable X pada produksi S → Xb) dan produksi S → aa (pencoretan
simbol nullable Y pada produksi S → aYa)
• Himpunan produksi setelah dilakukan eliminasi produksi hampa
adalah :
Q = {S → a I Xb I aYa I b I aa, X → Y, Y → b I X}
2. Eliminasi produksi unitas
Produksi unitas berbentuk A → B, dimana A,B ∈ V N
• Jika ada produksi berbentuk : A → B , atau derivasi
A ⇒ X1 ⇒ X2 ⇒ ... ⇒ B , dan jika ada produksi non-unitas dari B
berbentuk :
B → α1 I α2 I...I αn , maka
eliminasi yang dilakukan akan menghapus produksi A → B dan
menghasilkan produksi : A → α1 I α2 I...I αn .
Tidak dilakukan eliminasi terhadap derivasi tertutup karena tidak akan
Menghasilkan produksi baru. Bentuk derivasi tertutup adalah :
A ⇒ X1 ⇒ X2 ⇒ ... ⇒ A
Contoh

Lakukan eliminasi produksi unitas terhadap himpunan produksi berikut :


Q = {S → A I bb, A → B I b, B → S I a}
Solusi :
Untuk memudahkan, pisahkan produksi unitas dan non-unitas :
Produksi unitas : S → A, A → B, B → S
Produksi non unitas : S → bb, A → b, B → a
Proses eliminasi yang dilakukan adalah :
S → A dan A → b menghapus S → A dan menghasilkan S → b
S ⇒ A ⇒ B dan B → a menghasilkan S → a
A → B dan B → a menghapus A → B dan menghasilkan A → a
A ⇒ B ⇒ S dan S → bb menghasilkan A → bb
B → S dan S → bb menghapus B → S dan menghasilkan B → bb
B ⇒ S ⇒ A dan A → b menghasilkan B → b
Perhatikan bahwa derivasi S ⇒ A ⇒ B ⇒ S (derivasi tertutup) dan produksi S → bb
akan menghasilkan produksi S → bb yang jelas bukan merupakan produksi baru.
Karena itu terhadap derivasi ini tidak dilakukan eliminasi.
3. Penerapan batasan bentuk ruas kanan produksi
Penerapan batasan bentuk ruas kanan produksi adalah mengubah
semua bentuk produksi ke dalam 2 bentuk berikut :
A → a dan A → B1 B2 ... Bn , n ≥ 2.
Contoh 11:
Terapkan batasan bentuk ruas kanan produksi terhadap himpunan
produksi berikut :
Q = {S → Aa, A → bAa}
Solusi :
- produksi S → Aa diubah menjadi : S → AX a , Xa → a
- produksi A → bAa diubah menjdi : A → X bA Xa , Xa → a, Xb → b
sehingga himpunan produksi menjadi :
Q = {S → AXa , A → XbA Xa , Xa → a, Xb → b}
4. Penerapan batasan panjang ruas kanan produksi
Penerapan batasan panjang ruas kanan produksi adalah mengubah
semua bentuk produksi sehingga panjang untai ruas kanannya ≤ 2.
Contoh 12 :
Terapkan batasan panjang ruas kanan produksi terhadap himpunan
produksi berikut :
Q = {S → ABCD I ABC, B → XbB Xa }
Solusi :
- produksi S → ABCD diubah menjadi : S → AT 1 , T1 → BT2 , T2 → CD
- produksi S → ABC diubah menjadi : S → AT 3 , T3 → BC
- produksi B → XbB Xa diubah menjadi : B → XbT4 , T4 → B Xa
sehingga himpunan produksi menjadi :
Q = {S → AT1 , T1 → BT2 , T2 → CD, S → AT3 , T3 → BC, B → XbT4 ,
T4 → B Xa }
Contoh

Penyelesaian Konversi CFG ke CNF :

Diberikan Q = {S → AACD , A → aAb I ε , C → aC I a , D → aDa I bDb I ε }


Transformasikan himpunan produksi tersebut ke dalam bentuk CNF-nya.
1. Eliminasi Produksi Hampa
Dari bentuk Q di atas, maka simbol nullable adalah A dan D. Dua langkah
eliminasi yang dilakukan adalah :
- penghilangan produksi hampa A → ε dan D → ε
- pembentukan produksi hampa dari produksi yang mengandung simbol nullable :
• dari S → AACD dibentuk : S → ACD I AAC I AC I CD I C
• dari A → aAb dibentuk : A → ab
• dari D → aDa I bDb dibentuk : D → aa I bb
Dengan demikian Q berubah menjadi :
Q = {S → AACD I ACD I AAC I AC ICD I C ,
A → aAb I ab , C → ac I a , D → aDa I bDb I aa I bb }
2. Eliminasi Produksi Unitas
Q hasil langkah pertama di atas mengandung satu produksi unitas : S → C.
Proses eliminasi yang dilakukan adalah :
S → C dan C → ac I a menghapus S → C dan menghasilkan S → ac I a
Dengan demikian Q berubah menjadi :
Q = {S → AACD I ACD I AAC I AC I CD I ac I a ,
A → aAb I ab , C → ac I a , D → aDa I bDb I aa I bb }
3. Penerapan Batasan Bentuk Ruas Kanan
Setelah langkah 2, ternyata Q masih mengandung produksi-prosuksi yang tidak
ber-bentuk A → a dan A → B1 B2 ... Bn (n ≥ 2). Produksi-produksi tersebut
adalah :
S → aC, A → aAb I ab, C → aC, D → aDa I bDb I aa I bb. Bentuk-bentuk
produksi ini diubah sebagai berikut :
S → aC menjadi S → Xa C dan Xa → a
A → aAb I ab menjadi A → X a A Xb I Xa Xb dan Xa → a, Xb → b
C → aC menjadi C → Xa C dan Xa → a
D → aDa I bDb I aa I bb menjadi D → X a DXa I XbD Xb I Xa Xa I XbXb
dan Xa → a, Xb → b
Bentuk Grammar sampai langkah 3 ini adalah :
Q = { S → AACD I ACD I AAC I AC I CD I X a C I a , A → Xa A Xb I Xa Xb ,
C → Xa C I a , D → Xa D X a I XbD Xb I Xa Xa I Xb Xb ,
4. Penerapan Batasan Panjang Ruas Kanan
Bentuk Q terakhir masih mengandung produksi-produksi dengan
panjang untai ruas kanan ≥ 2.
Produksi-produksi tersebut adalah : S → AACD I ACD I AAC ,
A → Xa AXb , D → Xa DXa I XbDXb . Bentuk-bentuk produksi ini diubah
sebagai berikut :
S → AACD menjadi : S → A T1 , T1 → A T2 , T2 → CD
S → ACD menjadi : S → A T2 , T2 → CD
S → AAC menjadi : S → A T3 , T3 → AC
A → Xa AXb menjadi : A → Xa T4 , T4 → AXb
D → Xa DXa menjadi : D → Xa T5 , T5 → DXa
D → XbDXb menjadi : D → XbT 6 , T6 → DXb
Bentuk grammar sampai langkah 4 ini adalah bentuk CNF, yaitu :
Q = {S → A T1 I A T2 I A T3 I AC I CD I Xa C I a,
T1 → A T2 , T2 → CD , T3 → AC ,
A → Xa T4 I Xa Xb , T 4 → A Xb ,
C → Xa C I a,
D → Xa T 5 I XbT 6 I X a X a I Xb Xb , T 5 → DXa , T 6 → DXb ,
Xa → a, Xb → b }
Contoh

1. Grammar G1 dengan
Q1 = { S  aB, B  bB, B b}.
Ruas kiri semua produksinya terdiri dari sebuah V N maka G1
kemungkinan tipe CFG atau RG. Selanjutnya karena semua ruas kanannya terdiri
dari sebuah VT atau string VT VN maka G1 adalah RG

2. Grammar G2 dengan Q2 = { S  Ba, B  Bb, B b}.


Ruas kiri semua produksinya terdiri dari sebuah V N maka G2
kemungkinan tipe CFG atau RG. Selanjutnya karena semua ruas kanannya terdiri
dari sebuah VT atau string VNVT maka G2 adalah RG
Grammar G3 dengan Q3 = { S  Ba, B  bB, B b}.
Ruas kiri semua produksinya terdiri dari sebuah V N maka
kemungkinan G33 kemungkinan tipe CFG atau RG. Selanjutnya karena ruas
kanannya mengandung srting V TVN (yaitu bB) dan juga string V NVT (Ba) maka G3
adalah CFG

Grammar G4 dengan Q4 = { S aAb, B aB}. Ruas kiri semua produksinya


terdiri dari sebuah VN maka G4 kemungkinan tipe CFG atau RG. Selanjutnya
karena ruas kanannya mengandung string yang panjangnya lebih dari 2 (yaitu
aAb) maka G4 bukan RG melainkan CFG

Grammar G5 dengan Q5 = { S  aA,


S  aB , aAb  aBCb}. Ruas kirinya mengandung string yang
panjangnya lebih dari 1 (yaitu aAb) maka G 5 kemungkinan tipe CSG atau UG.
Selanjutnya karena semua ruas kirinya lebih pendek atau sama dengan ruas
kanannya maka G5 adalah CSG
Bagaimana jika diketahui Grammar G6 dengan
Q6 = { aS  ab, Sac  bc} maka tipe G6 ?

Anda mungkin juga menyukai