Mesin Status
Memodelkan cara kerja mesin secara abstrak.
Mesin status adalah mesin abstrak untuk memodelkan suatu proses. Contoh sederhananya adalah seperti ini.
Ketika kamu menekan bolpoin, ujung bolpoin akan keluar. Ketika kamu menekan tombol yang sama sekali lagi, ujung bolpoinnya akan masuk kembali.
Keadaan masuk atau keluarnya bolpoin disebut sebagai status. Aksi memencet bolpoin disebut sebagai memberikan input kepada bolpoin tersebut. Setiap ada input yang diberikan, mesin ini akan mengganti status. Pergantian status ini disebut sebagai transisi. Dalam contoh ini, berarti aturan transisinya adalah:
- Jika status muncul dan diberi input tekan, status akan berubah menjadi sembunyi.
- Jika status sembunyi dan diberi input tekan, status akan berubah menjadi muncul.
Transisi ini dapat dinyatakan sebagai tabel seperti di bawah ini.
Status | tekan |
---|---|
Muncul | Sembunyi |
Sembunyi | Muncul |
Atau bisa juga dengan diagram seperti di bawah ini.
Kamu bisa mencoba melihat transisi yang terjadi pada gambar interaktif berikut.
Mesin pengenal URL
Mesin status tidak selalu sesederhana itu. Contohnya adalah mesin untuk mengenali URL di bawah ini.
URL adalah singkatan dari Uniform Resource Locator, yang kamu ketikkan di bagian atas browsermu untuk mengunjungi situs atau mengunduh file tertentu.
URL disusun atas beberapa bagian.
https | :// | en.wikipedia.org | :443 | /wiki/URL | ?ab=cd&ef=gh | #Syntax |
Skema | Host | Port | Path | Query | Fragment |
- Bagian http atau https biasanya tidak diketikkan tetapi ditambahkan otomatis oleh browser. Bagian ini disebut sebagai skema. Skema selalu diakhiri dengan tanda titik dua (:) disusul dengan dua garis miring (//).
- Nama domain, seperti berpikirmatematis.org, youtube.com, dan sebagainya.
- Kadang-kadang nama domain bisa diikuti dengan nomor port.
- Setelah nama domain dan nomor port, berikutnya adalah path, yaitu lokasi objek (misalnya halaman web) yang dicari.
- Path bisa diikuti oleh query. Query digunakan untuk argumen tambahan, misalnya kata yang dicari, urutan yang diinginkan, dan sebagainya.
- Bagian terakhir adalah fragment yang diawali tanda tagar (#). Fragment adalah penunjuk bagi bagian halaman yang dibuka. Contohnya, pada halaman ini, tagar #top menunjuk pada awal halaman.
Kita dapat dengan mudah mengenali URL dalam suatu teks. Tidak demikian halnya dengan komputer. Program untuk mendeteksi apakah suatu rangkaian kata adalah URL dapat dibuat menggunakan pemodelan mesin status. Untuk mendapat gambaran bagaimana prosesnya, silakan coba media interaktif berikut ini.
Cara kerjanya
Komputer akan selalu memulai dengan status INIT. Karakter dalam teks akan dibaca satu per satu, dan status akan berubah-ubah sesuai karakter yang sedang dibaca.
Misalnya, kamu mengetikkan:
URLnya adalah https://google.com
Komputer akan memulai dengan status INIT. Kemudian ia akan membaca huruf U, dan statusnya berubah menjadi SKEMA. Ketika ia membaca terus ia menemukan huruf R, L, n, y, a dan statusnya tidak berubah. Ketika selanjutnya huruf yang dibaca adalah spasi, berarti tidak cocok dengan alur diagram di atas. Akibatnya komputer akan mengganti statusnya menjadi BUKAN_URL, dan memulai dari awal untuk membaca kata adalah
.
Ketika komputer menemukan huruf h
dalam https, ia akan memulai lagi dengan status SKEMA. Demikian seterusnya hingga ditemukan karakter ://, yang akan mengganti statusnya menjadi PA, PB, dan PC. Tiga status ini diperlukan karena penyebutan rangkaian tandanya harus lengkap, ://
tidak boleh hanya :
atau :/
.
Setelah melalui karakter ://
komputer akan membaca huruf g, yang membuat statusnya berubah menjadi HOST. Demikian seterusnya hingga seluruh karakter google.com
sudah dibaca semua. Selesai membaca ini, state akan langsung berubah menjadi INI_URL. Pada saat state menjadi INI_URL, maka komputer akan mencatat barisan karakter dari ketika status SKEMA hingga status menjadi INI_URL, dan melaporkan rangkaian karakter tersebut sebagai URL.
Mengapa ini matematika?
Mesin status ini dapat kita golongkan sebagai matematika. Mesin ini dipelajari dalam ilmu rekayasa dan ilmu komputer. Namun perlu dicatat bahwa yang merupakan matematika adalah konsep mesin status itu sendiri, bukan mesin yang dibuat dengan konsep mesin status.
Bolpoin suatu hari akan rusak. Pegasnya mungkin akan meleset atau putus sehingga aturan perubahan statusnya akan dilanggar. Walaupun demikian, kita bisa mengatakan bolpoin itu rusak karena dalam pikiran kita ada konsep bolpoin yang bekerja dengan baik. Konsep ini termasuk matematika. Bolpoinnya sendiri tidak.
Sekarang mari kita selidiki kesesuaian mesin status dengan keenam syarat matematika sebelumnya.
Mesin ini diasumsikan tidak dilanggar
Aturan yang dibuat, yaitu perpindahan dari satu status ke status yang lain harus ditaati sepenuhnya agar mesin ini berjalan dengan baik.
Aturannya tidak multi tafsir
Dari satu status, syarat perpindahan ke status yang lain hanya berdasarkan input tertentu, yang tidak dapat ditafsirkan secara berbeda.
Tereduksi menjadi aturan sederhana
Di manakah letak tereduksinya? Kita melihat bahwa mesin status ini disusun dari komponen yang sangat sederhana: Status dan input. Dengan mengombinasikan status dan input yang berbeda-beda, kita bisa menyusun banyak sekali mesin status yang berbeda.
Bergantung hanya pada logika deduktif
Untuk menjalankan aturan dalam mesin-mesin status ini, kita cukup mengikuti aturan logika deduktif sederhana.
Misalnya pada contoh mesin status bolpoin:
Jika status muncul dan tombol ditekan, maka status berubah menjadi sembunyi.
Ternyata statusnya memang sedang muncul.
Ternyata tombol ditekan.
Berarti, status sekarang harus berubah menjadi sembunyi.
Konsisten
Tidak ada aturan perubahan status yang bertentangan satu sama lain.
Mengenai objek, relasi, dan operasi yang abstrak
Dalam mesin status ini kita tidak diharuskan membicarakan objek tertentu. Mesin status bolpoin tadi bisa diterapkan juga untuk saklar lampu, tombol play pada video, tombol AC, dan sebagainya.
Masih kurang matematika?
Kalau kamu termasuk kategori orang yang belum merasa greget kalau belum ada simbol-simbol tertentu, kamu mungkin akan cocok dengan definisi berikut ini.
Mesin status didefinisikan sebagai 5-tupel
\Sigma adalah himpunan simbol-simbol yang mewakili input.S adalah himpunan simbol-simbol yang mewakili status.s_0 adalah status awal dari mesin.\delta: S\times\Sigma \rightarrow S adalah fungsi transisi, yaitu perubahan status yang terjadi dari status lain akibat diberikannya input tertentu.F adalah himpunan simbol status yang mewakili keadaan diterima (seperti pada contoh URL).
Sebagai contoh, mesin status bolpoin di atas dapat dinyatakan sebagai
\Sigma = \{tekan\} S = \{muncul, sembunyi\} s_0 = muncul \delta(muncul, tekan) = sembunyi
\delta(sembunyi, tekan) = muncul F = \varnothing
Bagaimana? Greget bukan?
Berikutnya: Bagaimana dengan basket?