Anda membuka pelayar Internet untuk melayari laman web tertentu, dan dalam masa yang singkat, pelayar anda memaparkan mesej bahawa laman web itu tidak selamat. Microsoft Word, dengan segera boleh mengesan kesilapan ejaan sejurus anda menaip perkataan di dalam aplikasi tersebut.
Bagaimanakah kedua-dua aplikasi dapat memberi respon dengan pantas?
Ianya tidak boleh dilakukan dengan cara kita menyemak secara satu demi satu seperti kita mencari nama-nama tertentu di dalam sebuah senarai yang ditampal di papan kenyataan.
Benar anda boleh mencari berdasarkan abjad-abjad awalan nama tersebut dan tidak perlu membaca penuh nama untuk proses carian, namun ia masih tidak cukup pantas untuk mencapai kepantasan yang kita nikmati sekarang. Boleh jadi ada beribu-ribu nama yang mempunyai awalan sama, yang menyebabkan carian akan tetap menjadi lambat.
Jadi bagaimana aplikasi tersebut melakukannya?
Ia tidak menyimpan senarai tersebut tetapi ia mewakilkan nama-nama tersebut dalam bentuk nombor 1 di beberapa ‘lokasi’ yang berbeza. Untuk menyatakan nama yang dicari itu wujud dalam senarai tersebut, semua lokasi yang berkenaan mestilah diwakili oleh nombor 1. Hanya ada dua nombor yang digunakan dalam kaedah ini, iaitu 0 dan 1. Jika ada satu atau lebih lokasi yang bernombor 0, dan selebihnya adalah bernombor 1, itu bermakna nama itu tidak wujud di dalam senarai.
Mengapa 0 dan 1?
Hanya 0 dan 1 digunakan kerana nombor ini menggunakan storan terkecil di dalam komputer iaitu 1 bit setiap satunya. Anda perlu ingat bahasa komputer adalah berasaskan nombor binari iaitu nombor asas 2 yang mana nombornya hanyalah 0 dan 1. Nombor-nombor lain seperti 2 dan ke atas menggunakan lebih banyak bit ataupun dalam kata lain lebih perlu memori. Di dalam kaedah ini nombor 0 mewakili ‘Tiada’ dan nombor 1 ialah ‘Ada’.
Bagaimana ia menentukan lokasi nombor?
Lokasi nombor ditentukan melalui formula matematik khusus yang dipilih dan tidak ditukar-tukar di dalam aplikasi tersebut. Satu formula matematik akan memberi alamat satu lokasi nombor. Jika ada 7 formula matematik, ini bermakna akan ada 7 lokasi nombor.
Formula matematik ini akan menggunakan nama yang dicari sebagai pemboleh ubah untuk memberi jawapan alamat lokasi. Formula pertama akan mengira berdasarkan nama tersebut dan memberitahu komputer di mana lokasi nombor pertama. Lokasi ini akan diperiksa sama ada mengandungi nombor 0 atau nombor 1.
Proses ini akan diulang sehingga kesemua tujuh formula matematik telah digunakan. Sekiranya ketujuh-tujuh lokasi yang dijumpai mempunyai nombor 1, ini bermakna nama itu telah ada dalam senarai. Berdasarkan contoh pelayar Internet di permulaan artikel ini tadi, nama yang disimpan berdasarkan gabungan lokasi-lokasi ini adalah bersamaan dengan alamat laman web. Jika kesemua lokasi mengandungi nombor 1, ini bermakna pelayar Internet tersebut telah menyimpan nama laman web itu sebagai tidak selamat dan akan memberi amaran risiko kepada pengguna.
Bagaimana ia menjadi pantas?
Ia hanya perlu menjalankan sejumlah formula matematik untuk mengetahui sama ada nama yang dicari itu adalah wujud atau pun tidak dalam senarai. Ini adalah lebih pantas berbanding jika ia terpaksa mencari satu demi satu nama di dalam senarai tersebut. Jumlah tugasan yang perlu dilakukan bergantung kepada bilangan senarai tersebut.
Algoritma yang digunakan ini dikenali sebagai Bloom Filter sempena nama penciptanya iaitu Burton Howard Bloom. Algortima ini telah berusia 53 tahun dan artikel berkenaan algortima ini telah diterbitkan di dalam jurnal Communications of the ACM dengan tajuk “Space/Time Trade-offs in Hash Coding with Allowable Errors” pada tahun 1970. Statistik di Google Scholar menunjukkan artikel ini mempunyai sebanyak 10,158 sitasi iaitu jumlah bilangan rujukan dari artikel lain yang telah dibuat terhadap artikel ini.
Apabila kita melihat tajuk artikel jurnalnya, ia menyatakan tentang kesilapan yang dibenarkan. Ini adalah keunikan algoritma ini. Ada kesilapan yang akan dilakukan demi untuk mencapai kepantasan masa dan keberkesanan di dalam penggunaan ruang memori. Kesilapan akan wujud apabila formula matematik menghasilkan alamat lokasi yang bertindih untuk nama yang berbeza. Oleh itu, ia mungkin akan menyebabkan algoritma ini mengatakan sesuatu nama itu adalah wujud di dalam senarai itu sedangkan sebenarnya tidak. Begitu juga sebaliknya. Oleh kerana itu algoritma ini hanya sesuai digunakan untuk aplikasi yang tidak terlalu kritikal dalam keselamatan.
Terdapat pelbagai algoritma lain yang digunakan di dalam aplikasi-aplikasi yang kita gunakan setiap hari. Jika algoritma Bloom filter adalah berdasarkan gabungan formula matematik, ada juga algoritma yang diinspirasikan daripada alam sekeliling seperti Ant Colony Optimization, sistem sosial, muzik dan teknologi. Di sebalik perisian atau aplikasi yang kita gunakan setiap hari, terdapat pelbagai teori, konsep dan kaedah yang berkaitan dengan sains, teknologi, kejuruteraan dan matematik (STEM).
Kita memerlukan bakat-bakat di dalam STEM untuk memastikan kita tidak perlu bergantung kepada tenaga dari luar untuk memajukan negara ini. Perkembangan pesat revolusi industri yang kini masuk ke era 5.0 yang menyaksikan penguasaan kepintaran buatan dan automasi meningkatkan lagi keperluan tenaga kerja di dalam bidang sains komputer, analisa data dan kejuruteraan yang akan menerajui inovasi dan pertumbuhan negara seterusnya.
Teringat ungkapan Usop Wilcha di dalam filem Hantu Kak Limah, “itu lah pentingnya English education!” Bukan sahaja English education sebenarnya, tetapi semua jenis pendidikan.
Profesor Ts. Dr. Hairulnizam Mahdin
Fakulti Sains Komputer dan Teknologi Maklumat
Universiti Tun Hussein Onn Malaysia (UTHM)