MODUL 5:
Nondeterministic Finite Automata dengan Transisi-Λ (NFA-ΛΛ Λ)
Dengan konsep nondeterministisme dari suatu
ekspresi regular suatu NFA yang dapat menerima bahasa ybs dapat langsung dilakukan.
Namun, masih terdapat kasus-kasus dimana hal ini tidak dapat dilakukan secara sederhana.
Contoh: 0*(01)* dapat dipandang sebagai sebagai konkatenasi dua ekspresi regular 0* dan (01)*. Bahasa-bahasa dari ekspresi-ekspresi tsb diterima oleh FA-FA sebagai berikut.
r2 q1 q2 0,1 0 1 1 0 0 q0 r1 0,1 1
Bahasa dari ekspresi regular 0*(01)* dapat
dikenal oleh NFA yang dibentuk dari kedua FA di atas sebagai berikut ini.
Transisi dari q0 ke q1 diperlukan untuk menerima 0* sementara transisi dari q0 ke q2 diperlukan untuk menerima (01)*. 0 q0 r2 q1 q2 0,1 0 1 1 0 0 0 r1 0,1 1
• Aturan penambahan transisi yang melengkapi “konkatenasi” kedua FA semula tidaklah bisa dengan sederhama dijelaskan.
• Dalam konkatenasi lain bahkan bisa lebih rumit apabila status menerima FA pertama berjumlah cukup banyak.
Seandainya NFA bisa memiliki transisi tanpa simbol masukan (kita sebut transisi-Λ) maka Λ kontatenasi tersebut dapat dilakukan hanya seperti pada diagram berikut ini.
0 q0 r2 q1 q2 0,1 0 1 1 0 Λ r1 0,1 1
• Diagram ini bukanlah NFA, tetapi NFA-Λ.
• NFA-Λ ini dapat mengenali bahasa yang sama dengan bahasa yang dikenali oleh NFA
sebelumnya
• struktur yang lebih sederhana dan lebih mencerminkan konkatenasi kedua FA asal melalui transisi Λ.
Definisi: suatu NFA dengan transisi-Λ (disingkat NFA-Λ) merupakan 5-tuple (Q, Σ, q0, A, δ)
dimana Q dan Σ merupakan
himpunan-himpunana terbatas, qo ∈ Q dan A ⊆ Q, serta δ terdefinisi sebagai pemetaan sbb.
δ: Q × (Σ ∪ Λ)→ 2Q
Perhatikan: domain dari δ adalah Σ dan Λ. NFA δ: Q × Σ → 2Q
Fungsi perluasan transisi δδ*
Karena adanya transisi-Λ, jumlah transisi yang diaplikasikan pada δ* bisa lebih besar dari
panjang string.
Contoh: string 01 akan dikenali sebagai 0ΛΛ1Λ seolah sejumlah “simbol palsu Λ” disisipkan
pada string.
Λ
Λ-closure dari Himpunan Status S atau ΛΛ(S) Untuk memahami definisi δ* akan diperkenalkan konsep Λ-closure (lingkupan-Λ) sbb.
Λ(S) adalah seluruh status dalam S tersebut
beserta status-status lain yang dapat tercapai oleh masing-masing status dalam S melalui satu atau beberapa transisi Λ (Jadi S ⊆ Λ(S)).
Definisi Λ(S) Λ
Pada suatu NFA- Λ M = (Q, Σ, q0, A, δ) dan S ⊆
Q, suatu fungsi Λ(S) didefinisikan sebagai berikut:
• Setiap anggota S merupakan anggota Λ(S).
• Untuk setiap q ∈ Λ(S), setiap anggota δ(q, Λ) adalah anggota Λ(S).
• Tidak ada anggota lain dari Q yang anggota
Algoritma Pencarian Λ(S) Λ
• Inisialisasi T1 = S.
• Lakukan iterasi dari i =1, 2, 3,… , dan pada iterasi ke-i:
• Ti+1 = Ti
• Untuk setiap q ∈ Ti, gabungkan δ(q, Λ) ke dalam Ti+1.
• Iterasi berhenti saat Ti+1 = Ti (artinya tidak ada status baru yang bergabung dalam T).
Λ Λ Λ Λ S Λ(S) Λ Λ Λ Λ Λ Λ Λ
Definisi δδ* untuk NFA-Λ Λ
Pada setiap NFA-Λ M = (Q, Σ, q0, A, δ) fungsi δ*:
Q × (Σ* ∪ Λ) → 2Q didefinisikan sbb.
• Untuk setiap q ∈ Q maka δ*(q, Λ) = Λ({q}).
• Dan untuk setiap y ∈ Σ*, a ∈ Σ, dan q ∈ Q
Λ = ∈
U
( , ) * * ) , ( ) , ( y q p a p ya q δ δ δAlgoritma untuk mendapatkan δ*(q, ya):
• menentukan δ*(q, y)
• mendapatkan himpunan gabungan dari setiap
δ(p, a) untuk setiap p ∈ δ*
(q, y)
• menentukan Λ( ) dari himpunan gabungan tersebut.
Selanjutnya δ*(q, y) dicari dengan cara yang sama dengan di atas dimana y = xb.
q y a a a a δ* (q,y) δ * (q,ya) Λ Λ Λ Λ Λ Λ Λ ya
NFA-Λ M Sebagai Mesin Pengenal Bahasa Λ Untuk suatu NFA-Λ M = (Q, Σ, q0, A, δ)
• String x diterima oleh M bila δ*(q0, x) ∩ A ≠ ∅
• Bahasa yang dikenali oleh M adalah L(M) yaitu semua string yang diterima oleh M.
Contoh: suatu NFA-Λ ditunjukkan pada gambar berikut ini. w 1 q0 p t r u s v 0 0 1 0 0 1 0 Λ Λ Λ Λ Λ
Mencari Λ({s}):
Mula-mula T = {s},
setelah iterasi pertama, T = {s, w},
setelah iterasi kedua menjadi{s, w, q0},
setelah iterasi ketiga menjadi {s, w, q0, p, t}, setelah iterasi keempat berhenti karena T tidak berubah lagi.
Mencari δ*(q0, 010):
Untuk mencari δ*(q0, 010) perlu diketahui δ*(q0, 01), lalu untuk mencari δ*(q0, 01) perlu diketahui
δ*
(q0, 0), dan untuk mencari δ*(q0, 0) perlu diketahui δ*(q0, Λ), sbb. δ* (q0, Λ) = Λ({q0}) = {q0, p, t} δ* (q0, 0) = Λ(δ(q0,0) ∪ δ(p,0) ∪ δ(t,0)) = Λ(∅ ∪ {p} ∪ {u}) = Λ({p, u}) = {p, u} δ* (q0, 01) = Λ(δ(p,1) ∪ δ(u,1)) = Λ({r}) = {r} δ* (q0, 010) = Λ(δ(r,0)) = Λ({s}) = {s, w, q0, p, t}
Apakah 010 diterima?
Karena δ*(q0, 010) berisi w ∈ A maka 010 diterima.
Dalam hal ini transisi yang terjadi akibat string
Λ010Λ adalah
Kompatibilitas NFA-Λ dengan NFA Λ Sebelumnya telah ditunjukkan bahwa NFA tidak lebih powerful dari FA dalam kemampuannya mengenali bahasa.
Dari setiap NFA dapat ditemukan suatu FA. Bagaimana dengan NFA-Λ terhadap NFA atau FA? Apakah juga tidak lebih powerful?
Teorema: Bila L ⊆ Σ* suatu bahasa yang
diterima NFA-Λ M = (Q, Σ, q0, A, δ), maka akan terdapat suatu NFA M1 = (Q1, Σ, q1, A1, δ1) yang juga menerima L.
Transisi-Λ adalah jenis lain dr nondeterminisme. Misalnya dalam M terdapat transisi
p → q → r
Simbol 0 dapat membawa M dari p ke q atau r.
Maka suatu NFA M1 dapat dibuat dari M dengan menghapus transisi-Λ dan menggantikannya
dengan transisi dari p ke r dengan masukan simbol 0.
Dalam konversi ini himpunan status Q tidak
berubah, demikian pula status inisialnya. Secara lebih formal dijabarkan dalam:
• Menentukan δ1 dari δ
Menentukan δδ1
Perubahan yang terjadi pada fungsi transisi δ menjadi δ1 adalah karena adanya tambahan transisi-transisi yang menggantikan transisi-Λ tsb.
Untuk setiap q ∈ Q dan a ∈ Σ,
δ1(q, a) = δ * (q, a) Λ = Λ = Λ = Λ ∈ Λ ∈
U
( , )U
({ }) * ) , ( ) , ( ) , ( * p q q p a p a p a q δ δ δ δq Sejumlah transisi-Λ a a a a δ* (q,y) δ1(q, a) U }) ({ ) , ( q p a p Λ ∈ δ Λ Λ Λ Λ
Pendefinisian δ1 seperti itu dimaksudkan agar
δ1 *
(q, a) dari NFA M1 adalah semua status yang dapat tercapai oleh NFA-Λ M dari status q
berdasarkan masukan string tak-kosong x
(termasuk setiap kemungkinan transisi-Λ). Dpl., untuk membuktikan bahwa
δ1 *
(q, x) = δ*(q, x)
Secara induksi struktural matematis akan
δ1(q, a) = δ *
(q, a) = δ*(q, x) Dengan hipotesis bahwa δ1*(q, x) = δ*(q, x), untuk x = ya, dengan y
∈ Σ*
, |y|≥1 dan a ∈ Σ, maka
U
U
U
) , ( * ) , ( 1 ) , ( 1 * * * * 1 1 ) , ( ) , ( ) , ( ) , ( y q p y q p y q p a p a p ya p ya q δ δ δ δ δ δ δ ∈ ∈ ∈ = = =Karena setiap δ*(p, a) adalah Λ-closure maka setelah digabungkan juga Λ-closure. Jadi Λ -closure dari himpunan yang dihasilkan ruas terakhir tersebut sama dengan himpunan itu sendiri, sbb. ya q a p a p y q p y q p , ( ) , ( ) , ( * ) , ( * ) , ( * * * δ δ δ δ δ = Λ = ∈ ∈
U
U
)Menentukan A1 dari A
A1 bisa berbeda dari A. Suatu status inisial q0 yang bukan status menerima akan menjadi status menerima apabila di dalam Λ({q0}) terdapat status menerima. Dituliskan secara formal sbb.
∪ Λ ∩ ≠ = lainnya dalam }) ({ jika } { 0 0 1 A M A q q A A E
Teorema: Untuk suatu alfabet Σ, setiapa bahasa
L ⊂ Σ*, ketiga pernyataan berikut ini adalah ekivalen (jika salah satu benar maka kedua lainnya juga benar):
1.L dapat dikenali oleh suatu FA. 2.L dapat dikenali oleh suatu NFA. 3.L dapat dikenali oleh suatu NFA-Λ.
Bukti: Teorema-teorema sebelumnya menyatakan bahwa pernyataan ketiga
berimplikasi pernyataan kedua dan pernyataan kedua berimplikasi pernyataan pertama. Jadi untuk membuktikan teorema di atas cukup
dengan membuktikan bahwa pernyataan pertama berimplikasi pernyataan ketiga.
Jika suatu bahasa L diterima oleh FA M = {Q, Σ,
dapat dibentuk untuk menerima L sebagai berikut.
δ1: Q × (Σ ∪ {Λ}) → 2
Q
didefinisikan dengan formula (untuk setiap q ∈
Q, dan setiap a ∈ Σ).
δ1(q, Λ) = ∅
δ1(q, a) = {δ (q,a)}
Formula pertama menyatakan dalam M1 tidak ada transisi-Λ, dan yang kedua menyatakan fungsi
transisi δ1 dan δ adalah identik kecuali jika δ memetakan ke suatu status, δ1 memetakan ke
himpunan yang hanya berisi status tersebut. Jadi, dalam hal ini, NFA-Λ M1 tidak ada
nondeterminisme.
Berikut ini beberapa contoh mengeliminasi transisi-Λ dari NFA-Λ menjadi NFA, dan mengkonversinya menjadi FA.
Contoh: berikut ini, M adalah NFA-Λ yang menerima bahasa {0}*{01}*{0}*.
Fungsi transisi digambarkan dalam tabel transisi serta harga-harga δ*(q, 0) dan δ*(q, 1) misalnya.
A B D C 0 Λ Λ 1 0 0 Λ = Λ ∈
U
({ }) * ) 0 , ( ) 0 , ( A p p A δ δDengan fungsi transisi δ1 (p, a) = δ*(p, a) untuk semua status p dan simbol a diperoleh tabel sbb.
q δ (q, ΛΛ) δ (q, 0) δ (q, 1) δ*(q, 0) δ* (q, 1)
A {B} {A} ∅ {A,B,C,D} ∅
B {D} {C} ∅ {C,D} ∅
C ∅ ∅ {B} ∅ {B,D}
D ∅ {D} ∅ {D} ∅
Status A menjadi status menerima karena dalam
M status D dapat dicapai dari A dengan duakali
0 0 0 1 1 1 1 1 0,1 0 A ∅ D CD BD ABCD 0
Dengan demikian NFA
M1 yang diperoleh adalah sebagai di samping ini.
Dan Konversi NFA ke FA yang telah dibahas
pada topik NFA menghasilkan FA M2 berikut ini. 0 A B D C 0 0 0 1 0 0 10
Contoh: NFA disamping ini ini mengenali bahasa {0}*({01}*{1}∪{1}*{0}). A B E C 0 Λ 1 0 0 D 1 Λ 1
Tabel transisi berikut harga δ*(q, 0) dan δ*(q, 1) adalah.
q δ (q, ΛΛ) δ (q, 0) δ (q, 1) δ*(q, 0) δ* (q, 1)
A {B,D} {A} ∅ {A,B,C,D,E} {D,E}
B ∅ {C} {E} {C } {E}
C ∅ ∅ {B} ∅ {B}
D ∅ {E} {D} {E} {D}
NFA yang diperoleh adalah sebagai berikut. A B E C 0 0 1 0 0 D 1 0,1 1 0,1 0
Dari NFA di atas kemudian diperoleh FA sebagai berikut ini. 0 0 0 1 1 1 1 1 0,1 0 A DE E CE BD E ABCDE 0 D D D ∅ 0 0 0 1 1 0,1 0,1