Penerapan Finite State Automata Pada Mesin Daur Ulang ... text.pdfPenerapan Finite State Automata...

of 22 /22
Penerapan Finite State Automata Pada Mesin Daur Ulang Sampah Otomatis Artikel Ilmiah Peneliti: Eliaser Ronaldy Manoe (672012102) Magdalena A. Ineke Pakereng, M.Kom. Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga November 2018

Embed Size (px)

Transcript of Penerapan Finite State Automata Pada Mesin Daur Ulang ... text.pdfPenerapan Finite State Automata...

  • Penerapan Finite State Automata Pada Mesin Daur Ulang Sampah

    Otomatis

    Artikel Ilmiah

    Peneliti:

    Eliaser Ronaldy Manoe (672012102)

    Magdalena A. Ineke Pakereng, M.Kom.

    Program Studi Teknik Informatika

    Fakultas Teknologi Informasi

    Universitas Kristen Satya Wacana

    Salatiga

    November 2018

  • i

    Penerapan Finite State Automata Pada Mesin Daur Ulang Sampah

    Otomatis

    Artikel Ilmiah

    Diajukan kepada

    Fakultas Teknologi Informasi

    untuk memperoleh Gelar Sarjana Komputer

    Peneliti:

    Eliaser Ronaldy Manoe (672012102)

    Magdalena A. Ineke Pakereng, M.Kom.

    Program Studi Teknik Informatika

    Fakultas Teknologi Informasi

    Universitas Kristen Satya Wacana

    Salatiga

    November 2018

  • ii

  • iii

  • iv

  • v

  • 1

    Penerapan Finite State Automata Pada Mesin Daur Ulang Sampah Otomatis

    Eliaser Ronaldy Manoe 1, Magdalena A. Ineke Pakereng

    2

    Fakultas Teknologi Informasi

    Universitas Kristen Satya Wacana

    Jl. Diponegoro 52-60, Salatiga 50771, Indonesia

    Email: [email protected], [email protected]

    Abstract

    Garbage is a material wasted or discarded from the source of human activity as well ass the

    natural processes that have no economic value. Based on its origins, solid garbage can be

    classified as organic and inorganic waste. Now it is often allowed to pile up and become the

    cause of natural disasters as floods. From such a reason, a machine is built by a machine that

    can recycle wastewater so that it can be reused. The automata theory is used as a basic logic to

    build an automated recycling machine. The process involved is by sharing each system with a

    finite state of automata, thus facilitating the completion of the system.

    Keywords : Theory of Automata, Automata state, Automatic Recycling Machine.

    Abstrak

    Sampah merupakan suatu bahan yang terbuang atau dibuang dari sumber aktivitas manusia

    maupun proses alam yang belum memiliki nilai ekonomis. Berdasarkan asalnya, sampah padat

    dapat digolongkan sebagai Sampah Organik dan Sampah Anorganik. Sekarang ini sampah sering

    dibiarkan menumpuk dan menjadi penyebab terjadinya bencana alam seperti banjir. dari alasan

    tersebut, maka dibangun sebuah mesin yang dapat mendaur ulang sampah sehingga dapat

    digunakan kembali. Teori bahasa automata digunakan sebagai logika dasar untuk membangun

    mesin daur ulang sampah otomatis. Proses yang dilakukan adalah dengan cara membagi tiap

    sistem menggunakan finite state automata sehingga mempermudah penyelesaian sistem.

    Kata Kunci : Teori Bahasa Automata, Finite State Automata, Mesin Daur Ulang Sampah Otomatis.

    1

    Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas Kristen Satya Wacana

    Salatiga. 2 Staff Pengajar Fakultas Teknologi Infomasi Universitas Kristen Satya Wacana Salatiga.

  • 2

    1. Pendahuluan

    Teori Bahasa dan Automata merupakan salah satu bagian ilmu komputer yang didasari

    oleh model dan gagasan mendasar mengenai komputer. Sebagai keluaran dari automata,

    bahasa memungkinkan penyampaian gagasan dan pemikiran manusia, sedangkan sebagai

    ilmu yang juga mempelajari mengenai mesin abstrak, automata dapat membaca input berupa

    string dari alphabet yang diberikan dari input file.

    Sampah merupakan suatu bahan yang terbuang atau dibuang dari sumber aktivitas

    manusia maupun proses alam yang belum memiliki nilai ekonomis. Berdasarkan asalnya,

    sampah padat dapat digolongkan sebagai Sampah Organik dan Sampah Anorganik.

    Sampah organik adalah sisa buangan yang berasal dari makhluk hidup baik manusia, hewan

    maupun tumbuhan dan sifatnya yang mudah membusuk. Bakteri merupakan agen yang

    sangat penting keberadaannya karena perannya sebagai pengurai alami [1]. Sampah

    anorganik yaitu sampah yang terdiri dari bahan-bahan yang sulit terurai secara biologis

    sehingga penghancurannya membutuhkan waktu yang sangat lama. Sampah anorganik

    berasal dari SDA tak terbaharui seperti mineral dan minyak bumi, atau proses industry.

    Beberapa dari bahan ini tidak terdapat di alam seperti plastik dan alumunium. Sebagian zat

    organik secara keseluruhan tidak dapat diuraikan oleh alam, sedangkan sebagian lainnya

    hanya dapat diuraikan dalam waktu yang sangat lama [2].

    Kementerian LHK memproyeksi timbulan sampah rumah tangga dan sampah sejenis

    sampah rumah tangga terus meningkat. Pada 2017, jumlah sampah mencapai 65,8 juta ton.

    Jumlah itu diproyeksi menjadi 66,5 juta ton pada tahun ini dan meningkat menjadi 67,8 juta

    ton pada 2020 dan 70,8 ton pada 2025 [3]. Berdasarkan data kementrian LHK dengan jumlah

    sampah yang sudah sedemikian banyaknya, menjadi alasan peneliti melakukan penelitian

    untuk mengurangi jumlah sampah dengan menerapkan Teori Bahasa dan Automata dengan

    konsep finite state automata pada Mesin Daur Ulang Sampah Otomatis.

    2. Tinjauan Pustaka

    Banyak penelitian tentang penerapan atau penggunaan Finite State Auotmata, salah satu

    contoh penelitian dengan judul “Penerapan Finite State Automata Pada Pemetaan Sistem

    Parkiran Kendaraan Motor di Kampus UKSW Salatiga”, menjelaskan tentang penggunaan

    teori bahasa dan automata untuk mengatasi permasalahan terhadap sistem parkiran UKSW

    Salatiga, dimana sistem parkiran ini memiliki parkiran untuk kendaraan mobil dan motor,

    yang dilakukan secara manual oleh pihak keamanan kampus UKSW Salatiga. Ini telah

    dibuktikan dengan tiga hal yang menjadi ciri-ciri algoritma yang baik telah dipenuhi oleh

    algoritma teori bahasa dan automata untuk pengecekan tersebut, yaitu pertama algoritma

    teori bahasa dan automata memberikan keluaran yang benar terhadap hasil yang diinginkan,

    kedua algoritma teori bahasa dan automata memberikan hasil yang pasti terhadap string yang

    diberikan, dan yang ketiga adalah dengan menggunakan algoritma teori bahasa dan automata

    diperoleh efisiensi waktu dan memori [4].

    Penelitian yang kedua “Penerapan Konsep Finite State Automata (FSA) pada Mesin

    Pembuat Minuman Kopi Otomatis”. Merancang suatu mesin pembuat minuman kopi

    otomatis yang flexible dalam hal mengenal dan menangkap pola dalam proses pembuatan

    minuman kopi dan variasinya. Konsep FSA pada mesin pembuat minuman kopi otomatis

    diterapkan dengan cara FSA membaca setiap simbol masukan yang diberikan menjadi suatu

  • 3

    bahasa yang dikenali oleh FSA. Mesin selanjutnya akan melakukan proses pembuatan

    minuman sesuai dengan bahasa yang telah dibaca oleh FSA [5].

    Berdasarkan penelitian yang pernah dilakukan tentang teori bahasa dan automata dan

    finite automata, maka akan dilakukan penelitian tentang penerapan Finite State Automata

    Pada Mesin Daur Ulang Sampah Otomatis.

    Finite State Automata (FSA) disebut juga Finite Automata (FA) merupakan suatu model

    matematika dari suatu sistem dan yang menerima input menghasilkan output diskrit. Finite

    State Automata memiliki state yang banyaknya berhingga (terbatas), dan dapat berpindah-

    pindah dari satu state ke state lain. Perubahan state ini dinyatakan dengan fungsi transisi.

    State adalah kondisi atau keadaan atau kedudukan. Prinsip kerja Finite State Automata

    adalah sebagai berikut: (1) Menerima input string, (2) Membaca (menyerap substring)

    karakter awal dengan kontrol berada pada state awal, (3) Dengan kontrol dan karakter awal

    yang telah dibaca, state akan berpindah ke state baru, (4) Proses berlanjut sampai semua

    string terserap habis, (5) Jika state akhir yang ditempati saat string habis tersebut berada

    dalam himpunan final state yang telah ditentukan, maka string tersebut diterima atau dikenali

    oleh Finite State Automata tersebut. Jika tidak, maka string tersebut ditolak atau tidak

    dikenali oleh Finite State Automata itu.

    Sebuah Finite State Automata M dinyatakan dengan lima tupel, yaitu (Q , Σ , δ , S , F ),

    dimana:

    Q = himpunan state

    Σ = himpunan alfabet masukan

    δ = fungsi transisi

    S = initial state atau state awal

    F = final state atau himpunan state akhir

    Gambar 1 Contoh State Diagram Finite State Automata [6]

    Keterangan Gambar 1 : (1) Gambar lingkaran menyatakan state, (2) Label pada

    lingkaran adalah nama state tersebut, (3) Busur panah menyatakan transisi atau

    perpindahan state, (4) Gambar lingkaran yang didahului sebuah busur panah tanpa label

    menyatakan state awal, (5) Gambar lingkaran ganda menyatakan final state.

    Maka;

    Q = {A, B}

    ∑ = {0, 1}

    S = {A}

    F = {B}

    δ = Fungsi transisi

    δ (A, 0) = A

    δ (A, 1) = B

  • 4

    δ (B, 0) = B

    δ (B, 1) = A

    Berdasarkan fungsi transisi tersebut, dapat dibuat tabel transisi seperti pada Tabel 1.

    Tabel 1 Tabel Transisi Berdasarkan Gambar 1

    δ

    0

    1

    A A B

    B B A

    Contoh bila string yang masuk adalah „1011‟, maka string tersebut bergerak dari Start

    ke state A, kemudian membaca karakter „1‟ dan berpindah ke state B, yang merupakan state

    tujuan dari hasil pembacaan karakter „1‟. Kemudian string selanjutnya yang dibaca adalah

    „0‟. Karena state tujuan dari pembacaan karakter „0‟ adalah B sendiri, maka state tidak

    berpindah. Selanjutnya membaca karakter „1‟. Berpindah dari state B ke state A yang

    merupakan state tujuan setelah membaca karakter „1‟. Setelah itu, karakter „1‟ dibaca dan

    state berpindah ke state B. Pembacaan string berhenti karena karakter sudah habis. State

    terakhir yang ditempati adalah state B, dan karena state B berada dalam himpunan final state,

    maka string „1011‟ diterima oleh Finite State Automata tersebut.

    NDFA (Non Deterministic Finite Automata) adalah salah satu bagian dari automata

    berhingga atau Finite State Automata (FSA). Pada Non Deterministic Finite Automata

    (NFA) dimungkinkan satu simbol menimbulkan transisi ke lebih dari satu kondisi dan

    memberikan beberapa kemungkinan gerakan sehingga keluarannya tidak dapat dipastikan.

    Selain itu dimungkinkan juga terjadinya transisi spontan atau transisi –ε (Sutopo, M., 2010).

    NDFA (Non Deterministic Finite Automata) didefenisikan sebagai M yang merupakan

    sebuah koleksi dari 5 obyek (Q , Σ , s , F , ∆ ) dimana :

    Q adalah sebuah himpunan hingga dari state.

    Σ adalah sebuah abjad masukan.

    s adalah salah satu kedudukan di dalam Q yang ditetapkan sebagai kedudukan permulaan.

    F adalah sebuah koleksi dari kedudukan-kedudukan yang diterima atau final (koleksi /

    himpunan dari kondisi akhir).

    ∆ adalah sebuah relasi pada (Q x Σ) x Q dan dinamakan relasi transisi.

    Salah satu rangkaian NDFA (Non Deterministic Finite Automata) terlihat pada Gambar 1.

  • 5

    Gambar 2 Rangkaian NDFA (Non Deterministic Finite Automata) [7]

    Rangkaian pada Gambar 2 tergolong dalam NDFA (Non Deterministic Finite

    Automata) karena beberapa transisi yang berasal dari satu kondisi yaitu kondisi q0 memiliki

    input yang sama yaitu „a‟. Rangkaian tersebut akan menerima string ab, aab, aabaab, aba,

    dan abaaba, tetapi tidak akan menerima string abb dan aabb.

    3. Metode dan Perancangan

    Tahapan Penelitian yang digunakan dalam penelitian ini dapat dibagi ke dalam 5 (lima)

    tahap yaitu: (1) tahap analisis kebutuhan dan pengumpulan data, (2) tahap studi literatur, (3)

    tahap perancangan dan implementasi finite state automata, (4) tahap pengujian sistem, (5)

    tahap penulisan laporan.

    Gambar 3 Tahapan Penelitian

    Analisis Kebutuhan dan

    Pengumpulan Data

    Perancangan dan Implementasi

    Finite State Automata

    Pengujian Sistem

    Penulisan Laporan

    Studi Literatur

  • 6

    Tahapan Penelitian pada Gambar 3, dapat dijelaskan sebagai berikut, Tahap Analisis

    Kebutuhan dan Pengumpulan Data: Pada tahap ini dilakukan analisis terkait dengan sistem

    mesin daur ulang sampah otomatis; Tahap Studi Literatur: Dalam tahap ini dilakukan

    pengumpulan data dari jurnal-jurnal terkait, buku, serta sumber mengenai pembahasan terkait

    penelitian tersebut; Tahap Perancangan dan Implementasi Finite State Automata: Pada tahap

    ini akan dilakukan perancangan finite state automata menggunakan NDFA (Non

    Deterministic Finite Automata); Tahap Pengujian Sistem: Pada tahap terakhir ini dilakukan

    pengujian terhadap penerapan finite state automata pada mesin daur ulang sampah otomatis

    menggunakan NDFA (Non Deterministic Finite Automata) yang telah dibuat.

    Pengujian dilakukan dengan evaluasi terhadap keseluruhan perancangan finite state

    automata pada mesin daur ulang sampah otomatis menggunakan NDFA (Non Deterministic

    Finite Automata) yang telah dibuat; Tahap Penulisan Laporan: Dalam tahap ini dilakukan

    penulisan laporan dari tahapan penelitian yang dilakukan.

    Gambar 4 Flowchart Aplikasi Mesin Daur Ulang Sampah Otomatis

  • 7

    Pada Gambar 4 merupakan perancangan pada Mesin Daur Ulang Sampah Otomatis.

    Proses tersebut dapat membantu dalam perancangan desain Finite State Automata, karena di

    dalam setiap proses tersebut merupakan sebuah state atau kondisi yang ada di dalam Finite

    State Automata.

    Keterangan gambar 4 :

    A = Sampah organik

    B = Sampah nonorganik

    C = Proses daur sampah organik

    D = Logam/kaleng

    E = Kaca

    F = Kertas

    4. Hasil dan Pembahasan

    Dalam penelitian ini, teori bahasa automata digunakan sebagai logika dasar untuk

    diterapkan pada perancangan Mesin Daur Ulang Sampah Otomatis. Sistem ini memiliki

    beberapa pilihan yang nantinya akan dipilih oleh user sesuai dengan kebutuhan. Hasil

    perancangan Mesin Daur Ulang Sampah Otomatis Menggunakan Finite State Automata

    yang dapat dilihat pada Gambar 5.

    1. Masukan sampah 2. Pilihan proses daur sampah organik dan anorganik 3. Proses daur 4. Hasil

    Gambar 5 State Diagram Mesin Daur Ulang Sampah Otomatis

    State diagram pada Gambar 5 dinyatakan dalam 11 tupel, yaitu:

    ∑ = {0,1,2,3}

    Q = {A,B,C,D,E,F,G,H,I,J,K}

    S = {A}

    F = {F,K}

  • 8

    ∆ = {((A,0),A), ((A,1),B), ((B,1),C), ((B,2),D), ((C,0),B), ((C,1),G), ((C,2),H), ((C,3),I),

    ((D,0), B), ((D,1),E), ((E,0),D), ((E,1),F), ((G,1),J), ((H,1),J), ((I,1),J), ((J,0),C),

    ((J,1),K)}

    Relasi transisi dapat dipetakan dalam tabel, menjadi seperti pada Tabel 2.

    Tabel 2 Relasi Transisi ∆ 0 1 2 3

    A A B - -

    B - C D -

    C B G H I

    D B E - -

    E D F - -

    G - J - -

    H - J - -

    I - J - -

    J C K - -

    Keterangan Gambar 5 :

    A = Sampah dimasukan

    B = Pilihan jenis daur sampah yaitu nonorganik dan organik

    C = Sampah nonorganik

    D = Sampah organik

    E = Proses daur ulang sampah organik

    F = Hasil pengolahan sampah organik

    G = Pilihan proses pengolahan sampah nonorganik jenis kertas

    H = Pilihan proses pengolahan sampah nonorganik jenis logam/kaleng dan plastik

    I = Pilihan proses pengolahan sampah nonorganik jenis kaca

    J = Proses daur ulang sampah nonorganik

    K = Hasil pengolahan sampah nonorganik

    Algoritma menjelaskan tentang gambaran aplikasi yang dibuat, berguna untuk

    mempermudah pengguna dalam melihat cara kerja aplikasi yang akan diterapkan pada

    Mesin Daur Ulang Sampah.

  • 9

    Gambar 6 Tampilan Form Awal Pada Mesin Daur Ulang Sampah Otomatis

    Gambar 6 menunjukkan tampilan form awal pada mesin daur ulang sampah otomatis yang jika

    button “Mulai” ditekan, maka akan berpindah ke tampilan berikutnya.

    Kode Program 1 Form Tampilan Awal

    Kode Program 1 merupakan gambaran perintah untuk proses yang berjalan pada form tampilan

    awal mesin daur ulang sampah otomatis.

  • 10

    Gambar 7 Tampilan Form Pilihan Proses Daur

    Gambar 7 merupakan tampilan ke dua pada mesin daur ulang sampah otomatis yang berisikan

    pilihan proses daur ulang sampah berupa sampah organik dan nonorganik.

    Kode Program 2 Form Tampilan Pilihan Proses

    Kode Program 2 merupakan gambaran perintah untuk proses yang berjalan pada form tampilan

    pilihan proses.

  • 11

    Gambar 8 Proses Daur Ulang Sampah Organik

    Gambar 8 merupakan gambaran proses yang berjalan ketika mesin melakukan daur ulang

    sampah. Terdapat juga button “Kembali” untuk membatalkan proses dan kembali pada tampilan

    pilihan proses daur.

    Kode Program 3 Form Proses Daur Ulang Sampah Organik

    Kode Program 3 merupakan gambaran perintah yang berjalan pada form tampilan proses daur

    ulang sampah organik.

  • 12

    Gambar 9 Tampilan Hasil Proses Daur Ulang Sampah Organik

    Gambar 9 merupakan tampilan form dari hasil proses daur ulang sampah organik. Pada tampilan

    ini terdapat dua button yaitu “Kembali ke Pilihan Proses” dan “Selesai”. Ketika button “Kembali

    ke Pilihan Proses” ditekan maka, tampilan yang akan muncul yaitu form “Pilihan Proses” tetapi

    jika button “Selesai” yang ditekan maka proses yang muncul adalah form “Tampilan Awal”.

    Kode Program 4 Form Hasil Proses Daur Ulang Sampah Organik

    Kode Program 4 merupakan gambaran perintah yang berjalan pada form tampilan hasil daur

    ulang sampah organik.

  • 13

    Gambar 10 Tampilan Pilihan Jenis Daur Ulang Sampah Nonorganik

    Gambar 10 merupakan pilihan jenis daur ulang sampah nonorganik. Terdapat empat button yaitu

    logam/kaleng dan plastik, kaca, kertas yang ketika ditekan maka akan menampilkan tampilan

    proses daur ulang sampah nonorganik dan button kembali yang ketika ditekan maka akan

    menampilkan tampilan pilihan proses daur sampah.

    Kode Program 5 Form Tampilan Pilihan Jenis Daur Ulang Sampah Nonorganik

    Kode Program 5 merupakan gambaran perintah yang berjalan pada form tampilan pilihan jenis

    daur ulang sampah organik.

  • 14

    Gambar 11 Proses Daur Ulang Sampah Nonorganik

    Gambar 11 merupakan gambaran proses yang berjalan ketika mesin melakukan daur ulang

    sampah nonorganik. Terdapat button “Kembali” untuk membatalkan proses dan kembali pada

    tampilan pilihan proses daur.

    Kode Program 6 Form Proses Daur Ulang Sampah Nonorganik

    Kode Program 6 merupakan gambaran perintah yang berjalan pada form tampilan proses daur

    ulang sampah nonorganik.

  • 15

    Gambar 12 Tampilan Hasil Proses Daur Ulang Sampah Nonorganik

    Gambar 12 merupakan tampilan form dari hasil proses daur ulang sampah nonorganik. Pada

    tampilan ini terdapat tiga button yaitu “Kembali ke Pilihan Proses”, “Kembali ke Pilihan Jenis”

    dan “Selesai”. Ketika button “Kembali ke Pilihan Proses” ditekan maka, tampilan yang akan

    muncul yaitu form “Pilihan Proses” dan ketika button “Kembali ke Pilihan Jenis” maka yang

    akan muncul adalah form “Pilihan Jenis Daur Ulang Sampah Nonorganik” tetapi jika button

    “Selesai” yang ditekan maka proses yang muncul adalah form “Tampilan Awal”.

    Kode Program 7 Form Hasil Proses Daur Ulang Sampah Nonorganik

    Kode Program 7 merupakan gambaran perintah yang berjalan pada form tampilan hasil proses

    daur ulang sampah nonorganik.

  • 16

    5. Simpulan

    Aplikasi yang dibuat, menggunakan bahasa pemograman visual basic.

    Implementasi finite state automata pada mesin daur ulang sampah otomatis yang

    dilakukan dapat diambil kesimpulan bahwa finite state automata digunakan sebagai

    logika dasar untuk membangun kerangka mesin daur ulang sampah otomatis, prosesnya

    adalah membagi tiap sistem ke dalam bentuk state sehingga memudahkan penyelesaian

    sistem. Aplikasi yang dibuat dalam bentuk algoritma dan console application yang

    merupakan gambaran dari aplikasi yang dibuat untuk menjelaskan proses berjalannya

    mesin daur ulang sampah otomatis.

    6. Daftar Pustaka

    [1] https://hidupsimpel.com/sampah-organik-dan-non-organik/, diakses tanggal 10 Agustus

    2018.

    [2] https://kujalanjalan.wordpress.com/sampah-anorganik/, diakses tanggal 10 Agustus

    2018.

    [3] https://www.cnnindonesia.com/gaya-hidup/20180119202025-282-270298/5-fakta-

    memprihatinkan-seputar-sampah, diakses tanggal 10 Agustus 2018.

    [4] Pelupessy, J. A., Pakereng, M A I., November 2016. Penerapan Finite State Automata

    Pada Pemetaan Sistem Parkiran Kendaraan Motor di Kampus UKSW Salatiga.

    [5] Wamiliana, Didik Kurniawan, Rizky Indah Melly E.P, April 2013. Penerapan Konsep

    Finite State Automata (FSA) pada Mesin Pembuat Minuman Kopi Otomatis.

    [6] Utdirartatmo, F., 2001. Teori Bahasa dan Otomata. Yogyakarta: J & J Learning.

    [7] Sutopo, M., 2010, Non Deterministic Finite Automata (NFA)

    (http://mursids.blogspot.co.id/2010/02/nondeterministic-finite-automata-nfa.html,

    diakses tanggal 08 Agustus 2018).

    https://hidupsimpel.com/sampah-organik-dan-non-organik/https://kujalanjalan.wordpress.com/sampah-anorganik/https://www.cnnindonesia.com/gaya-hidup/20180119202025-282-270298/5-fakta-memprihatinkan-seputar-sampahhttps://www.cnnindonesia.com/gaya-hidup/20180119202025-282-270298/5-fakta-memprihatinkan-seputar-sampahhttp://mursids.blogspot.co.id/2010/02/nondeterministic-finite-automata-nfa.html