Anda di halaman 1dari 10

LAPORAN TUGAS

STUDI MANDIRI TENTANG CHOMSKY HIERARCHY

Disusun untuk memenuhi tugas mata kuliah Teknik Kompilasi yang diampu
oleh Bapak Muhammad Jauharul Fuady, S.T., M.T.

Oleh Kelompok :

AHMAD FAJRUDDIN SYAUQI 200535626835

AKBAR HAMAMINATU 200535626825

ALVIAN RAHMADANI SAPUTRA 200535626826

UNIVERSITAS NEGERI MALANG


S1 TEKNIK INFORMATIKA OFFERING A
2023
A. Soal
Lakukan studi mandiri tentang Chomsky Hierarchy. Beri penjelasan yang rinci
untuk setiap language. Sertakan juga mesin yang dirancang dapat mengenali
language tersebut. Beri setidaknya dua contoh (beserta gambar) untuk setiap
mesin dalam setiap language.

B. Penyelesaian

Gambar 1. Chomsky Hierarchy

Chomsky hierarchy adalah sebuah sistem / kerangka teoritis untuk


mengelompokkan formal grammar dan bahasa di komputer sains. Hirarki ini
digunakan dalam teori bahasa formal dan linguistik untuk mengklasifikasikan
tipe-tipe berbagai tata bahasa berdasarkan tingkat kompleksitas mereka. Hirarki
ini dinamai dari ahli linguistik Noam Chomsky, yang mengembangkan konsep ini
pada tahun 1956.
Hirarki Chomsky terdiri dari empat tipe tata bahasa atau bahasa formal
yang masing-masing memiliki tingkat kompleksitas yang berbeda:

1. Type-3: Tata Bahasa Reguler (Regular Language)


Bahasa reguler adalah bahasa yang didefinisikan oleh regular grammar.
Tata bahasa ini terdiri dari salah satu dari dua bentuk berikut:
A → α,
A → αB.
Di sini, A dan B menunjukkan simbol non-terminal dan α adalah simbol
terminal. Karena regular grammar juga merupakan context-free,
non-terminal dapat dilihat sebagai simbol kategori dan tanda panah sebagai
‘terdiri dari’.
Menurut interpretasi lainnya, non-terminal adalah nama-nama dari states
of an automaton. Tanda panah ‘→’ melambangkan transisi keadaan yang
mungkin terjadi, dan terminal di sisi kanan menggambarkan efek samping
dari transisi ini.

Contoh:
● A→ε
● A→a
● A → abc
● A→B
● A → abcB

Karena ada banyak sekali non-terminal, regular grammar juga


digambarkan sebagai finite state automaton (FSA). Setiap FSA dapat
ditransformasikan menjadi FSA yang dideskripsikan oleh sebuah regular
grammar tanpa mengubah bahasa yang sedang dideskripsikan.
Tata bahasa ini menghasilkan bahasa yang dikenali oleh Finite State
Machine. FSM adalah computation model yang dapat digunakan untuk
mensimulasikan sequential logic untuk merepresentasikan control execution
flow.
Selain FSM terdapat pula Aperiodic finite state automaton atau biasa
disebut juga counter-free automaton.

Contoh 1:

Contoh 2:
Consider the following grammar G:
S → bS| aA| b
A → bA| aB
B → bB| aS |a
Let Na(w) and Nb(w) denote the number of a’s and b’s in a string w respectively.
The language L(G) ⊆ {a, b}+ generated by G is:
{w|Na(w) = 3k, k ∈ {0, 1, 2, …}}
2. Type-2: Tata Bahasa Bebas Konteks (Context-Free Language):

Tata bahasa bebas konteks adalah tipe bahasa yang lebih kompleks
daripada tata bahasa reguler. Dalam teori bahasa formal, Context-Free
Language (CFL) adalah bahasa yang dihasilkan oleh Context-Free Grammar
(CFG). CFG atau tata bahasa bebas konteks adalah tata bahasa yang sisi kiri
setiap aturan produksinya hanya terdiri dari satu simbol nonterminal:
A→α
Dimana A adalah satu non-terminal dan α adalah string dari terminal.
Tata bahasa ini menghasilkan bahasa yang dikenali oleh mesin Non
Deterministic Pushdown Automata atau nondeterministic PDA. PDA adalah
pengembangan dari finite state machine (FSM) yang memiliki tambahan
memori dalam bentuk tumpukan (stack) yang digunakan untuk mengelola
data dan mengenali tata bahasa kontekstual (context-free language)

Gambar n. Pushdown Automata


Ada juga variasi lain dari PDA yaitu Deterministic Pushdown Automata
(DPDA). Hal yang membedakan DPDA dari PDA biasa adalah sifat
deterministiknya. Kelebihan utama DPDA adalah kemampuannya untuk
mengenali tata bahasa kontekstual dengan struktur yang lebih kompleks
dengan efisiensi yang lebih tinggi daripada PDA nondeterministik (NPDA).
Karena sifat deterministiknya, DPDA tidak memerlukan backtracking saat
mengenali bahasa, sehingga DPDA lebih efisien dalam pengenalan bahasa.
DPDA digunakan dalam berbagai aplikasi, termasuk dalam kompiler
untuk analisis sintaksis bahasa pemrograman dan dalam pengenalan pola
dengan konteks tertentu. Meskipun DPDA lebih kuat daripada Finite State
Machine (FSM) dan dapat mengenali bahasa yang lebih kompleks, DPDA
masih terbatas pada pengenalan tata bahasa kontekstual dan tidak dapat
mengenali bahasa yang lebih kuat seperti tata bahasa rekursif.

