Review Algorithma
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 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.
DEFINISI ALGORITMA
- Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. (Rinaldi Munir, 2006).
- Algoritma diartikan sebagai prosedur langkah demi langkah untuk
memecahkan masalah atau penyelesaian tugas khususnya dengan menggunakan
bantuan komputer (merriam-webster`s Collegiate Dictionary).
- Algoritma sebagai urutan logis pengambilan keputusan untuk pemecahan masalah (Kamus Besar Bahasa Indonesia)
- Algoritma adalah teknik penyusunan langkah demi langkah penyelesaian
masalah dalam bentuk kalimat singkat dengan jumlah kata terbatas, namun
tersusun secara logis sistematis (suarga, 2006).
- Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk
kalimat dengan jumlah terbatas tetapi tersusun secara logis dan
sistematis.
- Prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkah-langkah tertentu dan terbatas jumlahnya.
Berdasarkan beberapa petikan defenisi, bahwa algoritma merupakan urutan
langkah yang logis dan mengikuti suatu urutan tertentu, tidak boleh
melompat-lompat (Microsoft Press Computer and internet Dictionaary 1997,
1998). Ini berarti, hasil dari urutan langkah-langkah tersebut harus
dapat ditentukan, benar atau salah. Langkah-langkah yang tidak benar
dapat memberi hasil yang salah.
Alur pemikiran dalam menyelesaikan
suatu pekerjaan yang dituangkan secara tertulis menyebabkan alogaritma
seseorang dapat juga berbeda dari alogaritma yang lain, yang tertuang
dalam bentuk kalimat, gambar, atau table tertentu (Moh. Sjukani,
Algoritma dan struktur data dengan C, C++, dan JAVA).
Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan
berbagai masalah pemprograman, terutama dalam komputasi numeris. Tanpa
algoritma yang dirancang baik, maka proses pemprograman akan menjadi
salah atau rusak, lambak dan tidak efisien.
Penulisan algoritma tidak tergantung dari spesifikasi bahasa
pemprograman dan komputer yang mengeksekusinya. Notasi alogaritma bukan
notasi bahasa pemprograman tetapi dapat diterjemahkan kedalam berbagai
bahasa pemprograman.
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. 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.
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.
- 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.
PENULISAN ALGORITMA
- Menggunakan bahasa natural (bahasa indonesia, bahasa inggris atau
bahasa yang di mengerti oleh manusia), kendala yang sering muncul adalah
pernyataan yang dibuat menggunakan bahasa natural adalah sering
menimbulkan kebingungan (ambiguous).
- Menggunakan flowchard (diagram alir). Pengguna diagram ali dalam
algoritma lebih baik dibanding pain 1, karena alogaritma dalam bentuk
flowchart baik secara visual tetapi bila algoritmanya panjang maka
flowchartnya juga menjadi repot.
- menggunakan pseudo-code. Penulisan ini dekat pada bahasa pemprograman
namun sulit dimengerti oleh orang yang tidak mengerti pemrograman
SYARAT / CIRI ALGORITMA
Syarat sebuah algoritma yang baik menurut Donald E. Knuth sebagai berikut:
-
Finiteness yaitu, Algoritma harus berakhir setelah melakukan sejumlah langkah proses.
- Definiteness yaitu, Setiap langkah algoritma harus didefenisikan dengan tepat dan tidak
menimbulkan makna ganda. Sehingga, langkah yang tepat menuliskan
algoritma adalah dengan menggunakan languange (bahasa pemprograman
computer).
- Input yaitu, Setiap algoritma memerlukan data sebagai data untuk masukan untuk diolah.
- Output yaitu, Setiap algoritma memberikan satu atau beberapa hasil luaran.
- Effectiveness yaitu, Langkah-langkah algoritma dikerjakan dalam
waktu yang wajar sebisa mungkin harus dapat dilaksanakan dan efektif.
JENIS PROSES ALGORITMA
-
Sequace Process merupakan Instruksi dikerjakan secara sekuensial (berurutan).
- Selection Process merupakan Instruksi dikerjakan jika memenuhi kriteria tertentu.
- Interation Process merupakan Instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
- Concurret Process merupakan beberapa instruksi dikerjakan secara bersama.
ALGORITMA SEBAGAI SUB BIDANG ILMU KOMPUTER
Ilmu komputer (computer science) adalah ilmu pengetahuan yang berisi
tentang teori, metodologi, desain dan implementasi, yang berhubungan
dengan komputasi, komputer dan algoritmanya dalam perspektif perangkat
lunak (sofware) maupun perangkat keras (hardware). Ilmu komputer sangat
berkaitan erat dengan algoritma, hampir semua bidang dari ilmu komputer
(computer science) tidak terlepas dari algoritma. Bahkan pada saat ini,
studi tentang algoritma telah menjadi subbidang khusus dalam ilmu
komputer. Studi atau ilmu yang mempelajari tentang algoritma sering
disebut dengan istilah algorithmics.
TAHAPAN ALGORITMA
Proses pemecahan masalah dengan algoritma tertentu hingga menjadi program dapat dibagi dalam tahapan berikut:
-
Mendefinisikan masalah : masalah yang ingin dicapai harus jelas lingkupnya.
- Membuat model (bentuk) matematis yang dapat digunakan untuk memecahkan masalah.
- Merancang algoritma: apa masukannya, bagaimana rincian prosesnya dan apa keluarannya.
- Menuliskan program: ubah algoritma menjadi program (source code) sesuai dengan bahasa pemprograman tertentu.
- Mengubah source code menjadi executable code melalui proses compiling
- Memeriksa hasil compiling, jika salah maka kembali ke tahap empat.
- Menjalankan program (run) untuk diuji kebenarannya dengan menggunakan berbagai data.
- Memperbaiki keselahan
- Mendokumentasikan program bila sudah benar.