materi

Chapter 2: Finite State Machine (FSM), Operasi String, dan Bahasa Formal

Konsep & Pembahasan Terperinci

1. Kegunaan FSM dan Perumusan Masalah Komputasi

A. Empat Bidang Kegunaan FSM menurut Materi

  1. Software untuk desain dan verifikasi rangkaian digital: Memodelkan gerbang logika sekuensial dan register.

  2. Lexical analyzer pada compiler: Mengenali token seperti kata kunci (if, while), identifier, dan literal angka.

  3. Pencarian pada teks yang besar: Digunakan pada search engine web, utility grep, dan pencocokan pola regex.

  4. Desain, verifikasi, dan implementasi sistem software interaktif: Protokol jaringan (TCP/IP), transaksi electronic commerce, dan sistem reaktif.

B. Perumusan Masalah (*Problem to Resolve*)

Dalam teori bahasa dan automata, suatu masalah komputasi didefinisikan sebagai masalah keanggotaan bahasa (membership decision problem):

  • Diberikan sebuah bahasa LΣL \subseteq \Sigma^*.

  • Diberikan sebuah input berupa string sembarang xΣx \in \Sigma^*.

  • Tantangan: Menentukan secara pasti apakah xLx \in L atau xLx \notin L.

  • Mesin automata bertugas menyelesaikan masalah tersebut dengan mengeluarkan keputusan:

    • Accept (Terima) jika xLx \in L.

    • Reject (Tolak) jika xLx \notin L.


2. Alfabet, String, String Kosong, dan Panjang String

  • Alfabet (Σ\Sigma): Himpunan berhingga simbol.

    • Contoh biner: Σ={0,1}\Sigma = \{0, 1\}

    • Contoh alfabet huruf kecil: Σ={a,b,c,,z}\Sigma = \{a, b, c, \dots, z\}

    • Contoh ASCII: Σ=semua karakter ASCII\Sigma = \text{semua karakter ASCII}

  • String (ww): Barisan berhingga w=w1w2wnw = w_1 w_2 \dots w_n di mana setiap wiΣw_i \in \Sigma.

    • Contoh: $101$, string\text{string}, Rp 1.000.000\text{Rp 1.000.000}.
  • String Kosong (ϵ\epsilon): String dengan 0 simbol.

    • Sifat identitas: ϵw=wϵ=w\epsilon w = w \epsilon = w.

    • Sebagai contoh konkret: ϵabba=abbaϵ=abba\epsilon \cdot abba = abba \cdot \epsilon = abba.

  • Panjang String (w|w|): Jumlah karakter dalam string.

    • ϵ=0|\epsilon| = 0
    • 1001=4|1001| = 4
    • string=6|\text{string}| = 6

3. Perkalian Cartesian, Star Closure, dan Positive Closure

A. Perkalian Cartesian (Σk\Sigma^k)

Σk\Sigma^k merepresentasikan himpunan semua string dengan panjang tepat kk yang dibentuk dari simbol-simbol Σ\Sigma.

  • Sebagai contoh: Jika A={a,b}A = \{a, b\} dan B={0,1,2}B = \{0, 1, 2\}, maka:
