Diagram tersebut memperlihatkan FSM dengan dua buah state
dan dua buah input serta empat buah aksi output yang berbeda : seperti terlihat
pada gambar, ketika sistem mulai dihidupkan, sistem akan bertransisi menuju
state0, pada keadaan ini sistem akan menghasilkan Action1 jika terjadi masukan
Event0, sedangkan jika terjadi Event1 maka Action2 akan dieksekusi kemudian
sistem selanjutnya bertransisi ke keadaan State1 dan seterusnya.
Secara formal FSM dinyatakan oleh 5 tupel atau M=(Q, ∑, δ,
S, F),
(Utdirartama, 2001) dimana:
Q = himpunan state/kedudukan
∑ = himpunan symbol input/masukan/abjad
δ = fungsi transisi
S = state awal/ kedudukan awal (initial state), S Q
F = himpunan state akhir, F Q
3. Jenis-jenis FSM
FSM terdiri dari dua jenis, yaitu FSM ber-output dan FSM
tidak ber-output. FSM tidak ber-output digunakan untuk pengenalan bahasa dalam
komputer, dengan input yang dimasukkan akan diperoleh apakah input tersebut
dikenal oleh bahasa komputer atau tidak. Salah satu penggunaan FSM tidak
ber-output adalah program compiler, yaitu program untuk memeriksa apakah
perintah yang digunakan pengguna benar atau salah. Sementara untuk FSM
ber-output digunakan untuk merancang mesin atau sistem (Zen, 2008). Dan FSM
yang akan digunakan dalam penelitian ini adalah FSM ber-output, dan untuk
selanjutnya akan dituliskan dengan FSM saja.
Ada dua metode utama untuk memperlakukan FSM untuk
menghasilkan output. Yaitu Moore Machine dan Mearly Machine yang dinamakan
berdasarkan penemunya.
Kelebihan dan Kekurangan FSM
FSM memiliki beberapa kelebihan (Brownlee, 2010),
diantaranya :
1. Sederhana, sehingga mudah diimplementasikan
2. Bisa diprediksi responnya
3. Komputasi ringan
4. Relatif fleksibel
5. Merupakan metode AI lama yang bisa digunakan pada
berbagai sistem
6. Mudah ditransfer dari abstrak menjadi kode program
Selain memiliki banyak kelebihan, FSM juga mempunyai
beberapa kelemahan (Brownlee, 2010), diantaranya :
1. Karena sifatnya bisa diprediksi, maka implementasi pada
game kurang disukai
2. Implementasi pada sistem yang lebih besar lebih sulit
karena pengaturan dan pemeliharaannya jadi kompleks
3. Sebaiknya hanya digunakan pada sistem dimana sifat sistem
bisa didekomposisi menjadi state.
4. Kondisi untuk transisi state adalah tetap
Dari sudut pandang pengirim, pengiriman ulang adalah
obatnya. Pengirim tidak dapat mengetahui tentang paket data yang hilang, paket
ACK yang hilang atau jika paket data atau ACK tertunda. Dalam semua kasus,
tindakan yang diambil sama: pengiriman ulang. Penerapan mekanisme pengiriman
ulang berdasarkan waktu memerlukan timer penghitung mundur yang dapat
menginterupsi pengirim setelah waktu yang diberikan habis. Dengan demikian,
pengirim diharapkan mampu memulai timer setiap paket dikirimkan, entah paket
baru maupun paket yang dikirimkan ulang. Pengirim juga diharapkan dapat
merespon interupsi timer (melakukan tindakan yang tepat) dan menghentikan
timer.
Gambar 1 menunjukkan FSM pengirim pada rdt3.0, sebuah
protokol yang handal dalam mengirimkan data melalui saluran yang mudah korup
bahkan sampai kehilangan paket.
Gambar 2 merupakan FSM penerima pada protokol rdt 3.0.
Penerima harus menambahkan nomor urut paket yang disetujui oleh pesan ACK
dengan memasukkan argumen ACK[0] atau ACK[1] dalam udt_send() di FSM penerima.
Pada keadaan yang paling kiri, terdapat dua kondisi. Yaitu kondisi menerima
paket korup dan kondisi menerima paket baik. Jika kondisi menerima paket korup
terjadi, maka akan dikirimkan respon udt_send() dan dikembalikan ke alur
sebelumnya. Namun jika yang terjadi justru sebaliknya, maka tetap dikirimkan
udt_send() lalu diteruskan ke alur berikutnya dengan kode deliver_data().
Referensi
- http://blog.ub.ac.id/zulfahmi/2016/04/18/finite-state-machine/
- https://gamedevelopment.tutsplus.com/id/tutorials/finite-state-machines-theory-and-implementation--gamedev-11867
- http://www.sr2jr.com/textbook-solutions/computer-science/10302008/computer-networking-a-top-down-approach-transport-layer
- https://www.slideserve.com/jane/reliable-data-transfer-powerpoint-ppt-presentation




0 Comments