Bagaimana Mesin Ini Bekerja
Aplikasi ini memvalidasi format pelat nomor kendaraan bermotor secara otomatis menggunakan Deterministic Finite Automaton (DFA), sebuah mesin yang membaca pelat karakter demi karakter dan berpindah antar state sampai bisa memastikan formatnya benar atau salah.
Alfabet Input
Mesin ini tidak membaca huruf per huruf secara langsung, melainkan mengelompokkan setiap karakter ke dalam tiga jenis simbol lebih dulu. Hanya tiga simbol inilah yang dikenali mesin.
Karakter apa pun di luar ketiga jenis ini, misalnya tanda baca atau simbol lain, tidak punya simbol yang cocok sehingga langsung membawa mesin ke state jebakan qtrap.
Apa itu DFA
DFA (Deterministic Finite Automaton) adalah mesin abstrak dengan sejumlah state terbatas, satu state awal, satu atau lebih state akhir, dan aturan transisi yang pasti untuk setiap kombinasi state dan simbol masukan. Karena bersifat deterministik, dari satu state hanya ada tepat satu tujuan untuk setiap simbol. Secara formal DFA didefinisikan sebagai 5-tuple:
- Q himpunan state: q0 sampai q11, ditambah qtrap
- Σ alfabet input: L (huruf), D (digit), S (spasi)
- δ fungsi transisi, lihat tabel transisi di bawah
- q0 state awal
- F himpunan state akhir: {q9, q10, q11}
Studi Kasus
Pelat nomor kendaraan bermotor di Indonesia mengikuti pola umum: kode wilayah berupa 1-2 huruf, nomor urut berupa 1-4 digit, lalu huruf seri sebanyak 1-3 huruf, dengan spasi sebagai pemisah antar bagian. Jumlah digit nomor urut memang tidak selalu 4. Nomor registrasi disusun mengikuti urutan waktu pendaftaran kendaraan di suatu wilayah, jadi kendaraan yang didaftarkan lebih awal wajar mendapat nomor yang lebih pendek, ditambah ada juga "pelat nomor cantik" yang sengaja dipilih pemiliknya. Karena itu contoh dengan digit lebih sedikit seperti D 12 AB tetap masuk akal secara umum, di samping contoh 4 digit seperti B 1234 ABC yang paling umum dijumpai. DFA pada aplikasi ini membaca pelat tersebut karakter demi karakter dan memastikan urutannya sesuai pola itu.
Aplikasi ini hanya memvalidasi susunan karakternya, bukan warna pelat.
Batasan Aplikasi
DFA ini dirancang khusus untuk pola pelat kendaraan sipil biasa (kode wilayah, nomor urut, huruf seri) seperti dijelaskan di atas. Beberapa jenis pelat khusus di Indonesia memakai pola yang sama sekali berbeda dan tidak akan pernah dinyatakan sah oleh mesin ini, meskipun pelat tersebut asli dan legal:
- Pelat dinas pejabat negara, contohnya RI 1 untuk Presiden. Formatnya hanya kode "RI" diikuti angka, tanpa kode wilayah dan tanpa huruf seri di belakang.
- Pelat korps diplomatik/konsulat, memakai kode CD, CC, atau CH dengan format angka yang berbeda dari pelat sipil biasa.
- Pelat instansi khusus, seperti kode RF atau ZZ yang dipakai kendaraan dinas instansi tertentu.
Kalau kamu memasukkan pelat semacam itu ke validator, hasilnya akan selalu ditolak, dan itu memang perilaku yang benar karena polanya sengaja di luar cakupan DFA ini.
Diagram State
Setiap panah adalah satu transisi, diberi label simbolnya: L huruf, D digit, S spasi. Lingkaran ganda menandakan state akhir (q9, q10, q11), tempat pelat dianggap sah kalau mesin berhenti di sana. Lingkaran merah putus-putus adalah qtrap, state jebakan yang membuat pelat ditolak begitu tercapai.
| State | Arti | State Akhir |
|---|---|---|
| q0 | Kondisi awal, belum ada karakter dibaca | - |
| q1 | Sudah membaca 1 huruf kode wilayah | - |
| q2 | Sudah membaca 2 huruf kode wilayah | - |
| q3 | Menunggu digit pertama nomor urut | - |
| q4 | Sudah membaca 1 digit nomor urut | - |
| q5 | Sudah membaca 2 digit nomor urut | - |
| q6 | Sudah membaca 3 digit nomor urut | - |
| q7 | Sudah membaca 4 digit nomor urut | - |
| q8 | Menunggu huruf pertama huruf seri | - |
| q9 | Sudah membaca 1 huruf seri | ya |
| q10 | Sudah membaca 2 huruf seri | ya |
| q11 | Sudah membaca 3 huruf seri | ya |
| qtrap | State jebakan, dicapai begitu ada karakter atau urutan yang tidak sesuai, bersifat absorbing sampai akhir input | - |
Alur Validasi
- Input pengguna dibersihkan lalu diubah menjadi huruf kapital.
- Setiap karakter diklasifikasikan ke simbol L, D, atau S. Karakter di luar itu langsung membawa mesin ke qtrap.
- Mesin berpindah state sesuai tabel transisi untuk setiap karakter, satu per satu.
- Setelah seluruh karakter habis, jika state akhir termasuk state akhir yang ditetapkan, pelat dinyatakan sah. Jika tidak, pelat ditolak dan alasannya ditampilkan.
Coba Sekarang
Kembali ke halaman beranda untuk menguji pelat nomor kamu sendiri dan melihat jejak transisi state-nya secara langsung.
Buka Validator