A×B={(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}A \times B = \{(a,0), (a,1), (a,2), (b,0), (b,1), (b,2)\}
A×B=A×B=2×3=6|A \times B| = |A| \times |B| = 2 \times 3 = 6
  • Untuk alfabet biner Σ={0,1}\Sigma = \{0, 1\}:

    • Σ0={ϵ}\Sigma^0 = \{\epsilon\}
    • Σ1={0,1}\Sigma^1 = \{0, 1\}
    • Σ2={00,01,10,11}\Sigma^2 = \{00, 01, 10, 11\}
    • Σ3={000,001,010,011,100,101,110,111}\Sigma^3 = \{000, 001, 010, 011, 100, 101, 110, 111\}

B. Star Closure Kleene (Σ\Sigma^*)

Himpunan seluruh string berhingga dari Σ\Sigma, termasuk string kosong:

Σ=Σ0Σ1Σ2={ϵ,0,1,00,01,10,11,000,001,}\Sigma^* = \Sigma^0 \cup \Sigma^1 \cup \Sigma^2 \cup \dots = \{\epsilon, 0, 1, 00, 01, 10, 11, 000, 001, \dots\}

Catatan Konseptual: Meskipun setiap elemen dalam Σ\Sigma^* memiliki panjang berhingga, himpunan Σ\Sigma^* itu sendiri berukuran tak terhingga (infinite set).

C. Positive Closure (Σ+\Sigma^+)

Himpunan seluruh string berhingga dari Σ\Sigma tanpa string kosong:

Σ+=Σ1Σ2Σ3=Σ{ϵ}={0,1,00,01,10,11,}\Sigma^+ = \Sigma^1 \cup \Sigma^2 \cup \Sigma^3 \cup \dots = \Sigma^* - \{\epsilon\} = \{0, 1, 00, 01, 10, 11, \dots\}

Hubungan mendasar: Σ=Σ+{ϵ}\Sigma^* = \Sigma^+ \cup \{\epsilon\}.


4. Definisi Bahasa dan Operasi Himpunan Bahasa

Suatu bahasa LL atas alfabet Σ\Sigma adalah sembarang subset dari Σ\Sigma^* (LΣL \subseteq \Sigma^*). Sebagai contoh konkret:

  • Jika Σ={a,b,,z}\Sigma = \{a, b, \dots, z\}, maka L=semua kata dalam bahasa IndonesiaL = \text{semua kata dalam bahasa Indonesia}.

  • Jika Σ={0,1}\Sigma = \{0, 1\}, maka L={ϵ,01,0011,000111,}={0n1nn0}L = \{\epsilon, 01, 0011, 000111, \dots\} = \{0^n 1^n \mid n \ge 0\}.

  • Jika Σ=ASCII\Sigma = \text{ASCII}, maka L=semua program C++ yang dapat di-compileL = \text{semua program C++ yang dapat di-compile}.

Operasi Himpunan Bahasa

Diberikan dua bahasa L1={a,ab,aaaa}L_1 = \{a, ab, aaaa\} dan L2={bb,ab}L_2 = \{bb, ab\} di atas alfabet Σ={a,b}\Sigma = \{a, b\}:

  1. Union (Gabungan):
L1L2={a,ab,bb,aaaa}L_1 \cup L_2 = \{a, ab, bb, aaaa\}
  1. Intersection (Irisan):
L1L2={ab}L_1 \cap L_2 = \{ab\}
  1. Difference (Selisih):
L1L2={a,aaaa}L_1 - L_2 = \{a, aaaa\}
  1. Complement (Komplemen):
L=ΣL\overline{L} = \Sigma^* - L

Jika L={a,ba}L = \{a, ba\}, maka L={ϵ,b,aa,ab,bb,aaa,}\overline{L} = \{\epsilon, b, aa, ab, bb, aaa, \dots\}.

  1. Reverse (Pembalikan):
LR={wRwL}L^R = \{w^R \mid w \in L\}

Sebagai contoh: {ab,aab,baba}R={ba,baa,abab}\{ab, aab, baba\}^R = \{ba, baa, abab\}.

Contoh bahasa berpangkat: Jika L={anbnn0}L = \{a^n b^n \mid n \ge 0\}, maka LR={bnann0}L^R = \{b^n a^n \mid n \ge 0\}.

  1. Concatenation (Penyambungan):
xy=x1xny1ym    xy=x+yx \cdot y = x_1 \dots x_n y_1 \dots y_m \quad \implies \quad |x \cdot y| = |x| + |y|

Sifat: ϵx=xϵ=x\epsilon x = x \epsilon = x.


5. Tiga Pola Bahasa Dasar (Penting untuk Ujian)

Terdapat tiga pola ekspresi dasar yang penting untuk dipahami batasannya:

Pola BahasaDefinisi & KarakteristikContoh Anggota Bahasa
(a+b)(a+b)^*Bahasa yang terbentuk dari semua kata dari huruf aa atau bb atau keduanya secara bebasϵ,a,b,ab,ba,aa,bb,aba,bab,bbaa,abba,\epsilon, a, b, ab, ba, aa, bb, aba, bab, bbaa, abba, \dots
aba^*b^*Bahasa yang terbentuk dari aa dan bb bebas, tetapi tidak mungkin ada huruf aa setelah huruf bbϵ,a,b,aa,bb,ab,aab,aabb,abbb,\epsilon, a, b, aa, bb, ab, aab, aabb, abbb, \dots (string baba atau abbaabba bukan anggota!)
(ab)(ab)^*Bahasa yang terbentuk dari pengulangan blok pasangan ababϵ,ab,abab,ababab,\epsilon, ab, abab, ababab, \dots

Latihan Soal & Pembahasan

Level 1 - Basic

Soal 1.1

Sebutkan 4 kegunaan utama FSM dalam rekayasa perangkat lunak dan komputasi.

Soal 1.2

Jika Σ={0,1}\Sigma = \{0, 1\}, tentukan anggota dari Σ0\Sigma^0, Σ1\Sigma^1, dan Σ2\Sigma^2.

Soal 1.3

Jelaskan perbedaan mendasar antara Σ\Sigma^* dan Σ+\Sigma^+.


Pembahasan/Jawaban

1.1 Empat penerapan penting automata:

  1. Software desain dan verifikasi rangkaian digital

  2. Lexical analyzer pada compiler

  3. Pencarian teks besar (search engine, grep)

  4. Desain, verifikasi, dan implementasi sistem software interaktif (protokol jaringan, e-commerce, sistem reaktif)

1.2 Σ0={ϵ}\Sigma^0 = \{\epsilon\}, Σ1={0,1}\Sigma^1 = \{0, 1\}, Σ2={00,01,10,11}\Sigma^2 = \{00, 01, 10, 11\}.

1.3 Σ\Sigma^* memuat string kosong ϵ\epsilon (Σ=i=0Σi\Sigma^* = \bigcup_{i=0}^\infty \Sigma^i), sedangkan Σ+\Sigma^+ tidak memuat string kosong (Σ+=Σ{ϵ}\Sigma^+ = \Sigma^* - \{\epsilon\}).


Level 2 - Intermediate

Soal 2.1

Diberikan bahasa L={anbnn0}L = \{a^n b^n \mid n \ge 0\}. Tentukan LRL^R (reversal) dan jelaskan mengapa string abbaabba tidak termasuk ke dalam LL.

Soal 2.2

Diberikan L1={a,ab,aaaa}L_1 = \{a, ab, aaaa\} dan L2={bb,ab}L_2 = \{bb, ab\}. Hitung: (a) L1L2L_1 \cup L_2, (b) L1L2L_1 \cap L_2, dan (c) L1L2L_1 - L_2.


Pembahasan/Jawaban

2.1 LR={bnann0}L^R = \{b^n a^n \mid n \ge 0\}. String abbaabba memiliki dua huruf aa dan dua huruf bb, namun urutannya diawali aa, diakhiri aa, bukan seluruh aa mendahului seluruh bb. Pada LL, untuk panjang 4 dengan n=2n=2, string yang sah hanyalah a2b2=aabba^2 b^2 = aabb.

2.2

  • (a) L1L2={a,ab,bb,aaaa}L_1 \cup L_2 = \{a, ab, bb, aaaa\}

  • (b) L1L2={ab}L_1 \cap L_2 = \{ab\}

  • (c) L1L2={a,aaaa}L_1 - L_2 = \{a, aaaa\}


Level 3 - Advanced

Soal 3.1

Analisis mengapa string bbaabbaa diterima oleh pola (a+b)(a+b)^*, tetapi ditolak oleh pola aba^*b^* dan (ab)(ab)^*.


Pembahasan/Jawaban

Pada pola (a+b)(a+b)^*, seluruh permutasi kombinasi simbol aa dan bb dengan panjang berapapun diperbolehkan, sehingga bbaa(a+b)bbaa \in (a+b)^*.

Pada pola aba^*b^*, terdapat aturan mutlak bahwa tidak boleh ada simbol aa yang muncul setelah simbol bb. Karena pada string bbaabbaa terdapat simbol aa setelah simbol bb, maka bbaaabbbaa \notin a^*b^*.

Pada pola (ab)(ab)^*, string harus tersusun atas kelipatan pasangan terurut abab. Karena bbaabbaa tidak tersusun atas blok abab, maka bbaa(ab)bbaa \notin (ab)^*.


Exam Cheat Sheet

  • Kardinalitas: A×B=A×B|A \times B| = |A| \times |B|.

  • Panjang String Kosong: ϵ=0|\epsilon| = 0, identitas: ϵw=wϵ=w\epsilon w = w \epsilon = w.

  • Hubungan Kleene Star & Positive Closure: Σ=Σ+{ϵ}\Sigma^* = \Sigma^+ \cup \{\epsilon\} dan Σ+=Σ{ϵ}\Sigma^+ = \Sigma^* - \{\epsilon\}.

  • Komplemen Bahasa: L=ΣL\overline{L} = \Sigma^* - L.

  • Sifat Reversal Konkatenasi: (xy)R=yRxR(xy)^R = y^R x^R.

  • 3 Pola Wajib Paham:

    • (a+b)(a+b)^*: Sembarang kombinasi aa dan bb.

    • aba^*b^*: aa dulu baru bb, pantang ada aa setelah bb.

    • (ab)(ab)^*: Pengulangan pola pasangan abab.


Referensi & Bahan Bacaan

  1. Hopcroft, John E., Rajeev Motwani, Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation (Chapter 2: Finite Automata).

  2. Michael Sipser. Introduction to the Theory of Computation (Chapter 1: Regular Languages).

  3. Edward F. Moore. Gedanken-experiments on Sequential Machines (Princeton University Press, 1956).

Catatan Penutup

Bab 2 telah memformalkan konsep dasar simbol, alfabet, operasi string, dan pola bahasa. Pada bab berikutnya, Chapter 3: Finite Automata (FA), kita akan mempelajari mesin komputasi pertama yang mengimplementasikan proses penerimaan bahasa-bahasa ini.