Dalam matematika dan komputasi, algoritma 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 dan perbandingan) 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.
Sejarah istilah "algoritma"
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 menjadi algoritma, yang mencakup semua prosedur atau
urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu
permasalahan.Jenis-jenis Algoritma
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.
source:
wikipedia
Langganan:
Posting Komentar (Atom)
Posting Komentar