Lecture Notes
Semester 1
Discrete Mathematics
Lecture 13: Finite-State Machine

Lecture 13: Finite-State Machine

Based on Discrete Mathematics and Its Applications (opens in a new tab) by Kenneth H. Rosen, 7th Edition.


Finite-State Machine with Output

Finite-State Machine M=(S,I,O,f,g,s0)M = (S, I, O, f, g, s_0) tersusun atas himpunan state SS, himpunan masukan II, himpunan keluaran OO, fungsi transisi ff, fungsi keluaran gg, dan keadaan awal s0s_0.

FSM dapat direpresentasikan dengan state table sebagai berikut:

StateInputOutputNext State
s0s_0i0i_0o0o_0s1s_1
s0s_0i1i_1o1o_1s2s_2
s1s_1i0i_0o2o_2s0s_0
s1s_1i1i_1o3o_3s2s_2

Tabel diatas dapat dibuat lebih compact dengan memasukkan state dan input ke dalam satu kolom:

ffgg
InputOutput
State0  10 \ \ 10  10 \ \ 1
s0s_0s1s_1 s2s_2o0o_0 o1o_1
s1s_1s0s_0 s2s_2o2o_2 o3o_3

Baris pertama dapat dibaca sebagai berikut:

Jika saat ini berada di state s0s_0 dan input i0i_0 diberikan, maka FSM akan berpindah ke state s1s_1 dan mengeluarkan output o0o_0. Jika input i1i_1 diberikan, maka FSM akan berpindah ke state s2s_2 dan mengeluarkan output o1o_1.

Misalkan ada sebuah FSM yang memiliki state table sebagai berikut:

ffgg
InputOutput
State00 1100 11
s0s_0s1s_1 s3s_300 11
s1s_1s1s_1 s2s_211 11
s2s_2s3s_3 s4s_400 00
s3s_3s1s_1 s0s_000 00
s4s_4s3s_3 s4s_400 00

Apakah string outputnya bila string inputnya berupa

101011

Berikut adalah tabel transisi FSM tersebut:

InputStateOutputNext State
11s0s_000s3s_3
00s3s_300s1s_1
11s1s_111s2s_2
00s2s_200s3s_3
11s3s_300s0s_0
11s0s_000s3s_3

Maka string outputnya adalah

001000

Unit-Delay Machine

Unit-delay machine adalah FSM yang mengeluarkan output yang sama dengan inputnya ditambah delay beberapa waktu. Bagaimana FSM yang mengeluarkan output yang sama dengan inputnya ditambah delay satu waktu, yaitu output 0x1x2xn10x_1x_2\dots x_{n-1} untuk input x0x1x2xn1x_0x_1x_2\dots x_{n-1}?

Untuk menyelesaikan masalah ini, kita dapat merancang FSM yang mengingat satu input sebelumnya. Pertama-tama S0S_0 dirancang untuk selalu mengeluarkan output 00 untuk setiap input yang diberikan. Jika input pertama adalah 11, maka FSM akan berpindah ke S1S_1 yang akan mengeluarkan output 11 untuk setiap input yang diberikan dan berpindah ke S2S_2 jika input 00 diberikan yang akan selalu mengeluarkan output 00.

ffgg
InputOutput
State00 1100 11
s0s_0s2s_2 s1s_100 00
s1s_1s2s_2 s1s_111 11
s2s_2s2s_2 s1s_100 00

Bagaimana dengan delay sebanyak 2 bit?

Untuk menyelesaikan masalah ini, FSM perlu untuk mengingat 2 bit input sebelumnya. Secara intuisi, FSM memerlukan 4 state yaitu segala kemungkinan 2 bit sebelumnya {00,01,10,11}\{00, 01, 10, 11\}. State S1S_1 akan menampung input 0000, S2S_2 akan menampung input 0101, S3S_3 akan menampung input 1010, dan S4S_4 akan menampung input 1111.

ffgg
InputOutput
State00 1100 11
s0s_0s1s_1 s2s_200 00
s1s_1s1s_1 s2s_200 00
s2s_2s3s_3 s4s_400 00
s3s_3s1s_1 s2s_211 11
s4s_4s3s_3 s4s_411 11
⚠️

Bila diperhatikan, state S0S_0 dan S1S_1 memiliki fungsi transisi yang sama. Hal ini dapat dipersingkat dengan membuang state S0S_0 dan memulai FSM dari S1S_1 sebagai initial state.

Secara intuisi, jumlah state yang dibutuhkan untuk mengingat nn bit input sebelumnya adalah 2n2^n.

