Dalam arti yang luas algoritma merupakan suatu prosedur langkah-per-langkah untuk memecahkan masalah atau mencapai suatu tujuan [1]. Contoh yang umum untuk suatu algoritma adalah suatu resep, yang berisikan instruksi khusus untuk menyiapkan hidangan atau makanan [2] atau untuk mencapai sekolah dari rumah, menyiapkan roti sandwich keju bakar, dan mencari barang yang diingkan di kelontong [3]. Dalam istilah komputer, suatu algoritma merupakan seperangkat instruksi yang telah terdefinisi dengan baik untuk menyelesaikan suatu masalah tertentu, yang membutuhkan beberapa masukan dan menghasilkan suatu keluaran [4]. Algoritma penting bagi komputer dalam memproses data, di mana banyak program komputer berisikan algoritma yang merinci instruksi khusus apa yang harus dilakukan oleh sebuah komputer [5].
merupakan cara yang paling efektif di antara cara-cara lain,
tidak menyertakan kode komputer.
Ciri terakhir ini mengisyaratkan bahwa algoritma harus dituliskan sedemikian rupa sehingga dapat digunakan dalam berbagai bahasa pemrograman.
disadvantages
Terdapat beberapa kekurangan algoritma dari sisi pemrograman, seperti membutuhkan banyak waktu, sulit menunjukkan percabangan dan pengulangan, sulit diterapkan untuk persoalan yang besar [6]. Dari sisi internet, di mana algoritma digunakan untuk mesin mencari, penapis spam, permainan video, mesin rekomendasi, media sosial, umpan berita, dan peta, terdapat kekuatiran akan penerapan algoritma seperti implikasi yang belum sepenuhnya dapat dimengerti saat algoritma diprogram untuk aksi dan pengambilan keputusan harian, impak sosial yang belum terpikirkan karena umumnya algoritma ditulis untuk optimasi efisiensi dan keuntungan, membuat orang menjadi amat tergantung pada nasihat algoritma karena sudah menjadi kebiasaan (atau karena terlalu sulit untuk memikirkannya sendiri), algoritma dapat membunuh kecerdasan lokal, kemampuan lokal, bahasa minor dan wirausaha lokal karena hampir seluruh sumber daya terhisap oleh pesaing global, dan lainnya [7]. Terkait dengan kecerdasan buatan salah satu kekuatiran adalah bahwa kemanusiaan dan penilaian manusia akan hilang saat data dan pemodelan prediktif menjadi yang terpenting [8].
types
Algoritma dapat diklasifikasikan berdasarkan konsep yang digunakan dalam menyelesaikan tugas, beberapa jenis yang paling fundamental adalah [9]
Divide and conquer algorithms – membagi masalah menjadi sub-masalah yang lebih kecil dengan jenis yang sama, menyelesaikan semua sub-masalah, melakukan kombinasi solusi untuk menyelesaikan masalah semulanya.
Brute force algorithms – mencoba semua solusi yang mungkin sampai solusi yang memuaskan diperoleh.
Randomized algorithms – menggunakan sebuah bilangan acak setidaknya sekali dalam komputasi untuk mencari solusi suatu masalah.
Greedy algorithms – mencari suatu solusi optimal pada tingkat lokal dengan tujuan untuk mendapatkan solusi optimal bagi keseluruhan masalah.
Recursive algorithms – menyelesaikan versi terendah dan paling sederhana masalah, kemudian menyelesaikan versi masalah yang semakin rumit secara berangsung-angsur sampai diperoleh solusi untuk masalah sebenarnya.
Backtracking algorithms – membagi masalah ke dalam sub-masalah, yang tiap-tiapnya dapat dicoba untuk diselesaikan, akan tetapi bila solusi yang dinginkan tidak dapat diperoleh, mundur ke sub-masalah sebelumnya sampai suatu jalur ditemukan untuk bergerak maju menuju sub-masalah berikutnya.
Dynamic programming algorithms – memecahkan masalah rumit ke dalam kumpulan sub-masalah yang lebih sederhana, kemudian pecahkan setiap sub-masalah hanya sekali, simpan setiap solusinya untuk penggunaan ke depan ketimbang menghitung-ulang solusi-solusinya.
Terlah terdapat contoh-contoh implementasi berbagai algoritma dan masalah yang diselesaikannya [10, 11].
examples
Contoh algoritma dapat berupa mencari bilangan terbesar dalam suatu daftar [12]
Set max to 0.
For each number x in the list L, compare it to max. If x is larger, set max to x.
max is now set to the largest number in the list.
atau mengalikan dilanjukan menjumlahan bilangan dalam suatu kumpulan bilangan ganjil [13]
For each odd number from 1 to 9, multiply it by 2 and add 7 to it. Then, write out the results as a list separated by commas.
yang akan memberikan hasil 9, 13, 17, 21, 25.
Contoh pemanfaatan algoritma dalam dunia nyata misalnya adalah mengurutkan kertas ujian untuk dinilai, pengenalan wajah, pencarian Google, duplikasi hasil (resep, formula, eksperimen), lampu lalu-lintas, dan jadwal bis [14].
Dari kedua bagian besar contoh algoritma di atas, yaitu terkait bilangan dan implementasinya pada kehidupan sehari-hari, dapat terlihat secara tersirat bahwa dalam suatu algoritma dapat terdapat algoritma lain.
exer
Untuk membuat menu gorengan lengkap, perlu dipersiapkan pisang yang dibalut tepung lalu digoreng, nanas dibalut tepung lalu digoreng, tahu dibalut tepung lalu digoreng, nangka dibalut tepung lalu digoreng, dan ubi dibalut tepung lalu digoreng. Termasuk dalam jenis algoritma apa pembuatan menu gorengan lengkap ini?
Saat kita betul-betul lupa kombinasi angka untuk membuka brangkas dan tidak ada petunjuk kecuali jumlah digitnya, algoritma apa yang digunakan?
Pernille Tranberg, “Experts On The Pros & Cons of Algorithms”, Dataetisk Tænkehandletank, 18 Feb 2017, url https://dataethics.eu/prosconsai/ [20220117].
1) algorithm divide and conquer, karena sub-masalah berjenis sama;
2) algoritma brute force, karena mencoba satu per satu angka pembentuk digit yang diperbolehkan;