Pemrograman sudah menjadi kegiatan yang sangat penting di era teknologi informasi. Program yang berjalan di komputer desktop, laptop, telepon genggam, PDA, dan sebagainya, tidak tercipta begitu saja, tetapi ditulis melalui proses analisis dan perancangan yang cermat. Sebuah program komputer pada dasarnya mengimplementasikan suatu algoritma. Dengan kata lain, algoritma adalah ide dibalik program komputer apapun.
Definisi Algoritma
Algoritma adalah urutan langkah-langkah untuk memecahkan suatu masalah.
Terdapat definisi lain dari algoritma tetapi pada prinsipnya senada dengan definisi yang diungkapkan di atas yang dikutip dari beberapa literatur, antara lain:
Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran.
Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas.
Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi Algoritma adalah deretan komputasi yang mentransformasikan masukan menjadi keluaran.
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.
Contohnya jika kita mempunyai setumpuk kartu yang berjumlah n = 50 buah, maka secara tradisional langkah-langkah yang biasa dilakukan orang kalau mengurutkan kartu adalah dengan mencari kartu bernomer terkecil lebih dahulu, lalu letakan pada posisi pertama (atas). Selanjutnya, cari kartu dengan nomer terkecil berikutnya,lalu letakan dibawah kartu pertama.Begitulah kita mencari kartu dengan nomer terkecil ketiga, keempat dan seterusnya, samapi hanya tersisa satu kartu (kalau sudah tersisa satu kartu maka tidak perlu diurutkan lagi), dan kita memperoleh tumpukan kartu yang seluruh kartunya sudah terurut dari nomer kecil ke besar. Langkah-langkah pengurutan 50 kartu dapat kita tuliskan sebagai berikut :
- Cari kartu dengan nomer terkecil diantara kartu yang tersisa.
- Tempatkan kartu tersebut pada posisi yang tepat.
- Ulangi kembali dari langkah 1 sebanyak n-1 kali.
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 Algoritma
Algoritma adalah jantung ilmu computer atau informatika. Ditinjau dari asal usul kata, kata “algoritma” sendiri mempunyai sejarah yang cukup aneh. Kata ini tidak muncul di dalam kamus Webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad ibnu Musa al-Khuwarizmi ( al-Knuwarizmi dibaca orang barat menjadi algorism).
Pada tahun 1950, kata algoritma pertama kali digunakan pada “ algoritma Euclidean” (Euclid’s algorithm). Euclid, seorang matematikawan Yunani (lahir pada tahun 350 M), dalam bukunya berjudul Element menuliskan langkah-langkah untuk menemukan pembagi bersama terbesar (common greatest divisor atau gcd), dari dua buah bilangan bulat, mdan n [KNU73] (Euclid tidak menyebut metodenya sebagai algoritma, baru di abab modernlah orang-orang menyebut metodenya itu sebagai “algoritma Euclidean”).
Pembagi bersama terbesar dari dua buah bilangan bulat tak negative adalah bilangan bulat positif terbesar yang habis membagi kedua bilangan tersebut.
Misalnya, m=80 dan n=12. Semua factor pembagi 80 adlah
1,2,4,5,8,10,16,20,40,80,
Dan semua factor pembagi 12 adalah
1,2,3,4,6,12,
Maka gcd(80,12)=4. Langkah-langkah mencari gcd(80,12) dengan algoritma Euclidean sbb:
80 dibagi 12 hasilnya = 6, sisa = 8 (atau: 80 = 6 . 12 + 8)
12 dibagi 8 hasilnya = 1, sisa = 4 (atau: 12 =1 . 8 + 4)
8 dibagi 4 hasilnya = 2, sisa = 0 (atau: 8 = 4 .2 + 0)
Karena pembagian yang terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0, yaitu 4, menjadi gcd(80,12). Jadi, gcd(80,12) = gcd(12,8) =gcd(8,4) = gcd(4,0) = 4.
Terdapat beberapa versi algoritma Euclidean, salah satu versinya dituliskan di bawah ini:
ALGORITMA EUCLIDEAN:
{Diberikan dua buah bilangan bulat tak-negatif m dan n (m>=n).Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari keduabilangan tersebut, yaitu bilangan bulat positif terbesar yang habismembagi m dan n.}1. Jika n= 0 makam adalah jawabannya;stop.tetapi jika n#0,lanjutkan ke langkah 2.2. Bagilah m dengan n dan misalkan r adalah sisanya.3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulangkembali ke langkah 1.
Dengan menggunakan algoritma Euclidean ini, kita dapat menhitung gcd dari dua buah bilangan bulat sembarang secara sistematis.
Contoh-contoh algoritma yang sudah dijelaskan di atas memberi dua pesan penting. Pertama, sebuah algoritma harus benar. Kedua, algoritma harus berhenti, dan setelah berhenti, algoritma memberi hasil yang benar.
Ciri-ciri Algoritma yang baik: Menurut Donald E.Knuth dalam bukunya yang berjudul the Art Of Computer Programming. Algoritma mempunyai 5 ciri penting yaitu:
- Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
- Setiap langkah didefenisikan dengan tepat dan tidak berarti dua (ambiguous).
- Algoritma memiliki nol atau lebih masukan(input). Masukan ialah besaran yang diberikan kepada algoritma untuk diproses.
- Algoritma mempunyai nol atau lebih keluaran(output). Keluaran dapat berupa Pesan atau besaran yang memiliki hubungan dengan masukan.
- Algoritma harus sangkil (effective). Setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.
Ciri-ciri Algoritma yang baik:
- Tepat sasaran: memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan.
- Flexible dan portable: Flexible untuk dikembangkan lebih lanjut. Portable untuk digunakan pada berbagai system dan mesin.
- Bersih dari kesalahan system atau lojik.
- Efektif: setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.
- Murah: Efisien dalam pengguna piranti memori dan penyimpanan lainnya. Cepat waktu pelaksanaanya.
- Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan Pengembangan.
- Algoritma merupakan pemberian (description) pelaksanaan suatu proses.
- Tidak ambiguous: tidak bermakna ganda.
- Harus berhenti setelah mengerjakan sejumlah langkah terbatas.
Program dan Pemrograman
Algoritma baru efektif jika dijalankan oleh sebuah pemroses (processor). Pemroses itu bisa manusia, komputer, robot, mesin dan sebagainya. Pemroses membaca setiap instruksi di dalam algoritma lalu mengerjakannya. Suatu pemroses harus :
- Mengerti setiap langkah dalam algoritma.
- Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Kita memfokuskan pemroses algoritma adalah komputer. Komputer adalah alat bantu untuk menjalankan perintah-perintah di dalam algoritma yang telah “dimasukan” ke dalamnya. Agar komputer mengerti perintah yang dimaksudkan, maka perintah tersebut harus ditulis dalam bahasa yang dipahami olehnya. Oleh karena itu algoritma harus ditulis dalam bahasa khusus, yaitu bahasa komputer. Algoritma yang ditulis dalam bahasa komputer dinamakan program . Bahasa komputer yang digunakan dalam menulis program dinamakan bahasa pemrograman. Orang yang membuat program komputer disebut pemrogram. Dan kegiatan merancang dan menulis program disebut pemrograman. Di dalam pemrograman ada aktivitas menulis kode program, kegiatan ini dinamakan coding.