Example

Dalam suatu transmisi informasi, bila ada tiga atau lebih string 1 berurutan menandakan terjadi galat. Buatlah FSM yang dapat mengenali string-string yang mengandung galat tersebut!

Untuk menjawabnya, kita perlu memikirkan apa transisi bila diberikan sebuah input 1. Untuk memeriksa apakah string tersebut berisi 111 maka perlu ada 2 state tambahan, state kedua berfungsi untuk mengingat bahwa input sebelumnya adalah 1. Apabila mesin masih mendapati input 1 setelah itu, maka mesin ditransisikan ke state ketiga sebagai final state. Bila input selanjutnya adalah 0, maka mesin kembali ke state awal. Namun, bila input selanjutnya adalah 1, maka mesin akan mengenali string tersebut sebagai string yang mengandung galat.

ffgg
InputOutput
State00 1100 11
s0s_0s0s_0 s1s_100 00
s1s_1s0s_0 s2s_200 00
s2s_2s0s_0 s2s_200 11
⚠️

Perhatikan! FSM akan mengeluarkan output 1 hanya jika string yang diberikan mengandung galat ...111...

Finite-State Machine without Output

Finite-State Automaton M=(S,I,f,s0,F)M = (S, I, f, s_0, F) tersusun atas himpunan state SS, himpunan masukan II, fungsi transisi ff, keadaan awal s0s_0, dan himpunan state akhir FF.

Deterministic

Dinamakan deterministic karena untuk setiap state ss dan input ii, hanya ada satu state f(s,i)f(s, i) yang mungkin dihasilkan.

Language Recognition

Diberikan sebuah FSM\text{FSM} M=(S,I,f,s0,F)M = (S, I, f, s_0, F), FSM tersebut dapat mengenali bahasa L(M)L(M) yang terdiri dari string-string yang dapat diterima oleh FSM tersebut yaitu f(s0,x)Ff(s_0, x) \in F. Dua buah finite-state automata dikatakan setara jika L(M1)=L(M2)L(M_1) = L(M_2).

Example

Sebuah finite-state automata M=(S,I,f,s0,F)M = (S, I, f, s_0, F) memiliki himpunan state S={s0,s1}S = \{s_0, s_1\}, himpunan masukan I={0,1}I = \{0, 1\}, fungsi transisi ff sebagai berikut:

ff
Input
State00 11
s0s_0s1s_1 s0s_0
s1s_1s1s_1 s1s_1

dan himpunan state akhir F={s0}F = \{s_0\}. Apakah bahasa L(M)L(M) yang diterima oleh MM?

Bahasa L(M)L(M) yang diterima oleh MM adalah himpunan string-string yang hanya mengandung 1 saja atau L(M)={1nn0}L(M) = \{1^n \mid n \geq 0\}.

Nondeterministic

Dinamakan nondeterministic karena untuk setiap state ss dan input ii, tidak hanya satu state f(s,i)f(s, i) yang mungkin dihasilkan.

Example

Sebuah finite-state automata M=(S,I,f,s0,F)M = (S, I, f, s_0, F) memiliki himpunan state S={s0,s1,s2,s3,s4}S = \{s_0, s_1, s_2, s_3, s_4\}, himpunan masukan I={0,1}I = \{0, 1\}, fungsi transisi ff sebagai berikut:

ffff
InputInput
State0011
s0s_0s0,s2s_0, s_2s1s_1
s1s_1s3s_3s4s_4
s2s_2s4s_4
s3s_3s3s_3
s4s_4s3s_3s3s_3

dan himpunan state akhir F={s0,s4}F = \{s_0, s_4\}. Apakah bahasa L(M)L(M) yang diterima oleh MM?

Jika di trace dari himpunan state akhir FF, didapatkan beberapa poin:

  1. s0s_0 hanya dapat dicapai dalam input {0n}\{0^n\} untuk nn sejumlah bilangan bulat positif.
  2. s4s_4 dapat dicapai dari
    • s1(1)s0(1)s0(0n)s_1(1) \leftarrow s_0(1) \leftarrow s_0(0^n)
    • s2(1)s0(0)s0(0n)s_2(1) \leftarrow s_0(0) \leftarrow s_0(0^n)

Maka, bahasa L(M)={0n,0n11,0n01n1}L(M) = \{0^n, 0^n11, 0^n01 \mid n \geq 1\}.

⚠️

Jika suatu bahasa LL dapat diterima oleh suatu nondeterministic finite-state automata, maka LL juga dapat diterima oleh suatu deterministic finite-state automata.