H 111 15 506
JURUSAN MATEMATIKA
UNIVERSITAS HASANUDDIN
2018
RESUME 01
Temporary
Memory
Input
Automata CPU
Output
Program
Memori
Automata adalah mesin abstrak yang dapat mengenali (recognize), menerima
(accept), atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu.
Automata dibagi menjadi empat macam berdasarkan Temporary Memory yaitu :
RESUME 02
Alfabet : ∑ = {𝑎, 𝑏}
ab u= ab
abba v=bbbaaa
bbbaaa
v = b1,b2,b3,.....
wr = ......,a3,a2,a1
Panjang suatu string disimbolkan dengan “| |” atau |w|=n. Suatu string yang
tidak terdapat abjad didalamnya disimbolkan dengan "𝜆" atau "𝜀". Panjang
suatu |𝜆| = 0 dan 𝜆𝑤 = 𝑤𝜆 = 𝑤. Pada suatu string dikenal sub – string yang
merupakan sub – barisan dari abjad yang berlanjut contoh,
abbab ab
aaabbb bbb
abababa baba
prefix sufix
a bbab
𝜆 abbab
Operasi lain yang terdapat pada string adalah wn = 𝑤𝑤𝑤. . . . . 𝑤 dengan |w| = n
contoh
(𝑎𝑏𝑏)2 = 𝑎𝑏𝑏𝑎𝑏
𝑤0 = 𝜆
Selain operator – operator yang disebutkan diatas ada operator lain yaitu
operator “ * “ yang merupakan himpunan semua string yang dapat dibentuk
contoh,
∑ = {𝑎, 𝑏}
∗
∑ = {𝜆, 𝑎, 𝑏, 𝑎𝑎, 𝑎𝑏, 𝑏𝑎, 𝑏𝑏, 𝑎𝑎𝑎, … . . }
Alfabet : ∑ = {1, +, =}
Addition = {𝑥 + 𝑦 = 𝑧 ; 𝑥 = 1𝑛 , 𝑦 = 1𝑚 , 𝑧 = 1𝑘 , 𝑛 + 𝑚 = 𝑘}
{ 𝑎 , 𝑎𝑏 , 𝑎𝑎𝑎𝑎 } ∪ { 𝑏𝑏 , 𝑎𝑎 } = {𝑎 , 𝑎𝑏 , 𝑏𝑏 , 𝑎𝑎𝑎𝑎 }
{ 𝑎 , 𝑎𝑏 , 𝑎𝑎𝑎𝑎 } ∩ { 𝑏𝑏 , 𝑎𝑏 } = {𝑎𝑏}
{ 𝑎 , 𝑎𝑏 , 𝑎𝑎𝑎𝑎 } − { 𝑏𝑏 , 𝑎𝑏 } = { 𝑎 , 𝑎𝑎𝑎𝑎}
Selain bahasa formal terdapat bahasa lain yaitu bahasa reguler. Bahasa
reguler adalah semua bahasa yang diterima oleh otomata reguler. Otomata
reguler dibagi menjadi dua yaitu Deterministic Finite Automaton (DFA) dan
non-Deterministic
STRING
“Reject”
Contoh :
Alfabet : ∑ = { 𝑎 , 𝑏 }
State State
awal akhir
Transition
State
Untuk setiap state terdapat transisi untuk setiap simbol dalam alfabet.
Untuk menerima string seluruh input string telah discanning dan state akhir
adalah accepting. Untuk menolak string seluruh input string telah discanning
dan state akhir adalah non-accepting. Defenisi formal dari DFA
M = (Q, , , q0 , F )
Q : himpunan state
∑ : alfabet input
𝛿 : Fungsi transisi
q0 : state awal
∗
𝛿 ∗: 𝑄 𝑥 ∑ →𝑄
𝛿 ∗ (𝑞, 𝑤): 𝑞′
Menggambarkan state hasil dari scanning string w dimulai dari satet q. Secara
w = 1 2 k
1 2 k
q q
umum 𝛿 ∗ (𝑞, 𝑤): 𝑞′ menyatakan terdapat jalan transisi (walk of transition)
q w q
Bahasa diterima oleh DFA M dinyatakan sebagai L(M) dan memuat semua
string diterima oleh M. Bahasa L’ diterima atau dikenal oleh DFA M jika
L(M) = L’.
Resume 03
Suatu string dari NFA diterima apabila terdapat komputasi dari NFA yang
menerima string. Contoh :
L ={aa}
Sedangkan string dari NFA ditolak apabila tidak terdapat koputasi yang
menerima string, dimana untuk setiap komputasi semua input diproses dan buka
otomaton akhir atau input tidak dapat diproses. Contoh : masukan a ditolak
q1 a q2 a
q1 q2
a a
q0 q0
a a
q3 q3
Transisi Lambda
Suatu transisi dengan lambda tidak dihitung atau langsung dilewati. Contoh :
q0 a q1 q2 a q3
Langkah 1.
q0 a q1 q2 a q3
q0 a q1 q2 a q3
q0 a q1 q2 a q3
Catatan bahwa symbol "𝜆" tidak pernah muncul pada table penginputan.
Dengan NFA kita dapat menggambarkan dengan lebih mudah dibandingkan dengan
DFA. Contohnya
M2 a
NFA
M1 DFA
q2
q0 a q1
a
q0 a q1
L( M 1 ) = {a} L( M 2 ) = {a}
Dengan definisi formal dari NFA adalah
𝑀 = ( 𝑄 , Σ , 𝛿 , 𝑞0 , 𝐹 )
dimana :
𝑄 = ℎ𝑖𝑚𝑝𝑢𝑛𝑎𝑛 𝑠𝑡𝑎𝑡𝑒
Σ = 𝑎𝑙𝑓𝑎𝑏𝑒𝑡
𝛿 = 𝑓𝑢𝑛𝑔𝑠𝑖 𝑡𝑟𝑎𝑛𝑠𝑖𝑠𝑖
𝑞0 = 𝑠𝑡𝑎𝑡𝑒 𝑎𝑤𝑎𝑙
𝐹 = 𝑎𝑐𝑐𝑒𝑝𝑡𝑖𝑛𝑔 𝑠𝑡𝑎𝑡𝑒
𝛿 (𝑞0 , 1) = {𝑞1 }
0
q0 q1 0, 1 q2
1
selain fungsi transisi 𝛿 juga terdapat suatu fungsi transisi yang serupa dengan 𝛿 tetapi
digunakan pada string yaitu 𝛿 ∗ contohnya.
q4 q5
a
a
q0 a q1 b q2 q3
Terdapat kasus spesial yakni untuk sebarang state q dapat ditulis 𝑞 𝜖 𝛿 ∗ (𝑞, 𝜆)
secara umum 𝑞𝑗 𝜖 𝛿 ∗ (𝑞𝑖 , 𝜆) terdapat walk dari 𝑞𝑖 ke 𝑞𝑗 yang disimbolkan dengan w
contoh.
qi w qj
w = 1 2 k
1 2 k
qi qj
q4 q5
a a
q0 a q1 b q2 q3
𝛿 ∗ (𝑞0 , 𝑎𝑎) = {𝑞4 , 𝑞5 } dimana 𝑞5 𝜖 𝐹 𝑎𝑎 𝜖 𝐿(𝑀) serta 𝐿(𝑀) = {𝑎𝑏}∗ ∪ {𝑎𝑏}∗ {𝑎𝑎}.
NFA menerima Bahasa regular.
Jika semua Bahasa yang diterima NFA adalah Bahasa regular dan
Bahasa regular adalah Bahasa yang diterima oleh DFA maka semua DFA
adalah NFA.
Misalkan NFA M a
a q1 q2
b
maka DFA M’
q0
NFA M
a
q0 a q1 q2
b
maka DFA M’
q0 a
q1, q2
Lemma 1.
𝐿1 ∪ 𝐿2 ∶ 𝐺𝑎𝑏𝑢𝑛𝑔𝑎𝑛
𝐿1 𝐿2 ∶ 𝐾𝑜𝑛𝑘𝑎𝑡𝑒𝑛𝑎𝑠𝑖
𝐿1 ∗ ∶ 𝑆𝑡𝑎𝑟
𝐿1 𝑅 ∶ 𝑅𝑒𝑣𝑒𝑟𝑠𝑎𝑙
̅̅̅̅
𝐿1 ∶ 𝐶𝑜𝑚𝑝𝑙𝑒𝑚𝑒𝑛𝑡
𝐿1 ∩ 𝐿2 ∶ 𝐼𝑟𝑖𝑠𝑎𝑛
RESUME 04
EKSPRESI REGULER
(𝑎 + 𝑏 ∙ 𝑐)∗
Definisi 1. Bahasa regular secara rekursif yaitu suatu ekpresi regular sederhana
∅ , 𝜆, 𝛼. Diberikan ekspresi regular 𝑟1 dan 𝑟2 dimana
𝑟1 + 𝑟2
𝑟1 ∙ 𝑟2
𝑟1 ∗
(𝑟1 )
adalah Bahasa regular. Bahasa dari ekspresi regular r dinotasikan dengan 𝐿(𝑟).
Contoh 𝐿((𝑎 + 𝑏 ∙ 𝑐)∗ ) = {𝜆, 𝑎, 𝑏𝑐, 𝑎𝑎, 𝑎𝑏𝑐, 𝑏𝑐𝑎, … }. Dimana untuk suatu ekspresi
regular sederhana berlaku
𝐿(∅) = ∅
𝐿(𝜆) = {𝜆}
𝐿(𝑎) = {𝑎}
∗
𝐿(𝑟1 ∗ ) = (𝐿(𝑟1 ))
𝐿((𝑟1 )) = L(𝑟1 )
= 𝐿(𝑎 + 𝑏)𝐿(𝑎∗ )
∗
= (𝐿(𝑎) ∪ 𝐿(𝑏)) (𝐿(𝑎))
Definisi 2. Suatu ekspresi regular 𝑟1 dan 𝑟2 dikatakan ekuivalent jika 𝐿(𝑟1 ) = L(𝑟2 ).
Contoh
𝐿 = { 𝑠𝑒𝑚𝑢𝑎 𝑠𝑡𝑟𝑖𝑛𝑔 𝑡𝑎𝑛𝑝𝑎 𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔 00 }
𝑟1 = (1 + 01)∗ (0 + 𝜆)
𝑟2 = (1∗ 011∗ )∗ (0 + 𝜆) + 1∗ (0 + 𝜆)
Teorema 1. Bahasa yang dibangun oleh ekspresi regular adalah Bahasa regular serta
Bahasa regular adalah Bahasa yang dibangun dari ekspresi regular.
Pembuktian 1. Bahasa yanh dibangun oleh ekspresi regular adalah subset dari Bahasa
regular. Untuk setiap ekspresi regular 𝑟 maka Bahasa 𝐿(𝑟) adalah regular.
Pembuktian dengan induksi ukuran dari 𝑟 maka,
adalah Bahasa regular. Anggap bahwa untuk ekspresi regular 𝑟1 dan 𝑟2 , 𝐿(𝑟1 ) dan
𝐿(𝑟2 ) adalah Bahasa regular. Kita akan membuktikan bahwa
𝐿(𝑟1 + 𝑟2 )
𝐿(𝑟1 ⋅ 𝑟2 )
𝐿(𝑟1 ∗ )
𝐿((𝑟1 ))
adalah Bahasa regular. Dari definisi sebelumnya bahwa
∗
𝐿(𝑟1 ∗ ) = (𝐿(𝑟1 ))
𝐿((𝑟1 )) = L(𝑟1 )
maka dengan hipotesis sebelumnya 𝐿(𝑟1 ) dan 𝐿(𝑟2 ) adalah Bahasa regular dan juga
bahwa Bahasa regular tertutup terhadap gabungan , konkatenasi , dan star. Sehingga
∗
𝐿(𝑟1 ∗ ) = (𝐿(𝑟1 ))
𝐿((𝑟1 )) = L(𝑟1 )
Dengan menggunakan sifat tertutup dari operasi yang ada, kita dapat mengkonstruksi
secara rekursif NFA M yang diterima oleh 𝐿(𝑀) = 𝐿(𝑟). Contoh 𝑟 = 𝑟1 + 𝑟2 maka
L(M2 ) = L(r2 )
Pembuktian 2. Bahasa regular adalah subset dari Bahasa yang dibangun oleh ekspresi
regular. Untuk setiap 𝐿 terdapat ekspresi regular 𝑟 dengan 𝐿(𝑟) = 𝐿. Kita akan
mengkonversi sebuah NFA dengan accepts 𝐿 ke ekspresi regular.
L( M ) = L
ambil dengan single final state. Dari M konstruksi Graf Transisi Generalisasi yang
ekuivalent dimana label – label transisinya adalah ekspresi regular contoh
M
a c a c
a, b a+b
ae * d ce * b
ce * d
qi qj
ae * b
dengan mengulangi proses tersebut sampai tersisa dua states, maka hasil grafnya
adalah
Initial graph
Resulting graph
r1 r4
r3
q0 qf
r2
dengan hasil ekspresi regular
𝑟 = 𝑟1 ∗ 𝑟2 (𝑟4 + 𝑟3 𝑟1 ∗ 𝑟2 )∗
𝐿(𝑟) = 𝐿(𝑀) = 𝐿
Pada saat dikatakan bahwa diberikan Bahasa regular 𝐿 maka Bahasa 𝐿 adalah standar
representasi (DFA,NFA, atau ekspresi regular).
RESUME 05
1. 𝑎∗ 𝑏
2. 𝑏 ∗ 𝑐 + 𝑎
3. 𝑏 + 𝑐(𝑎 + 𝑏)∗
4. 𝑑𝑙𝑙
1. {𝑎𝑛 𝑏 𝑛 ∶ 𝑛 ≥ 0}
2. {𝑣𝑣 𝑅 ∶ 𝑣 ∈ {𝑎, 𝑏}∗ }
3. 𝑑𝑙𝑙.
Untuk membuktikan bahwa Bahasa 𝐿 merupakan Bahasa non – regular ada du acara
yakni
1. Membuktikan bahwa tidak ada DFA atau NFA atau ekspresi regules yang
menerima 𝐿 (namun tidak mudah membuktikannya karena terdapat nilai tak
hingga)
2. Menggunakan Pumping Lemma
selain kedua cara diatas juga dapat dilakukan pembuktian menggunakan Prinsip
Sarang burung merpati ( The Pigeonhole Principle ) yaitu terdapat empat burung
merpati yang akan menempati tiga sarang burung merpati, sehingga paling tidak
terdapat dua burung merpati yang menempati satu sarang burung merpati. Prinsip
sarang burung merpati dapat diterapkan dalam DFA contohnya misalkan suatu DFA
dengan empat states seperti berikut,
b
b b
q1 a q2
a
q3 b q4
a a
misalkan walk dari suatu string yang denan panjang paling sedikit empat yaitu aaaab,
dilakukan pengulangan suatu state pada walk aaaab seperti pada gambar,
q1 a q2 a q3 a q2 a q3 b q4
dimana state diatas dapat digambarkan menjadi
b
b b
q1 a q2 a q3 b q4
a a
terjadi pengulangan pada state 𝑞3 sebagai hasil dari Prinsip sarang burung merpati
dimana walk state bertindak sebagai burung merpati.
Secara umum dapa dituliskan bahwa jika |𝑤| ≥ #𝑠𝑡𝑎𝑡𝑒𝑠 dari DFA, dari
Prinsip sarang burung merpati, state berulang pada walk 𝑤. Dimana walk dari 𝑤 =
𝜎1 𝜎2 … 𝜎𝑘
1 2 i i +1 j j +1 k
q1 .... qi .... qi .... qz
|𝑤| ≥ #𝑠𝑡𝑎𝑡𝑒𝑠 dari DFA = 𝑚, dan 𝑞𝑧 = 𝑞𝑚−1 , 𝑞𝑖 adalah state yang berulang
dengan pengubahan DFA menjadi,
1 2 k
q1 ...... qi ...... qz
State yang berulang
Pumping Lemma
w = 1 2 k
1 2 ...... q ......
k
State berulang pada DFA
sehingga terdapat banyak state yang mungkin berulang. Ambil 𝑞 sebagai state
pertama yang berulang. Proyeksi satu dimensi dari walk 𝑤 seperti gambar berikut
Kejadian Kejadian
Pertama kedua
1 2 i i +1 j j +1 k
.... q .... q ....
State unik
Kejadian Kejadian
Pertama kedua
1 2 i i +1 j j +1 k
.... q .... q ....
𝑥 = 𝜎1 … 𝜎𝑖 𝑧 = 𝜎𝑗+1 … 𝜎𝑘
𝑦 = 𝜎𝑖+1 … 𝜎𝑗
pada DFA
Hanya memuat kejadian
y pertama dari q
j i +1
1 .... i j +1 k
q .... ....
x z
dengan melakukan observasi pada panjang |𝑥 𝑦 | ≤ 𝑚 , 𝑚 merupakan nilai dari states
DFA. 𝑥 dan 𝑦 merupakan state unik karena pada 𝑥𝑦 tidak terdapat state yang
berulang kecuali 𝑞. Panjang dari y, |𝑦| ≥ 1 , karena terdapat paling tidak satu transisi
pada loop
y
...
j i +1
kita dapat mengabaikan form pada string z. z sebenarnya saling tumpeng tindih
dengan path x dan y. Contohnya pada string xz diterima tanpa harus melewati loop
diatas maupun string xyyz diterima walaupun harus melewati loop sebanyak dua kali
yang artinya string x yi z diterima dengan i = 0,1,2,… . Oleh karena itu x yi z 𝜖 𝐿
dimana i = 0,1,2,… adalah Bahasa yang diterima oleh DFA. Dilain sisi, kita dapat
mendeskripsikan Pumping Lemma sebagai berikut :
Misalkan kita ingin membuktikan bahwa Bahasa tak hingga 𝐿 tidak regular.
Langkah pertama kita dapat mengasumsikan bahwa 𝐿 adalah Bahasa regular.
Pumping lemma seharusnya menahan 𝐿. Gunakan Pumping lemma untuk
memperoleh kontradiksi. Misalkan m merupakan panjang kritis dari 𝐿. Pilih string
khusus 𝑤 ∈ 𝐿 yang memenuhi kondisi |𝑤| ≥ 𝑚. Dimana 𝑤 = 𝑥𝑦𝑧 , dengan
menunjukkan bahwa 𝑤 ′ = 𝑥𝑦 𝑖 𝑧 ∉ 𝐿 untuk 𝑖 ≠ 1. Sehingga akan memberikan
kontradiksi, karena dari Pumping lemma 𝑤 ′ = 𝑥𝑦 𝑖 𝑧 ∈ 𝐿 . Oleh karena itu, 𝐿 tidak
regular. Catatan bahwa kita hanya cukup membuktikan satu string 𝑤 ∈ 𝐿 yang
memberikan kontradiksi.
𝑤 = 𝑎𝑚 𝑏 𝑚 = 𝑎 … 𝑎𝑎 … 𝑎𝑎𝑎 … 𝑎𝑏 … 𝑏
x y z
Jadi 𝑦 = 𝑎𝑘 , 1 ≤ 𝑘 ≤ 𝑚. Dari Pumping lemma 𝑥𝑦 𝑖 𝑧 ∈ 𝐿, 𝑖 = 0,1,2, … . Sehingga
𝑥𝑦 2 𝑧 ∈ 𝐿
m+k m
xy 2 z = a...aa...aa...aa...ab...b L
x y y z
Jadi, 𝑎𝑚+𝑘 𝑏 𝑚 ∈ 𝐿, 𝑘 ≥ 1 , tapi 𝐿 = {𝑎𝑛 𝑏 𝑛 : 𝑛 ≥ 0} kontradiksi dengan 𝑎𝑚+𝑘 𝑏 𝑚 ∉ 𝐿.
Oleh karena itu, asumsi bahwa 𝐿 adalah Bahasa regular tidak benar. Jadi, 𝐿 bukan
Bahasa regular.
m m m m
w = xyz = a...aa...a...ab...bb...ba...a
x y z
RESUME 06
𝑆 ⟹ 𝑎𝑆𝑏 ⟹ 𝑎𝑏
𝑆 → 𝑎𝑆𝑏 𝑆 →𝜆
Derivasi dari string aabb :
𝑆 → 𝑎𝑆𝑏 𝑆 →𝜆
Maka Bahasa dari tata Bahasa diatas adalah 𝐿 = { 𝑎𝑛 𝑏 𝑛 : 𝑛 ≥ 0} .Untuk nol atau
lebih dari langkah derivasi kita notasikan dengan
*
𝑆 ⇒ 𝑎𝑎𝑎𝑏𝑏𝑏
*
𝑤1 ⇒ 𝑤2
jika
𝑤1 ⇒ 𝑤2 ⇒ 𝑤3 ⇒ ⋯ ⇒ 𝑤𝑛
pada nol atau lebih langkah derivasi. Selain notasi diatas juga terdapat notasi lain
yang dapat digunakan yaitu
dimana,
𝑉 = Himpunan Variabel
𝑆 = Variabel awal
𝑆 → 𝑎𝑆𝑏 | 𝜆
maka hasilnya
𝑃 = { 𝑆 → 𝑎𝑆𝑏, 𝑆 → 𝜆 }
dan,
𝐺 = ( 𝑉, 𝑇, 𝑆, 𝑃)
Dimana
𝑃 = 𝑎𝑆𝑏
𝑉 = {𝑆} , variabel
𝑇 = {𝑎, 𝑏} , penghubung
𝑆 = variabel awal
Dalam Tata Bahasa bebas konteks dikenal juga Bahasa yang dimiliki oleh
Tata Bahasa (Bahasa dari Tata Bahasa). Definisi Bahasa dari Tata Bahasa yaitu
* “
Untuk sebuah tata Bahasa 𝐺 dengan variabel awal 𝑆 maka 𝐿(𝐺) = {𝑤: 𝑆 ⟹ 𝑤, 𝑤 ∈
𝑇 ∗ dengan w adalah string dari penghubung (terminal) atau 𝜆 .
Setelah penjelasan singkat mengenai tata Bahasa bebas konteks, maka akan
diberikan contoh dari tata Bahasa bebas konteks yaitu
𝐿 = {𝑎𝑛 𝑏 𝑛 : ≥ 0}
Dimana 𝐿 adalah Bahasa bebas konteks dan karena 𝐺: 𝑆 → 𝑎𝑆𝑏|𝜆 adalah tata Bahasa
bebas konteks maka membangun 𝐿(𝐺) = 𝐿.
Derivasi Order dan Derivasi Trees (Pohon)
Contoh derivasi order, misalkan diberikan tata Bahasa dengan 5 hasil seperti berikut
1. 𝑆 → 𝐴𝐵
2. 𝐴 → 𝑎𝑎𝐴
3. 𝐴 → 𝜆
4. 𝐵 → 𝐵𝑏
5. 𝐵 → 𝜆
Pada setiap langkah kita mensubtitusi variabel paling kiri. Sedangkan, untuk order
derivasi paling kanan dari string aab adalah
1 4 5 2 3
𝑆 ⟹ 𝐴𝐵 ⟹ 𝐴𝐵𝑏 ⟹ 𝐴𝑏 ⟹ 𝑎𝑎𝐴𝑏 ⟹ 𝑎𝑎𝑏
Pada setiap langkah kita mensubtitusi variabel paling kanan. Setelah diberikan contoh
dari derivasi order maka berikut ini contoh dari derivasi pohon. Misalkan contoh tata
Bahasa yang sama berikut ini
𝑆 → 𝐴𝐵 𝐴 → 𝑎𝑎𝐴|𝜆 𝐵 → 𝐵𝑏|𝜆
A B
A B
a a A
A B
a a A B b
A B
a a A B b
Sehingga diperoleh derivasi pohon 𝑆 ⟹ 𝐴𝐵 ⟹ 𝑎𝑎𝐴𝐵 ⟹ 𝑎𝑎𝐴𝐵𝑏 ⟹ 𝑎𝑎𝐵𝑏 ⟹ 𝑎𝑎𝑏
dengan hasil 𝑎𝑎𝜆𝜆𝑏 = 𝑎𝑎𝑏.
A B
a a A B b
A B
a a A B b
Namun terdapat kasus dimana untuk derivasi pohon terjadi ambiguitas (dua
makna). Definisi dari ambiguitas tata Bahasa yaitu “ suatu tata Bahasa bebas konteks
𝐺 dikatakan ambigu jika terdapat string 𝑤 ∈ 𝐿(𝐺) yang mempunyai dua derivasi
pohon yang berbeda atau dua derivasi paling kiri”.
RESUME 07
Tata bahasa merupakan suatu aturan produksi. Mencari turunan suatu string
dengan aturan produksi yang banyak membutuhkan simplifikasi. Dengan adanya
simplifikasi dapat membantu untuk melihat apakah suatu aturan produksi berguna
atau apakah dapat berlaku untuk suatu terminal.
Pada pembahasan kali ini juga dikenal sebuah aturan yaitu aturan substitusi.
Contohnya pada tata Bahasa
𝑆 → 𝑎𝐵
𝐴 → 𝑎𝑎𝐴
𝐴 → 𝑎𝑏𝐵𝑐
𝐵 → 𝑎𝐴
𝐵→𝑏
kita akan mensubtitusi 𝐵 → 𝑏 sehingga tata Bahasa diatas akan ekuivalen dengan,
𝑆 → 𝑎𝐵 |𝑎𝑏
𝐴 → 𝑎𝑎𝐴
𝐴 → 𝑎𝑏𝐵𝑐 | 𝑎𝑏𝑏𝑐
𝐵 → 𝑎𝐴
𝜀 − produksi ∶ X → ε
Variabel Nullable ∶ Y ⇒ ⋯ ⇒ ε
𝑆 → 𝑎𝑀𝑏
𝑀 → 𝑎𝑀𝑏
𝑀→𝜀
𝑆 → 𝑎𝑀𝑏 |𝑎𝑏
𝑀 → 𝑎𝑀𝑏 | 𝑎𝑏
Pada simplifikasi dari tata Bahasa bebas konteks juga terdapat unit produksi
dimana,
Contoh,
𝑆 → 𝑎𝐴
𝐴 →𝑎
𝐴→𝐵
𝐵→𝐴
𝐵 → 𝑏𝑏
𝑆 → 𝑎𝐴 | 𝑎𝐵
𝐴 →𝑎
𝐵 →𝐴|𝐵
𝐵 → 𝑏𝑏
S → aA | aB S → aA | aB
A→a Remove A→a
B → A| B B→B B→A
B → bb B → bb
Selanjutnya subtitusi 𝐵 → 𝐴
S → aA | aB S → aA | aB
A→a Remove A→a
B → A| B B→B B→A
B → bb B → bb
Selanjutnya hapus produksi yang berulang sehingga diperoleh hasil akhir sebagai
berikut,
S → aA | aB | aA S → aA | aB
A→a A→a
B → bb B → bb
Sering kali terdapat tata Bahasa dengan produksi yang tidak berguna
contohnya sebagai berikut,
S → aSb
S →
S→A
A → aA Useless Production
Dimana derivasinya tidak pernah berhenti,
𝑆 ⟹ 𝐴 ⟹ 𝑎𝐴 ⟹ 𝑎𝑎𝐴 ⟹ ⋯ ⟹ 𝑎𝑎 … 𝑎𝐴 ⟹ ⋯
S → aSb
S → Productions
useless A → aA useless
𝑆 → 𝑎𝑆 | 𝐴 |𝐶
𝐴→𝑎
𝐵 → 𝑎𝑎
𝐶 → 𝑎𝐶𝑏
Langkah 1. Cari semua variabel yang dapat memproduksi string – string hanya
dengan terminal atau 𝜀 (variabel berguna yang mungkin). Pertama { 𝐴, 𝐵} sisi kanan
dari produksi yang hanya mempunyai terminal. Kedua { 𝐴, 𝐵, 𝑆} sisi kanan dari
produksi dengan terminal dan variabel dari langkah sebelumnya. Proses ini dapat
digeneralisasi.
𝑆 → 𝑎𝑆 | 𝐴
𝐴→𝑎
𝐵 → 𝑎𝑎
Langkah 3. Cari semua variabel yang dapat dicapai dari S. dimana A merupakan
variabel yang dapat dicapai dari S dan B tidak. Lakukan penghapusan terhadap
variabel yang tidak dapat dicapai dari S sehingga diperoleh hanya variabel yang
berguna,
𝑆 → 𝑎𝑆 | 𝐴
𝐴→𝑎
Hasil ini menjamin bahwa semua variabel dan produksi yang tidak diinginkan
dihapus.
S → ABTa
S → ABa A → TaTaTb
A → aab B → ATc
B → Ac Ta → a
Tb → b
Tc → c
Simbol variabel intermediate baru 𝑉1 untuk memecahkan produksi
pertama S → AV1
S → ABTa
V1 → BTa
A → TaTaTb
A → TaTaTb
B → ATc
B → ATc
Ta → a
Ta → a
Tb → b
Tb → b
Tc → c
Tc → c
Simbol variabel intermediate baru 𝑉2
S → AV1
S → AV1
V1 → BTa
V1 → BTa
A → TaV2
A → TaTaTb
V2 → TaTb
B → ATc
B → ATc
Ta → a
Ta → a
Tb → b
Tb → b
Tc → c
Tc → c
Maka diperoleh bentuk akhir dari bentuk normal Chomsky
S → AV1
V1 → BTa
A → TaV2
V2 → TaTb
B → ATc
Ta → a
Tb → b
Tc → c
𝐴 → 𝐶1 𝑉1
𝑉1 → 𝐶2 𝑉2
𝑉𝑛−2 → 𝐶𝑛−2 𝑉𝑛
𝐴 → 𝑎𝑉1 𝑉2 … 𝑉𝑘 𝑘≥0
𝑆 → 𝑐𝐴𝐵
𝐴 → 𝑎𝐴|𝑏𝐵|𝑏
𝐵→𝑏
Konversi tata bahasa yang bukan bentuk normal Greinbach ke bentuk normal
Greinbach
𝑆 → 𝐴𝑇𝑏 𝑆𝑇𝑏
𝑆 → 𝑎𝑏𝑆𝑏
𝑆 → 𝑎𝑇𝑎
𝑆 → 𝑎𝑎
𝑇𝑎 → 𝑎
𝑇𝑏 → 𝑏
RESUME 08
Simbol spesial
bagian bawah pada
saat waktu 0
State pada PDA digambarkan dengan,
Input Pop Push
a, b → c
q1 q2
Sebagai contoh state diatas dimana 𝑎 sebagai input dan 𝑏 berada pada posisi top
kemudian pop 𝑏 lalu dilakukan pergantian dengan push 𝑐.
b top c
h Replace
h
e e
$ $
Karena PDA merupakan perluasan dari NFA maka PDA menerima transisi
NFA. Contohnya PDA 𝑀 ∶ 𝐿(𝑀) = { 𝑎𝑛 𝑏 𝑛 : 𝑛 ≥ 0 }
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
Dengan pemikiran dasar dilakukan push a pada stack, pasangkan b pada input dengan
a pada stack, pasangan ditemukan. Contoh eksekusi yang diterima aaabbb
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
Langkah 1. Mulai dari state awal 𝑞0 , karena transisi 𝑞0 bernilai 𝜆 maka langsung
menuju state 𝑞1 .
Langkah 3. Selanjutnya dibaca b lalu pop a dan seterusnya sebanyak tiga kali.
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
Langkah 1. Mulai dari state awal 𝑞0 , karena transisi 𝑞0 bernilai 𝜆 maka langsung
menuju state 𝑞1 .
Langkah 4. Tersisa satu stack 𝑎. Berakhir ada state 𝑞2 yang bukan accepting state
sehingga string ditolak.
Tidak ada komputasi apapun yang menerima string aab. String aab ditolak oleh PDA.
a , w1 → w 2
q1 q2
a , eb → cdf
q1 q2
Maka
top c
String
e top
d String
Pop b f Push
h Replace
h
e e
$ $
Selain digambarkan seperti diatas dapat juga dengan transisi
pop
a, e → a, b →
q1
, → push
a, → f a, → d a, → c q2
a , w1 → w 2
q1 q2
maka fungsi transisinya dinotasikan dengan 𝛿(𝑞1 , 𝑎, 𝑤1 ) = { (𝑞2 , 𝑤2 )}. Dengan
definisi PDA 𝑀 = ( 𝑄 , Σ , Γ , δ, 𝑞_0, 𝑧, 𝐹) dimana,
𝑄 = state
Σ = Input
Γ = stack
𝛿 = Fungsi transisi
𝑞0 = state awal
𝐹 = Accept state
𝑞 = 𝑐𝑢𝑟𝑟𝑒𝑛𝑡 𝑠𝑡𝑎𝑡𝑒
𝑢 = 𝑟𝑒𝑚𝑎𝑖𝑛𝑖𝑛𝑔 𝑖𝑛𝑝𝑢𝑡
Langkah 1. Mulai dari state awal 𝑞0 , karena transisi 𝑞0 bernilai 𝜆 maka langsung
menuju state 𝑞1 .
Langkah 3. Selanjutnya dibaca b lalu pop a dan begitu seterusnya sebanyak tiga kali.
a, → a b, a →
q0 , → q1 b, a → q2 , $ → $ q3
*
Bahasa yang diterima oleh PDA 𝑀 ∶ 𝐿(𝑀) = { 𝑤 ∶ (𝑞0 , 𝑤, 𝑧) ≻ (𝑞𝑓 , 𝜆, 𝑠)} .
RESUME 09
Merancang PDA
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Misalkan input string aabbbcc maka,
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Langkah 2. Diinput a, maka pop a, lalu push aa
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Langkah 3. Diinput b, maka pop a kemudian push a
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Langkah 4. Diinput b, maka pop a kemudian push a
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Langkah 5. Diinput b, maka pop a kemudian push a (pada stack tersisa aa)
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Langkah 6. Diinput c, maka pop a dan tidak ada yang di push
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Langkah 7. Diinput c, maka pop a dan tidak ada yang di push
𝑎, 𝑎 → 𝑎𝑎 𝑏, 𝜆 → 𝜆
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝑎 𝑐, 𝑎 → 𝜆 𝜆, $ → $
𝑏, 𝜆 → 𝜆
Langkah 8. Maka tersisa stack $, string diterima.
Selain contoh diatas contoh PDA yang lain dari Bahasa bebas konteks adalah :
Contoh 1.
𝐿(𝑀) = { 𝑎𝑛+𝑚 𝑏 𝑛 𝑐 𝑚 |𝑛, 𝑚 ≥ 1 }, dimana 𝑎𝑛 dan 𝑎𝑚 di push kemudian 𝑎𝑛 di
pop oleh 𝑏 𝑛 dan 𝑎𝑚 akan di pop oleh 𝑐 𝑚 . Dengan PDA sebagai berikut
𝑎, 𝑎 → 𝑎𝑎
𝑎, $ → 𝑎$
𝑏, 𝑎 → 𝜆 𝑐, 𝑎 → 𝜆
q0 q1 q2 q3
𝑏, 𝑎 → 𝜆 𝑐, 𝑎 → 𝜆 𝜆, $ → $
Contoh 2.
𝐿(𝑀) = { 𝑎𝑛 𝑏 𝑛+𝑚 𝑐 𝑚 |𝑛, 𝑚 ≥ 1 }, dimana 𝑎𝑛 di push kemudian 𝑎𝑛 di pop
oleh 𝑏 𝑛 selanjutnya push 𝑏 𝑚 lalu di pop oleh 𝑐 𝑚 . Dengan PDA sebagai
berikut
𝑏, 1 → 11
𝑎, 0 → 00 𝑏, $ → 1$
𝑎, $ → 0$
𝑏, 0 → 𝜆 𝑐, 1 → 𝜆
q0 q1 q2 q3
𝑏, 0 → 𝜆 𝑐, 1 → 𝜆 𝜆, $ → $
𝑎, 0 → 00
1, 0 → 𝜆
𝑎, $ → 0$
𝑏, 1 → 11 𝑐, 1 → 𝜆
q0 q1 q2 q3
𝑏, 0 → 10 𝑐, 1 → 𝜆 𝜆, $ → $
Contoh 3.
𝐿(𝑀) = { 𝑎𝑛 𝑏 2𝑛 |𝑛 ≥ 1 }, dimana 𝑎𝑛 di push kemudian 𝑎𝑛 di push lagi
setelah itu dipop oleh 𝑏 𝑛 sehingga hanya 1⁄2 stack yang terhapus. Dengan
PDA sebagai berikut
𝑎, 0 → 000
𝑎, $ → 00$ 𝑏, 𝜆 → 0
q0 q1 q2
𝑏, 𝜆 → 0 𝜆, $ → $
atau
𝑎, 0 → 00
𝑎, $ → 0$
𝑏, 0 → 𝜆 q2
q0 q1 q3
𝑏, 0 → 0 𝜆, $ → $
𝑏, 0 → 0
Catatan : Untuk suatu 𝐿(𝑀) yang bukan Bahasa bebas konteks maka PDA
tidak dapat dikonstruksi contohnya 𝐿(𝑀) = { 𝑎𝑛 𝑏 𝑛 𝑐 𝑛 |𝑛 ≥ 1 }.
Selain PDA yang deterministik, PDA dapat juga dalam bentuk Non –
Deterministik atau biasa disebut Non – Deterministic PDA contohnya 𝐿(𝑀) =
{ 𝑤𝑤 𝑅 | 𝑤 ∈ {𝑎, 𝑏}+ } dengan PDA sebagai berikut
𝑎, 1 → 01
𝑎, 0 → 00 𝑏, 1 → 𝜆
𝑎, $ → 0$ 𝑎, 0 → 𝜆
q0 q1 q2
𝑎, 0 → 𝜆 𝜆, $ → $
𝑏, 1 → 𝜆
𝑏, $ → 1$
𝑏, 1 → 11
𝑏, 0 → 10
Misalkan string abba maka dengan pohon parsing diperoleh alur untuk string abba
yang diterima dan string abba yang ditolak.
𝑎𝑏𝑏𝑎, 𝑞0 , $
𝑏𝑏𝑎, 𝑞0 , 0$
𝑏𝑎, 𝑞0 , 10$
𝑎, 𝑞0 , 0$ 𝑎, 𝑞0 , 110$
𝜆, 𝑞0 , $ 𝜆, 𝑞0 , 0110$
DITERIMA DITOLAK