Example 1: L1 = { anbn | n is a positive integer } is a context-free language.


For the following context-free grammar G1 = < V1 , , S , P1 > generates L1 :

V1 = { S } , = { a , b } and P1 = { S -> aSb , S -> ab }.

Example 2: L2 = { wwr| w {a, b }+ } is a context-free language , where


w is a non-empty string and wr denotes the reversal of string w, that
is, w is spelled backward to obtain wr . For the following context-free
grammar G2 = < V2 , , S , P2 > generates L2 :

V2 = { S } , = { a , b } and P2 = { S -> aSa , S -> bSb , S -> aa , S -> bb }.

3. Type-1: Tata Bahasa Context-Sensitive (Context-Sensitive Language):


Tata bahasa context-sensitive adalah tingkatan tata bahasa yang lebih
kuat dan kompleks daripada tata bahasa reguler (Regular Language) dan
tata bahasa bebas konteks (Context-Free Language). Dalam teori bahasa
formal, Context-Sensitive Language adalah bahasa yang dapat terdefinisi
oleh Context-Sensitive Grammar (CSG). CSG adalah tata bahasa yang sisi
kiri dan kanan dari setiap aturan produksinya dapat diapit oleh konteks
simbol terminal dan nonterminal.
αAβ → αγβ
Dimana A adalah satu non-terminal dan α,γ, dan β adalah string dari
terminal atau non-terminal.

Tata bahasa context-sensitive lebih umum dibandingkan tata bahasa


bebas konteks, dalam artian ada bahasa yang dapat dideskripsikan oleh CSG
tetapi tidak oleh tata bahasa bebas konteks. Secara komputasi, bahasa
context-sensitive sama dengan Linear Bounded Non-Deterministic Turing
Machine atau dikenal juga dengan Linear Bounded Automaton.
Linear Bounded Automaton (LBA) adalah mesin yang mengenali bahasa
context-sensitive. LBA sendiri adalah mesin deterministic yang berdasar
pada state, sebuah tape yang berisi input string, dan sebuah read/write head
yang bergerak ke kiri dan ke kanan di sekitar tape. Mesin ini membandingkan
state saat ini dan simbol pada tape pada posisi head dengan jumlah aturan
yang terbatas untuk menentukan state berikutnya, simbol mana yang akan
ditulis pada tape, dan ke arah mana head akan bergerak.
Sama seperti Finite Automata dan Pushdown Automata, linear bounded
automata menerima atau menolak sebuah input berdasarkan apakah mereka
berhenti pada state yang diterima atau tidak. Sebuah LBA berhenti ketika
tidak ada aturan untuk kombinasi saat itu dari state yang sementara dibaca.
Mesin ini sebenarnya adalah salah satu bentuk terbatas dari Turing
machine. Kedua mesin sama-sama menggunakan tap, tetapi pada mesin ini
adalah finite yaitu terbatas. LBA terdiri atas 8 tuples:
Q = himpunan states
Σ = himpunan simbol input
Γ = simbol dalam pita
├ = left endmaker (kiri)
┤ = right endmaker (kanan)
δ = fungsi transisi
S = state awal
F = himpunan state akhir

Bisa kita beri contoh tata bahasa context-sensitive


Aaac → bBcd
aaCD → ddCCA
Dan
AB → CDB
AB → CdEB
ABcd → abCDBcd
B→b

4. Type-0: Tata Bahasa Rekursif (Recursively Enumerable Language):


Tata bahasa ini mencakup seluruh tata bahasa formal. Tata bahasa tipe ini
dapat diterima dan dikenali menggunakan Turing Machine.

Tipe ini merupakan tipe dengan kompleksitas tertinggi, namun dengan


batasan paling longgar atau bahkan tanpa batasan.
Tata bahasa rekursif tertutup pada operasi Kleene Star, Concatenation,
Union, dan Intersection, namun tidak dapat tertutup oleh Complement.

Tata bahasa ini dapat dituliskan sebagai berikut :


G = (Σ,N,S,P), dimana
• Σ adalah himpunan dari terminal symbols,
• N adalah himpunan dari non-terminal symbols (N ∩Σ = /0),
• S ∈ N adalah titik awal
• P adalah himpunan terbatas dari rules atau productions.

Setiap production adalah dalam bentuk :


α→β
Di mana α, β ∈ (Σ ∪ Z ) ∗ dengan α mengandung setidaknya satu
non-terminal symbol

Contoh 1
• L1 = {a²ⁿ | n > 0}.
• Productions:
S → TaU
U → ε | AU
aA → Aaa
TA → T
T→ε
• Derivation of a⁸ using these productions:
S → TaU → TaAU → TaAAU → TaAAAU → TaAAA → TAaaAA → TaaAA →
TaAaaA → TAaaaaA → TaaaaA → TaaaAaa → TaaAaaaa → TaAaaaaaa →
TAaaaaaaaa → Taaaaaaaa → aaaaaaaa

Contoh 2
• L2 = {aⁿbⁿ cⁿ | n > 0}.
• Productions:
S → UT
U → ε | aUbC
Cb → bC
CT → Tc
T→ε
• Derivation of a³b³c³ using these productions:
S → UT → aUbCT → aaUbCbCT → aaaUbCbCbCT → aaabCbCbCT →
aaabCbbCCT → aaabbCbCCT → aaabbbCCCT → aaabbbCCTc →
aaabbbCTcc → aaabbbTccc → aaabbbccc

Anda mungkin juga menyukai