Diktat Kuliah: Finite Automata
Author: Suryana Setiawan, MSc., Fak. Ilmu Komputer UI
DEFINISI FA Suatu Finite Automaton (FA) atau kadang-kadang disebut Finite State Automaton (FSA) adalah mesin yang dapat mengenai bahasa regular tanpa menggunakan storage/memory. Kecuali, sejumlah status dapat didefinisikan pada mesin untuk “mengingat” beberapa hal secara terbatas. Secara formal FA didefinisikan sebagai berikut. Definisi: Suatu finite automaton (FA) atau Mesin Status-Berhingga adalah 5-tuple (Q , Σ ,q0, A, δ), yang mana: • Q adalah himpunan berhingga dari status • Σ himpunan berhingga alfabet dari simbol masukan • q0 ∈ Q adalah status inisial (awal) • A ⊆ Q yaitu himpunan status menerima (accepting state, kadang-kadang disebut final state) • δ adalah fungsi transisi yang memetakan Q × Σ ke Q (ditulis δ:Q × Σ → Q ) Baris terakhir dijelaskan sebagai berikut. Untuk status-status q, r ∈Q dan suatu simbol a ∈ Σ jika δ(q, a) = r terdefinisi, maka saat mesin berada dalam status q menerima masukan simbol a, mesin akan berubah/bertransisi ke status r. Dengan diagram status digambarkan dengan bulatan dan transisi dengan panah, sbb:
Diagram transisi FA dan tabel transisinya dapat digambarkan sebagai berikut.
δ Λ 0 1 00 01 10 11
masukan 0 0 00 10 00 10 00 10
0 1 1 01 11 01 11 01 11
00
0
1
0 0
1
Λ
01
0 0
1 0
1
1
10
1
a q
Contoh: bahasa regular L ⊆ {0,1}* yang setiap stringnya selalu memiliki akhiran 10 Bahasa ini bisa dinyatakan dengan ekspresi regular (0+1) *10. Untuk mengenalinya maka mesin memerlukan • empat status untuk menyimpan keempat kemungkinan dua simbol terakhir -kita sebut status -status tsb. 00, 01, 10, dan 11; • dua status ketika baru menerima satu simbol pertama -- kita sebut statusstatus 0 dan 1; dan • satu status untuk mesin berada di awal (belum menerima simbol) -- kita sebut status Λ.
Status
MODUL 3: FINITE AUTOMATA
r
Untuk pembahasan berikutnya pernyataan “M adalah suatu FA dengan himpunan status Q, masukan simbol alfabet Σ, dan status awal q0, serta himpunan status menerima A, dengan fungsi transisi δ,” kita singkat menjadi “M = (Q , Σ ,q0, A, δ) merupakan FA.”
Update Version 1.2.1, printed at 2:01 PM , 9/11/01
0 1
11
1 Dalam Topik FA Minimum akan dibahas apakah suatu FA sudah mencapai bentuk minimum (jumlah status paling sedikit). FA di atas belum minimum karena dapat disederhanakan lagi menjadi FA dengan tiga status saja, sbb.
page 1 of 5
Diktat Kuliah: Finite Automata
Author: Suryana Setiawan, MSc., Fak. Ilmu Komputer UI
Σ, dan q ∈ Q , berlaku δ*(q,a) = δ(q, a). Jadi untuk penggunaan string dengan panjang satu (1 simbol), maka kedua fungsi bisa dituliskan bertukaran.
Status
0 δ A B 10
masukan 0 1 A B 10 B A B
1 0
1 A
B
1
10
Selain itu dapat disimpulkan pula dari definisi tersebut bahwa jika x, y ∈ Σ * maka δ*(q,xy) = δ* (δ*(q, x), y). Ini bisa and buktikan dengan induksi matematis (silakan mencoba sebagai latihan!). Dari contoh di atas dapat diperlihatkan pula bahwa δ*(q,abc) = δ* (δ*(q, ab), c).
0
Perluasan fungsi transisi δ menja di δ
*
Bila δ(q, a) menyatakan status berikutnya setelah q dan mnerima input simbol a, maka δ*(q, x) menyatakan status berikutnya setelah q dan menerima input string simbol x. String x adalah string dari simbol-simbol dalam alfabet; x bisa juga Λ.
FA Sebagai Recognizer dari Bahasa Regular Dalam definisi suatu FA terdapat A yaitu himpunan status menerima. Apabila suatu string masukan membawa status FA dari status inisial ke salah satu status dalam A maka string tersebut diterima (dikenali) sebagai anggota bahasa ybs. Secara formal kita defiisikan sbb.
Jika x = a1a2… ak-1 ak maka δ*(q, x) adalah aplikasi dari fungsi transisi secara berulang simbol demi simbol pada x, dengan kata lain, δ*(q, x) = δ(δ(δ(…(δ(δ(q, a1),a2) …)…), ak-1), ak ).
Definisi Penerimaan String: Suatu M = (Q, Σ,q0, A, δ) merupakan suatu FA. Suatu string x dikatakan dikenal (diterima) oleh M jika δ*(q0, x) ∈ A. Jika suatu string tidak diterima maka string itu dikatakan tidak dikenal (ditolak) oleh M.
Untuk lebih formal maka kita definisikan sbb.
Definisi Penerimaan Bahasa: Suatu bahasa yang dikenal (atau diterima) oleh M adalah himpunan L(M) = {x ∈ Σ * | x dikenal oleh M} L adalah bahasa pada Σ dan L dikenal (atau diterima) oleh M, jika dan hanya jika L = L(M).
Definisi: M = (Q, Σ,q0, A, δ) merupakan FA. Terdefinisi suatu fungsi δ* yang memetakan Q × Σ * ke Q dengan sifat sebagai berikut: • untuk setiap q ∈ Q, berlaku δ*(q,Λ) = q • untuk setiap y ∈ Σ * , a ∈ Σ , dan q ∈ Q, berlaku δ*(q,ya) = δ(δ*(q, y), a) Contoh: Jika δ(q, a) = q1, δ(q1, b) = q2, dan δ(q2, c) = q3, maka δ* (q, abc) = δ(δ*(q, ab), c) = δ(δ(δ*(q, a), b), c) = δ(δ(δ(δ*(q, Λ), a), b), c) = δ(δ(δ(q, a), b), c) = δ(δ(q1, b), c) = δ(q2, c) = q3.
Relasi “jika dan hanya jika” di atas berarti suatu bahasa regular L dikatakan dikenal oleh M jika semua string dari L dikenali oleh M, serta sebaliknya, setiap string dari suatu bahasa regular L harus dikenal oleh M jika L tersebut dikenal oleh M dan menolak setiap string dalam L’.
Menurut definisi di atas δ*(q, a) harus dijabarkan sebagai δ(δ*(q, Λ), a). Namun, sebagai implikasi dari definisi maka dapat kita simpulkan bahwa untuk setiap a ∈
Teorema. Bahasa L pada Σ adalah regular jika dan hanya jika terdapat suatu FA yang mengenal L.
Update Version 1.2.1, printed at 2:01 PM , 9/11/01
page 2 of 5
Diktat Kuliah: Finite Automata
Author: Suryana Setiawan, MSc., Fak. Ilmu Komputer UI
Teorema ini juga menyatakan bahwa untuk setiap M, yaitu sebarang FA, terdapat ekspresi regular yang terkait dengan L(M); dan di lain pihak, untuk regular ekspresi r tersebut, terdapat suatu FA yang mengenal bahasa tsb. Contoh 1: Di samping ini diagram suatu FA dan kita akan mendapatkan ekspresi regular dari bahasa L yang dikenal FA tersebut.
C hanya dapat dicapai dari B dengan simbol a. b
a
B a
b 0,1 0
1
0
0 0
1
b
A
D
b
•
• •
•
1
1
1
B
Status A merupakan status inisial sekaligus status menerima, maka Λ∈ L. Setiap string x dimana δ*(A, x) = A adalah deretan simbol 0 dengan panjang merupakan bilangan genap. Kedua hal jika digabungkan menghasilkan ekspresi regular (00) *. Status D adalah status yang tidak akan pernah bertransisi ke status menerima. Jadi suatu string x dimana δ*(A, x) = D, tidak akan pernah menjadi prefiks dari string dalam L. Status terima B hanya dapat dicapai melalui status 1 yang langsung dicapai dari status A dengan jumlah genap simbol 1. Jika tidak terjadi transisi berulang ke status A (tidak revisit A) maka x memiliki juga ekspresi regular (11)+. Jika terjadi transisi berulang ke status A maka ekspresi regularnya menjadi (00) *(11)+. Menggabungkan kedua status regular di atas maka: (00)* + (00) *(11)+ = (00) *( Λ + (11)+) = (00)*(11)*.
Contoh 2: Sekarang perhatikan diagram berikut ini dari suatu FA untuk string ∈ {a, b}*. Dalam FA tersebut status terima hanya satu yaitu E. Status ini hanya dapat dicapai dari D dengan simbol a. D hanya dapat dicapai dari C dengan simbol a.
Update Version 1.2.1, printed at 2:01 PM , 9/11/01
a
C a
a
0
E A
b D
B pertama kali dicapai dari A dengan simbol b. Sementara pada status mana pun setiap simbol b akan selalu membawa ke status B. Jadi setiap string yang membawa FA ke status terima E harus memiliki sufiks baaa. Ekspresi regularnya adalah: (a+b)*baaa Cara untuk mendapatkan ekspresi regular di atas adalah dengan cara yang kirakira (intuaitif). Cara yang lebih sistematis akan dibahas di topik mendatang.
OPERASI-OPERASI HIMPUNAN
Misalkan L1 dan L2 keduanya merupakan bahasa-bahasa regular pada alfabet Σ. Sudah tentu sesuai dengan Teorema 3.1 terdapat FA M1 dan M2 yang masingmasing mengenal L1 dan L2 . Sesuai definisi Bahasa Regular maka bahasa L1∪L2 adalah juga bahasa regular, yang juga akan dikenal oleh suatu FA. Bagaimana dengan irisan, kompelemen dan difference serta operasi-operasi himpunan lain? Untuk suatu bahasa regular L, maka jelas L’ (kompelemen dari L) adalah bahasa regular karena jika M = (Q, Σ,q0, A, δ) adalah FA untuk mengenal L maka M’ = (Q, Σ,q0, B, δ) dapat dibuat dengan menjadikan semua status yang bukan menerima di M menjadi menerima di M’ dan sebaliknya semua status menerima di M menjadi bukan status menerima M’. Atau, B = Q-A.
page 3 of 5
Diktat Kuliah: Finite Automata
Author: Suryana Setiawan, MSc., Fak. Ilmu Komputer UI
• Setiap operasi himpunan lain dapat dinyatakan sebagai operasi gabungan dan komplemen. Misalnya L1 ∩ L2 = (L1’ ∪ L2’)’, dan L1 - L2 = (L1’ ∪ L2)’. Dengan demikian setiap operasi himpunan pada beberapa bahasa regular akan menghasilkan bahasa regular. Dengan demikian juga akan ada mesin FA yang dapat mengenalnya. Masalahnya sekarang dapatkah kita membentuk mesin FA dari bahasa hasil operasi himpunan tersebut berdasarkan kombinasi mesin-mesin bahasa asalnya secara langsung? Berikut ini akan dibahas pembentukan FA untuk bahasa penggabungan kedua bahasa (L1∪L2). Untuk kasus irisan (L1∩L2) dan perbedaan (L1−L2) dapat dilakukan dengan sedikit modifikasi. Diberikan M 1 = (Q 1, Σ , q1, A1, δ1) dan M2 = (Q2, Σ, q2, A2, δ2) untuk mengenal masing L1 dan L2. Suatu FA M = (Q , Σ , q0, A, δ ) akan dibentuk dari M1 dan M 2 untuk dapat mengenal (L1∪L2). Ide dari pembentukan M adalah bahwa saat memeriksa suatu masukan string x ∈(L1∪L2) atau bukan adalah dengan melakukan sekaligus kedua pemeriksaan apakah x ∈ L1 dan x ∈ L2. Jadi dalam M akan terdapat status-status yang merupakan kombinasi antara status-status yang ada dalam M1 dengan M 2, dpl. untuk p ∈Q 1, q ∈Q2 akan ada status (p, q) ∈ Q. Demikian pula status inisial q0 adalah (q1, q2). Bila M berada dalam status (p, q), bila ia menerima simbol a maka ia akan bertransisi ke (δ1(p, a), δ2(q, a)).
Untuk perbedaan (L1−L2), himpunan status menerima A adalah himpunan status (p, q) yang mana p adalah status menerima dari M1 dan q bukan status menerima dari M2. Untuk lebih formal maka berikut ini teorema mengenai bahasa-bahasa operasioperasi penggabungan, irisan dan perbedaan tersebut. Teorema 3.4. Misalkan M 1 = (Q 1, Σ , q1, A1, δ1) dan M2 = (Q2, Σ, q2, A2, δ2) masing-masing mengenalL1 dan L2. Bila M = (Q, Σ , q0, A, δ) suatu FA dimana Q = Q1 × Q2 q0 = (q1, q2) δ terdefinisi sebagai δ((p, q), a) = (δ1(p,a), δ2(q,a)) untuk setiap p ∈Q1, q ∈Q2 dan a ∈ Σ maka, 1. Bila A = {(p, q) | p ∈A1 atau q ∈ A2}, M mengenal bahasa (L1 ∪ L2) 2. Bila A = {(p, q) | p ∈A1 dan q ∈ A2}, M mengenal bahasa (L1 ∩ L2) 3. Bila A = {(p, q) | p ∈A1 dan q ∉ A2}, M mengenal bahasa (L1 − L2) Contoh: misalkan L1 dan L2 ⊆ {0, 1} *, dengan L1 = { x | tidak ada substring 00 dalam x } L2 = { x | x berakhiran 10} Kedua bahasa ini sudah dibahas masing-masing sebagai contoh sebelumnya dengan diagram transisi sbb. 0, 1
1 0 A
B
1
0
C
Himpunan status menerima A adalah himpunan status (p, q) yang mana p atau q (salah satu atau keduanya!) adalah status menerima dari mesin-mesin asalnya. Perbedaan untuk FA bahasa-bahasa bentukan dari operasi irisan (L1∩L2) dan perbedaan (L1−L2) adalah terletak pada himpunan status menerima A tsb. • Untuk irisan (L1∩L2), himpunan status menerima A adalah himpunan status (p, q) yang mana p dan q (harus keduanya!) adalah status menerima dari mesin-mesin asalnya.
Update Version 1.2.1, printed at 2:01 PM , 9/11/01
0
1 P
0
1 Q
0
R
1
page 4 of 5
Diktat Kuliah: Finite Automata
Author: Suryana Setiawan, MSc., Fak. Ilmu Komputer UI
Masing-masing memiliki tiga status sehingga mesin baru yang dibentuk dari kedua mesin tsb. berisikan 9 status sbb. (untuk menyederhanakan penulisan maka kita tuliskan (A,P) sebagai AP, dst.). Q = {AP, AQ, AR, BP, BQ, BR, CP, CQ, CR} Status awal AP dari δ1(A, 0) = B dan δ2(P, 0) = Q , maka terdapat δ(AP, 0) = BQ dari δ1(A, 1) = A dan δ2(P, 1) = P, maka terdapat δ(AP, 1) = AP Selanjutnya kita melihat BQ, dari δ1(B, 0) = C dan δ2(Q , 0) = Q, maka terdapat δ(BQ, 0) = CQ dari δ1(B, 1) = A dan δ2(Q , 1) = R, maka terdapat δ(BQ, 1) = AR Berikutnya dari CQ, dari δ1(C, 0) = C dan δ2(Q , 0) = Q, maka terdapat δ(CQ, 0) = CQ dari δ1(C, 1) = C dan δ2(Q , 1) = R, maka terdapat δ(CQ, 1) = CR dan seterusnya maka akan diperoleh diagram transisi berikut ini. 1
1 AP
BP
BQ
0
0 0
AP
1
0
CP
1
1
1 AR
CR
Penyederhanaan yang dibahas sebelumnya dapat dilakukan. Status CR dan CP memiliki transisi yang sama dapat digabungkan menjadi satu. Selanjutnya status hasil gabungan ini juga memiliki transisi yang sama dengan status CQ sehingga akhirnya menghasilkan satu status gabungannya. Selanjutnya diagram setelah penyederhanaan diperlihatkan sebagai berikut. 0, 1
0
1
CQ
0
BQ
1
0
CQ
0 0
1 AR
1
CQ
0
0
AQ
0
BQ
1
CP
0 1
0
BR
1 CR
0
AP
1
1 AR
Dalam diagram terlihat hanya enam status dari sembilan yang dapat tercapai dari AP. Jadi ketiga status lainnya bisa dihilangkan. Jika bahasa bentukan baru tersebut adalah L1 − L2 maka himpunan status menerima A dapat dilakukan sehingga A = {AP, BQ} dan digambarkan pada diagram berikut.
Update Version 1.2.1, printed at 2:01 PM , 9/11/01
page 5 of 5