Pages

Sabtu, 10 Desember 2011

Efisiensi algoritma



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

 




http://www.google.co.id/url?sa=t&rct=j&q=manfaat%20efisiensi%20algoritma&source=web&cd=3&ved=0CCYQFjAC&url=http%3A%2F%2Fwww.unsri.ac.id%2Fupload%2Farsip%2FANALISIS%2520ALGORITMA.pdf&ei=t5TjTp_jEsmoiAfbxpW2BQ&usg=AFQjCNGH5wjSL2kvfpn4JCQsJzTHSYF3ug&cad=rja