Algoritma adalah elemen penting dalam pemrograman komputer karena memiliki peran yang sistematis dan logis untuk menyelesaikan masalah.
Artikel Staditek ini akan mengajak Anda untuk menjelajahi lebih lanjut konsep algoritma dalam dunia pemrograman komputer,
Yuk, simak pembahasan berikut ini untuk mengetahui apa itu algoritma, sejarahnya, fungsinya, ciri-cirinya, hingga contoh penerapannya!
Apa Itu Algoritma?
Menurut Kamus Besar Bahasa Indonesia (KBBI) daring, algoritma adalah prosedur sistematis untuk memecahkan masalah matematis dalam langkah-langkah terbatas.
Dengan kata lain, ini dapat diartikan sebagai “urutan logis” dalam pengambilan keputusan untuk memecahkan masalah.
Kata “algoritma” sendiri berasal dari bahasa Arab, yang artinya proses menghitung dengan angka Arab.
Seiring dengan perkembangan waktu, istilah ini semakin dikenal dan banyak digunakan dalam bidang komputer, yang dikenal sebagai algoritma pemrograman.
Ini memainkan peran sentral dalam ilmu komputer karena dapat mengendalikan hardware dan software melalui sintaks dan kode pemrograman.
Baca Juga: Mengenal Machine Learning dan Manfaatnya untuk Perusahaan
Sejarah Algoritma
Sejarah algoritma berasal dari karya Abu Ja’far Muhammad Ibnu Musa Al-Khawarizmi, seorang ilmuwan terkenal yang lahir di Khawarizm (sekarang Uzbekistan) pada tahun 770 M.
Al-Khwarizmi membuat kontribusi signifikan dengan menulis buku berjudul “Al Jabar wal-Muqabala” (The Book of Restoration and Reduction).
Buku ini tidak hanya memberikan landasan untuk kata “aljabar” atau algebra, tetapi juga menjadi asal mula istilah “algoritma”.
Awalnya, istilah ini merujuk pada aturan aritmatika yang digunakan untuk menyelesaikan masalah dengan menggunakan bilangan Arab.
Pada abad modern, istilah ini mulai dikenal di barat sebagai “algorism”.
Selanjutnya, pada tahun 1950, kata “algoritma” pertama kali muncul dalam konteks “algoritma Euclidean” yang ditemukan oleh Euclid, seorang matematikawan Yunani pada tahun 350 M.
Meskipun Euclid tidak menyebutnya sebagai algoritma, konsepnya tentang menemukan pembagi bersama terbesar menjadi dasar untuk penggunaan kata “algoritma” di masa modern.
Jenis-jenis Algoritma
Terdapat beragam variasi algoritma yang dimanfaatkan dalam dunia pemrograman komputer. Berikut adalah di antaranya:
1. Brute Force
Ini adalah tipe dasar yang mudah dimengerti karena sederhana.
Pendekatan yang diterapkannya ini mirip dengan cara manusia menyelesaikan masalah secara manual.
Brute force mencoba setiap kemungkinan kombinasi untuk menemukan solusi masalah.
2. Divide and Conquer
Pendekatan jenis divide and conquer adalah dengan mengelompokkan masalah ke dalam beberapa sub masalah atau masalah kecil yang sesuai dengan jenisnya.
Setiap sub masalah dipecahkan secara independen, lalu hasilnya digabungkan dengan solusi dari sub masalah lain untuk mendapatkan jawaban akhir.
3. Greedy
Dalam tipe greedy, solusi dibangun langkah demi langkah.
Keputusan untuk memilih bagian berikutnya didasarkan pada manfaat yang diberikannya tanpa mempertimbangkan pilihan sebelumnya.
4. Dynamic Programming
Ini adalah teknik yang memecah masalah menjadi submasalah yang lebih kecil dan menyimpan hasilnya untuk digunakan kembali.
Teknik ini juga dikenal sebagai memorisasi karena menyimpan hasil perhitungan sebelumnya untuk menghindari perhitungan yang berulang.
5. Backtracking
Algoritma backtracking adalah teknik untuk menyelesaikan masalah secara bertahap.
Solusi dicari satu per satu secara berangsur-angsur, dan ini juga menghapus solusi yang tidak berhasil untuk menghindari penggunaan yang tidak perlu.
Fungsi Algoritma
Beberapa fungsi algoritma adalah sebagai berikut:
- Memberikan dukungan dalam menyelesaikan masalah secara logis dan sistematis, algoritma dapat diterapkan secara berulang untuk menangani situasi yang serupa.
- Dalam menanggapi masalah yang kompleks, algoritma memberikan pendekatan yang lebih sederhana untuk memudahkan penyelesaian.
- Bagi para programmer, penggunaan algoritma membantu melacak setiap kesalahan yang mungkin timbul selama proses pengembangan.
- Meningkatkan kemampuan programmer untuk mengubah program dengan mudah tanpa harus merombak seluruh algoritma, cukup dengan melakukan perubahan pada waktu tertentu.
- Programmer dapat melakukan penyesuaian pada waktu yang ditentukan, memungkinkan pembaruan program untuk mengatasi masalah yang muncul tanpa memulai dari awal.
Baca Juga: 7 Tips Belajar Coding dari 0, Simak Disini!!
Karakteristik Algoritma
Donald E. Knuth menyatakan bahwa algoritma perlu memenuhi lima karakteristik penting seperti dijelaskan berikut ini:
Finiteness
Algoritma harus mencapai titik berhenti setelah melibatkan serangkaian langkah terbatas.
Program yang terus berjalan tanpa henti menunjukkan adanya kegagalan yang digunakan.
Definiteness
Setiap langkah dalam algoritma harus ditetapkan dengan jelas dan tanpa ambiguitas.
Setiap instruksi harus tegas sehingga dapat memastikan bahwa tidak ada kesalahan dalam menghasilkan output.
Input
Input mengacu pada masalah yang sudah dikenali dan akan dipecahkan oleh algoritma.
Algoritma dapat memiliki satu atau lebih input, yang merupakan informasi yang diperlukan agar algoritma dapat melakukan prosesnya.
Output
Algoritma menghasilkan satu atau lebih nilai output.
Ini merupakan solusi dari permasalahan yang dihadapi. Hasilnya dapat berupa pesan atau jumlah yang berkaitan dengan input.
Effectiveness
Algoritma dituntut untuk menjadi efisien, di mana setiap urutan atau langkah harus sederhana mungkin sehingga dapat diimplementasikan dalam waktu yang wajar.
Contoh Algoritma
Algoritma adalah konsep yang tidak hanya relevan dalam konteks pemrograman, melainkan juga dapat diaplikasikan dalam kehidupan sehari-hari. Berikut adalah contoh penerapannya:
Menyebrang Jalan
Dalam situasi kehidupan sehari-hari, kita sering dihadapkan pada contoh algoritma, salah satunya saat ingin menyeberang jalan.
Algoritma untuk menyeberang jalan melibatkan langkah-langkah berikut:
- Pertama, carilah tempat yang aman untuk menyeberang
- Periksa situasi dengan melihat ke kiri dan ke kanan
- Jika ada kendaraan yang sedang melintas baik dari kiri maupun kanan, maka kita perlu menunggu hingga jalanan aman untuk dilintasi.
- Setelah tidak ada lagi kendaraan yang melintas, baru Anda dapat melanjutkan untuk menyeberang jalan.
Menggosok Gigi
Contoh algoritma untuk melakukan sikat gigi dapat dijabarkan sebagai berikut:
- Ambil sikat gigi. Jika ternyata sikat gigi sudah tidak layak pakai, gantilah dengan yang baru yang tersedia.
- Oleskan pasta gigi. Jika pasta gigi sudah habis, segera ambil pasta gigi yang baru.
- Lakukan sikat gigi dengan teliti dan menyeluruh.
- Buang busa dan sisa pasta gigi yang terdapat pada sikat gigi.
- Bilas mulut hingga bersih.
- Cuci sikat gigi setelah digunakan.
- Letakkan sikat gigi dan pasta gigi kembali pada tempatnya semula.
- Selesai
Algoritma Pencarian Biner
Algoritma pencarian biner merupakan metode pencarian yang efisien untuk mencari elemen dalam suatu kumpulan data yang terurut.
Misalnya, kita memiliki daftar bilangan bulat yang terurut dari kecil ke besar.
Proses pencarian biner membagi daftar tersebut menjadi setengah pada setiap langkah, sehingga mengurangi jumlah data yang perlu diperiksa.
Algoritma Pengurutan Cepat (QuickSort)
Pengurutan adalah operasi umum dalam pemrograman.
Algoritma pengurutan cepat membagi daftar elemen menjadi dua bagian, lalu mengurutkan masing-masing bagian secara terpisah.
Pengurutan ini terus berlanjut hingga seluruh daftar terurut.
Algoritma Floyd-Warshall untuk Penentuan Jarak Terpendek
Dalam teori graf, algoritma Floyd-Warshall digunakan untuk menemukan jarak terpendek antara setiap pasangan simpul dalam suatu graf berbobot.
Algoritma ini berguna dalam pemodelan jaringan, seperti jaringan komunikasi.
Nah, itu dia penjelasan secara mendalam mengenai algoritma beserta salah satu contoh penerapannya.
Semoga artikel ini membantu Anda untuk memahami lebih jauh mengenai konsep ini, ya!