Jun 02, 2025 Teori Bahasa dan Otomata

Ekspresi Regular

Pada penerapan ekspresi regular sebuah bahasa dikatakan regular, jika terdapat Finite State Automata yang menerimanya.

Bahasa-bahasa yang diterima suatu Finite State Automata bisa dinyatakan sederhana dengan ekspresi regular

Penerapan Ekspresi Regular (ER)

ER dimana memerikan suatu pola atau template untuk untai dari suatu bahasa, untai yang dimaksud yaitu yang menyusun dari suatu bahasa regular akan cocok dengan pola bahasa tersebut. Penerapan ekspresi regular yang tampak, misalnya pencarian (searching), utai karakter (string).

Contoh penerapan yang lain adalah pembatasan data masukan yang diperkenankan, misalnya suatu field masukan hanya menerima input (0….9).

Bila dalam bahasa indonesia bisa dikatakan bahwa automata pada gambar 1 menerima masukan simbol input antara 0 sampai 9 sedangkan ekspresi regularnya dinyatakan sebagai: (digit) (digit)*.
Dengan digit adalah 0….9.

Dalam implementasi suatu FSA akan diterjemahkan menjadi kode dalam sebuah bahasa pemrograman.

Notasi Ekspresi Regular

Berikut notasi yang akan kita gunakan: (*) , (+) , (+) , (∪), ‘.’ :

* yaitu karakter asterik, berarti bisa tidak muncul, bisa juga muncul berhingga kali (0-n)
+ (pada posisi superscript/diatas) berarti minimal muncul satu kali (1-n)
+ atau ∪ berarti union
. (titik) berarti konkatenasi, biasasanya titik dihilangkan, misal: ab bermakna sama seperti a.b

Contoh ekspresi regular (ER)

  • ER : ab*cc
    contoh string yang dibangkitkan: abcc, abbcc, abbbcc, abbbbcc, acc
  • ER : 010*
    contoh string yang dibangkitkan: 01, 010, 0100, 01000
  • ER : a*d
    contoh string yang dibangkitkan: d, ad, aad, aaad
  • ER : a+d
    contoh string yang dibangkitkan: ad, aad, aaad
    (a minimal muncul sekali)
  • ER : a*∪b* (ingat ‘∪’ berarti atau)
    contoh string yang dibangkitkan: a, b, aa, bb, aaa, bbb, aaaa, bbbb
  • ER : a∪b
    contoh string yang dibangkitkan: a, b
  • ER : 01*+0
    contoh string yang dibangkitkan: 0, 01, 011, 0111, 01111

Hubungan ER dan FSA

untuk setiap ER ada satu NDFA dengan transisi ∈ (NFA ∈-move) yang ekivalen.
Sementara untuk setiap DFA ada satu ER dari bahasa yang diterima oleh DFA.
Yang perlu diperhatikan state akhir akan menandakan apakah input diterima atau tidak.
contoh NFA ∈-move untuk ER : ab

contoh NFA ∈-move untuk ER : a*b

contoh NFA ∈-move untuk ER : a∪b

Kemudian dari NDFA ∈-move tersebut kita ubah ke NDFA dan selanjutnya ke DFA atau prosesnya sebagai berikut:

NFA ∈-move → NFA → DFA

Bila ER cukup sederhana kita bisa langsung mengkonstruksikan NFA nya tanpa melalui NFA ∈-move.

Contoh NFA untuk ER : ab

Contoh NFA untuk ER : a∪b

Contoh NFA untuk ER : 010*

Contoh NFA untuk ER : 0(1∪0)

Contoh NFA untuk ER : 0(1∪0)*

Contoh NFA untuk ER : 01* 0

Contoh NFA untuk ER : 0*10*

Contoh NFA untuk ER : a*

Contoh NFA untuk ER : a(ba)*

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *