Ditinjau dari asal-usul katanya,
kata Algoritma sendiri mempunyai sejarah
yang aneh. Orang hanya menemukan
kata algorism yang berarti proses
menghitung dengan angka arab.
Anda dikatakan algorist jika Anda
menghitung menggunakan angka
arab. Para ahli bahasa berusaha
menemukan asal kata ini namun
hasilnya kurang memuaskan. Akhirnya
para ahli sejarah matematika
menemukan asal kata tersebut yang berasal
dari nama penulis buku arab yang
terkenal yaitu Abu Ja’far Muhammad
Ibnu Musa Al-Khuwarizmi.
Al-Khuwarizmi dibaca orang barat menjadi
Algorism. Al-Khuwarizmi
menulis buku yang berjudul Kitab Al Jabar Wal-
Muqabala yang artinya
“Buku pemugaran dan pengurangan” (The book of
restoration and
reduction).
Dari judul buku itu kita juga memperoleh akar
kata “Aljabar” (Algebra).
Perubahan kata dari algorism menjadi algorithm
muncul karena kata algorism sering
dikelirukan dengan arithmetic,
sehingga akhiran –sm berubah
menjadi –thm. Karena perhitungan dengan
angka Arab sudah menjadi hal yang
biasa, maka lambat laun kata algorithm
berangsur-angsur dipakai sebagai
metode perhitungan (komputasi) secara
umum, sehingga kehilangan makna
kata aslinya. Dalam bahasa Indonesia,
kata algorithm diserap
menjadi algoritma.
Pembuatan algoritma mempunyai
banyak keuntungan di antaranya:
1. Pembuatan atau penulisan
algoritma tidak tergantung pada bahasa
pemrograman manapun, artinya
penulisan algoritma independen dari
bahasa pemrograman dan komputer
yang melaksanakannya.
2. Notasi algoritma dapat
diterjemahkan ke dalam berbagai bahasa
pemrograman.
3. Apapun bahasa pemrogramannya, output
yang akan dikeluarkan sama
karena algoritmanya sama.
Algoritma memegang peranan
penting dalam bidang pemrograman. Sebegitu
pentingnya suatu algoritma,
sehingga perlu dipahami konsep dasar algoritma. Apalagi
untuk seorang programer, tentu
diperlukan suatu algoritma sehingga dapat membuat
program yang lebih efektif dan
efisien. Bagi kebanyakan orang, algoritma sangat
membantu dalam memahami konsep
logika pemrograman.
Algoritma adalah kumpulan
instruksi yang dibuat secara jelas untuk menunjukan
langkah-langkah penyelesaian
suatu masalah. Pada umumnya algoritma kurang lebih sama
dengan suatu prosedur yang sering
dilakukan setiap hari, misalnya prosedur untuk
mengganti ban bocor/pecah,
prosedur pemakaian telepon umum, prosedur membuat kue
dan lain-lain.
Dalam bidang komputer, misalnya
EDP (Elektronik Data Processing) atau MIS
(Management Information System),
algoritma sering dimanfaatkan untuk menyelesaikan
suatu masalah atau untuk proses
pengambilan keputusan. Seorang sistem analisis (analisist
system) tentunya
menggunakan algoritma untuk merancang suatu sistem. Bagi seorang
programer, algoritma digunakan
untuk membuat modul-modul program.
Guna memahami suatu algoritma,
harus dimiliki pengetahuan dasar matematika
karena pada dasarnya algoritma
lahir dari konsep logika matematika. Disini yang perlu
dilatih adalah kemampuan
logikanya agar benar-benar bisa menyusun langkah-langkah
penyelesaian masalah dengan baik.
Dalam buku ajar ini, disajikan
konsep dasar dan analisis algoritma. Pada bagian
konsep dasar dibahas komponen
utama, desain, dan contoh pembuatan. Selanjutnya, untuk
mendapatkan algoritma yang
efisien serta mendapatkan rumusan matematika sebagai
ukuran kerumitan (kompleksitas)
maka dibahas analisis algoritma dengan menggunakan
notasi O (big O).
Dalam ilmu komputer , efisiensi
digunakan untuk menjelaskan sifat dari suatu algoritma yang berkaitan dengan berapa banyak
berbagai jenis sumber daya yang dikonsumsinya.
Efisiensi algoritma dapat dianggap sebagai sejalan dengan rekayasa produktivitas untuk proses yang berulang atau terus
menerus, di mana tujuannya adalah untuk mengurangi konsumsi sumber daya,
termasuk waktu untuk selesai, untuk beberapa tingkat, diterima optimal.
Analisa yang
paling sering dilakukan pada suatu algoritma adalah waktu proses. Menentukan
waktu proses secara tepat merupakan pekerjaan yang sangat sulit karena waktu
proses secata eksak sangat terhgantung pada implementasi algoritma dan
perangkat keras yang dipakai. Analisa yang di inginkan untuk menyatakan
efisiensi algoritma haruslah dibuat se umum mungkin sehingga bias dipakai
pada semua algoritma, terlepas dari implementasi dan juga compiler yang
di pakai maupun perangkat keras yang digunakan. Akbiatnya analisa tidak dipakai
pada waktu proses secata eksak. Kompleksitas algoritma cukup di nyatakan dalam
order waktu proses (Big-Oh) secara fungsi jumlah data masukan yang diberikan.
Dalam analisa tersebut kita menfokuskan diri pada operasi aktif yang merupakan
pusat algoritma, yaitu bagian algoritma yang paling sering di eksekusi.
Bagian-bagian lain seperti pemasukan data,penugasan (asigment), dan lain-lain
dapat diabaikan karena bagian-bagian tersebut tidak sesering operasi aktif. Jumlah
eksekusi operasi aktif itulah yang selanjutnya dihitung
Contoh
Perhatikan
potongan program beikut ini yang menghitung jumlah n buah suatu bilangan ril
Carilah
operasi aktif program tersebut dan nyatakan order waktu dalam proses sebagai
fungsi jumlah masukan (n)
Penyelesaian
Untuk
mencari operasi aktif, haruslah di tentukan beberapa kali program
eksekusi pada tiap-tiap bagian.
• Bagian a,
eksukusi satu kali
• Bagian b,
merupakan bagian loop, kalang itu akan dip roses berdasarkan kenaikan harga I
dari i=1 hingga i=n.jadi statement
sum=sum+v[i] akan dip roses sebanyak n kali sesuai dengan kenaikan harga
i
• Bagian c,
akan di proses sekali
Oleh karena
bagian b merupakan bagian yang paling sering dip roses, maka bagian b merupakan
operasi aktif. Bagian a dan c dapat diabaikan karena bagian-bagian tersebut
tidak dip roses sesering bagian b
Banyak kali
bagian b diproses sama dengan banyak data yang dimasukan (=n). dengan demikian,
program penjumlahan n buah bilangan rill memiliki order sebanding dengan n.
dengan kata lain program memiliki O(n).
contoh.
Carilah
order waktu proses bagian-bagian program berikut ini
a. for i=2 to n
A=2*n +i*n
End for
b. for i=1
to n
for j=1 to i
A=n+i*j
End for
End for i
c. for
i=[n/2] to n
A=n-1
End for i
Penyelesaian
Jumlah
penyelesaian statement A=a*n+1*n mengikuti iterasi dalam I, yaitu dari
i=2 hingga i=n. jadi sebanyak (n-2) + 1=(n-1) kali. Perhatikan bahwa yang
dipentingkan disini bukanlah berapa banyak nilai variable A tetapi frekuensi
pemrosesan A, jadi Algoritma memiliki order O(n)
Pada
I=1, j
berjalan 1 hingga 1 sehingga A dip roses 1 kali
I=2, j
berjalan 1 hingga 2 sehingga A dip roses 2 kali
I=3, j
berjalan 1 hingga 3 sehingga A dip roses 3 kali
Dan
seterusnya

