Pengantar
Finite State Machine (FSM), atau dalam bahasa Indonesia dikenal sebagai Mesin Status Terhingga, adalah model komputasi matematis yang digunakan untuk merancang sistem logika maupun program komputer. Konsep ini merupakan bagian fundamental dari teori automata dan ilmu komputer teoretis. Secara sederhana, FSM adalah sebuah abstraksi mesin yang dapat berada dalam salah satu dari sejumlah terbatas (finite) keadaan atau "status" pada suatu waktu tertentu.
FSM bekerja dengan merespons input eksternal untuk berpindah dari satu status ke status lain secara transisional. Mesin ini hanya memiliki ingatan tentang status saat ini, yang menjadikannya sangat berguna untuk sistem yang membutuhkan urutan logika yang pasti dan deterministik. Karena struktur logikanya yang jelas, FSM banyak diterapkan dalam berbagai bidang, mulai dari desain sirkuit elektronik, pengembangan permainan video, hingga pemrosesan bahasa alami dan protokol jaringan.
Komponen Utama FSM
Untuk memahami cara kerja FSM, kita perlu mengenali komponen-komponen penyusunnya. Sebuah FSM yang lengkap biasanya terdiri dari beberapa elemen dasar berikut:
- States (Status): Kondisi atau keadaan di mana mesin berada. Misalnya, pada kopi otomatis, statusnya bisa "Menunggu", "Memeras", atau "Menyajikan". FSM hanya bisa menempati satu status dalam satu waktu.
- Inputs (Input): Sinyal atau data yang diterima mesin dari luar. Input ini adalah pemicu yang menyebabkan mesin mempertimbangkan untuk berpindah status.
- Transitions (Transisi): Aturan yang mengatur perpindahan dari satu status ke status lain. Transisi terjadi berdasarkan input saat ini dan status yang sedang aktif.
- Outputs (Output): Aksi atau respon yang dihasilkan mesin, bisa terjadi saat mesin berada di status tertentu atau ketika terjadi transisi.
- Initial State (Status Awal): Titik awal di mana FSM mulai beroperasi saat pertama kali diaktifkan.
Jenis-Jenis Finite State Machine
Berdasarkan bagaimana output dihasilkan, FSM umumnya diklasifikasikan menjadi dua kategori utama. Meskipun inti logikanya sama, perbedaan cara penanganan output membuat keduanya cocok untuk kasus penggunaan yang berbeda.
1. Mealy Machine
Pada Mealy Machine, output yang dihasilkan oleh sistem bergantung pada kombinasi status saat ini dan input yang masuk. Artinya, output dapat berubah sewaktu-waktu selama ada input yang berubah, meskipun statusnya belum resmi berpindah. Karakteristik ini membuat Mealy Machine cenderung memiliki respon yang lebih cepat terhadap input eksternal. Namun, karena ketergantungan ganda ini, perancangan dan pengujian sistem bisa menjadi sedikit lebih kompleks dibandingkan tipe lainnya.
2. Moore Machine
Sebaliknya, Moore Machine menghasilkan output yang semata-mata bergantung pada status saat ini. Input hanya berfungsi untuk memicu perpindahan status, tetapi tidak langsung mengubah output. Output baru hanya akan muncul setelah mesin resmi berpindah ke status baru. Hal ini membuat perilaku Moore Machine lebih stabil dan lebih mudah diprediksi. Desainnya seringkali lebih sederhana karena logika output terpisah dari logika transisi input.
Representasi FSM
Dalam praktik teknik dan informatika, FSM sering direpresentasikan secara visual menggunakan State Transition Diagram (Diagram Transisi Status). Diagram ini menggunakan grafik berarah di mana:
- Simpul (lingkaran) merepresentasikan status.
- Panah (garis berarah) merepresentasikan transisi.
- Teks pada panah menunjukkan input yang diperlukan untuk berpindah.
Selain diagram, FSM juga dapat direpresentasikan menggunakan State Transition Table. Tabel ini secara sistematis mencantumkan semua kombinasi status saat ini, input yang diterima, status berikutnya, dan output yang dihasilkan. Representasi tabel ini sangat berguna saat menerjemahkan FSM menjadi kode program atau sirkuit logika.
Contoh Penerapan
Ini adalah contoh paling klasik dari FSM dalam kehidupan nyata. Mesin memiliki status terhingga: Merah, Kuning, dan Hijau. Transisi terjadi berdasarkan input berupa "waktu habis" atau timer. Saat timer status Merah berakhir, FSM bertransisi ke status Hijau, lalu ke Kuning, dan kembali ke Merah. Output dari mesin adalah cahaya yang menyala pada lampu.
Saat Anda menulis kode program, compiler perlu memahami teks yang Anda tulis. FSM digunakan untuk memindai karakter demi karakter dan mengelompokkannya menjadi "token" seperti kata kunci, variabel, atau operator. FSM akan berubah status saat membaca huruf, angka, atau simbol tertentu untuk mengenali struktur kode.
Karakter non-pemain (NPC) dalam video game sering menggunakan FSM untuk mengambil keputusan. Seorang penjaga misalnya, mungkin memiliki status: "Patroli", "Mendengar Suara", dan "Mengejar". Jika input berupa "suara langkah kaki" terdeteksi, status berubah dari "Patroli" ke "Mendengar Suara". Jika input berupa "melihat pemain", status berubah menjadi "Mengejar".
Kesimpulan
Finite State Machine adalah alat desain yang sangat kuat untuk memodelkan sistem yang memiliki perilaku sekuensial. Dengan membatasi jumlah status yang mungkin, FSM memungkinkan pengembang untuk memecah masalah kompleks menjadi bagian-bagian kecil yang lebih mudah dikelola, diuji, dan dipelihara. Kejelasan logika yang ditawarkan oleh FSM membantu mengurangi bug dalam perangkat lunak dan memastikan konsistensi dalam perangkat keras. Bagi siapa pun yang tertarik dalam rekayasa perangkat lunak atau desain sistem digital, pemahaman yang baik tentang FSM adalah keterampilan yang esensial.
