Algoritma mungkin terdengar seperti monopoli orang-orang IT, dalam artikel ini saya sedikit bercerita tentang algoritma ini, sejarahnya dan bagaimana algoritma ini mengubah dunia dan kita, sejak ribuan tahun yang lalu. Dan bagaimana kita sehari-hari telah menggunakan algoritma secara tidak sadar.
Saat ini hampir seluruh system menggunakan komputer, dari handphone, mobil, mesin cuci, bahkan sentral komunikasi. Komputer sendiri kalau di bongkar isinya tidak macam-macam, umumnya CPU, memory, storage dan I/O. Yang membuat komputer dapat melakukan bermacam-macam hal tentu semua juga tahu yaitu software-nya. Seringkali hardware yang sama dapat melakukan hal yang berbeda apabila memiliki software yang berbeda. Contohnya laptop kita walaupun hardware nya sama, bisa jadi sebagai mesin windows ataupun mesin Linux. Bahkan saat ini muncul teknologi software defined radio, software defined network, dll.
Jika kita korek lebih dalam lagi, umumnya software ini dibagun dari blok-blok yang kita sebut dengan algoritma. Apakah itu algoritma? Algoritma adalah suatu spesifikasi pasti untuk menyelesaikan suatu tipe masalah. Contohnya yang sering dipelajari orang di bidang komputer adalah algoritma sorting, atau mengurutkan. Dengan mengikuti langkah-langkah pasti dalam algoritma, komputer dapat mengurutkan suatu bilangan, tentu dengan kecepatan komputer, yang artinya cepat sekali.
Algoritma ini menyentuh sisi-sisi kehidupan kita paling dalam. Misalnya Google membangun algoritma PageRank untuk memberikan peringkat terhadap berbagai website yang kita cari melalui google. Kemudian algoritma MapReduce yang digunakan untuk mengelola data dalam ukuran besar yang disebut BigData, sehingga memungkinkan ribuan komputer bekerja secara parallel. Dan masih banyak lagi algoritma yang sudah dibuat untuk menyelesaikan berbagai masalah di dunia ini.
Algoritma ini menarik, karena ini adalah tools yang membantu kita dalam memecahkan masalah. Kita cukup berikan data-data yang dibutuhkan, viola, hasilnya keluar dengan ajaib. Misalnya contoh algoritma pengurutan di atas, kita berikan sekumpulan angka-angka, viola, angka-angka tersebut keluar dalam bentuk sudah diurutkan. Suatu alat yang sangat luar biasa. Dan hebatnya lagi, komputer membuatnya ter-eksekusi dengan sangat cepat dan akurat.
Algoritma sendiri sebenarnya bukan ekslusif milik orang IT, bahkan ribuan tahun yang lalu, manusia sudah membuat algoritma. Salah satu algoritma yang tertua di dunia adalah algoritma untuk mencari bilangan prima oleh Erasthosthenes, seorang ahli matematika, yang berhasil memperkirakan diameter bumi dengan sangat akurat.
Kira-kira begini lah algoritma Erasthosthenes dalam mencari bilangan prima :
- Create a list of consecutive integers from 2 through n: (2, 3, 4, …, n).
- Initially, let pequal 2, the smallest prime number.
- Enumerate the multiples of pby counting to n from 2p in increments of p, and mark them in the list (these will be 2p, 3p, 4p, …; the p itself should not be marked).
- Find the first number greater than pin the list that is not marked. If there was no such number, stop. Otherwise, let pnow equal this new number (which is the next prime), and repeat from step 3.
- When the algorithm terminates, the numbers remaining not marked in the list are all the primes below n.
Tidak perlu di mengerti, algoritma diatas, karena saya juga pusing. Tetapi dengan mengikuti 5 langkah yang ditunjukkan oleh Erasthosthenes, seseorang dengan mudah menemukan bilangan prima dari 2 hingga bilangan yang diinginkan. Ajaib kan?
Algoritma sendiri namanya bisa dilacak dari buku dengan judul Algoritmi de numero Indorum suatu buku terjemahan bahasa latin, yang apabila diartikan adalah Algoritmi, tentang angka India. Algoritmi adalah seorang ahli matematika, geografi dan astronomi dari Persia. Algoritmi sendiri di tempat aslinya dikenal dengan nama Al-Khwarizmi. Dalam buku itu ia menjelaskan cara menggunakan angka india, atau angka yang kita kenal saat ini, yang memang berasal dari India, walaupun lebih kita kenal sebagai angka Arab.
Buku Algoritmi de numero Indorum ini sangat berpengaruh di akhir jaman pertengahan di eropa, menjadi buku matematika yang paling banyak di baca pada saat itu. Buku ini merupakan revolusi di eropa, dan saya menyakini hal ini pula-lah yang mendorong budaya arab maju dengan sangat pesat. Buku ini mengajarkan suatu system bilangan, dimana posisi bilangan tersebut berada menentukan nilainya.
Misalkan angka 1 di angka 100 dan 1000 memiliki nilai yang berbeda. Mungkin sangat sulit bagi kita untuk menghargai system ini, karena sejak saya lahir, angka memang begitu. Tetapi di jaman dahulu hal ini merupakan terobosan, karena memungkinkan angka yang berjumlah 10, 0 – 9 dapat di re-use untuk menuliskan berapapun. Bandingkan dengan tulisan romawi kuno, yang memiliki notasi yang berbeda untuk angka 100 C dan angka 1000 M. Pengguna dari system bilangan ini dikenal dengan nama algorism.
Sehingga jika kita berpikir bahwa algoritma adalah sesuatu yang wah, sebenarnya sehari-hari kita sudah menggunakan algoritma dalam memodelkan bilangan. Algoritma dalam pemodelan bilangan ini ternyata sangat efisien dalam membangun algoritma-algoritma yang lain, misalnya penambahan, pengurangan, perkalian dan pembagian, juga merupakan algoritma. Hal ini terasa sangat mudah untuk saat ini, cukup dengan pensil dan kertas, kita bisa menyelesaikannya. Tetapi coba bayangkan betapa sulitnya untuk melakukan perhitungan 43 + 23 apabila kita menggunakan angka romawi. Oleh karena itu pada jaman romawi dan cina kuno, orang-orang menggunakan abacus, atau yang dikenal juga dengan sipoa, kemudian mengkonversi kembali menjadi angka romawi. Ini juga yang menyebabkan aliran angka di eropa saat itu terpecah menjadi dua, aliran algoritmi yang dikenal dengan algorism dan aliran abacus yang dikenal dengan abacist.
Abacus, alat untuk membantu perhitungan
Menurut pendapat saya, matematika merupakan salah satu dari berbagai disiplin ilmu yang berisi berbagai algoritma. Algoritma untuk aritmatika, algoritma untuk menghitung probabilitas, algoritma menghitung statistic, algoritma untuk menghitung pertumbuhan, algoritma untuk menghitung multi variable.
Dari contoh-contoh diatas, tampak bagaimana algoritma ini membantu manusia menyelesaikan permasalahan-permasalahan pelik dan melelahkan menjadi masalah yang relatif lebih mudah. Algoritma sendiri terus berkembang, mulai dari cara mencari bilangan prima, pemodelan angka, aritmatika, pembukuan, hingga menghitung lintasan orbit planet, semua kehidupan kita sebenarnya dibantu, bahkan diatur oleh algoritma ini
Algoritma akan terus berkembang, dan dengan kreatifitas kita dapat memanfaatkan algoritma yang sudah tersedia untuk menyelesaikan masalah kita sehari-hari dengan efektif dan efisien. Seperti menghitung investasi, menentukan harga produk, memperkirakan ETA, mengelola projek, menghitung TCO, pengambilan keputusan, pembukuan dll.
Satu hal menurut saya yang menyebabkan kita tidak tertarik dengan algoritma, kita tidak melihat korelasinya dengan dunia nyata, kita melihatnya hanya sebagai latihan akademis. Padahal sedikit saja kreativitas, kita bisa mendapatkan tools yang berharga secara gratis.
Algoritma telah mengubah dunia, dan ke depannya akan terus mengubah dunia. Gojek, Google, Toko Online, Mobil Otonom, Bitcoin. Kita sebaiknya juga jangan ketinggalan untuk belajar berbagai Algoritma.