Dalam matematika dan komputasi, algoritma atau algoritme
merupakan kumpulan perintah untuk menyelesaikan suatu masalah.
Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga
akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap
masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan
algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang
memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean danperbandingan) sampai tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus
dalam ilmu komputer yang mempelajari
karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah,
terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini
algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan.
Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang
sama.
Kompleksitas dari
suatu algoritma merupakan ukuran seberapa banyak komputasi
yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara
informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu
yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang
membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang
tinggi.
Kata algoritma berasal dari
latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana
tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12
"Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada
aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan
bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di
atas). Pada abad ke-18, istilah ini berkembang menjadialgoritma, yang
mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk
menyelesaikan suatu permasalahan. Masalah timbul pada saat akan menuangkan
bagaimana proses yang harus dilalui dalam suatu/sebuah sistem (program) bagi
komputer sehingga pada saat eksekusinya, komputer dapat bekerja seperti yang
diharapkan. Programer komputer akan lebih nyaman menuangkan prosedur
komputasinya atau urutan langkah proses dengan terlebih dahulu membuat gambaran
(diagram alur) diatas kertas.
Terdapat beragam klasifikasi algoritma dan
setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan
klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan
metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma
yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini.
Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.
·
Divide and Conquer,
paradigma untuk membagi suatu permasalahan besar menjadi
permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan
terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan.
Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah
besar dan kemudian memecahkan permasalahan-permasalahan kecil
yang terbentuk.
·
Dynamic
programming, paradigma pemrograman dinamik akan sesuai jika
digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih . Paradigma ini
sekilas terlihat mirip dengan paradigma Divide and Conquer,
sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang
lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan
yang dihadapi.
·
Metode serakah. Sebuah algoritma
serakah mirip dengan sebuah Pemrograman
dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam
setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat
terbaik pada saat itu.
Tidak ada komentar:
Posting Komentar