Anda di halaman 1dari 7

Nama : Dian Marsela

NIM : 5302414009

Rombel : 1

Prodi : PTIK

Agorithmic efficiency

1.  Apakah Itu 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.

2.  Definisi Algoritma

“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara
sistematis dan logis”. Kata logis merupakan kata kunci dalam algoritma. Langkah-langkah
dalam algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar. Dalam
beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan
tertentu. Pertimbangan dalam pemilihan algoritma adalah, pertama, algoritma haruslah benar.
Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang
diberikan. Tidak peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah,
pastilah algoritma tersebut bukanlah algoritma yang baik.

Pertimbangan kedua yang harus diperhatikan adalah kita harus mengetahui seberapa baik
hasil yang dicapai oleh algoritma tersebut. Hal ini penting terutama pada algoritma untuk
menyelesaikan masalah yang memerlukan aproksimasi hasil (hasil yang hanya berupa
pendekatan). Algoritma yang baik harus mampu memberikan hasil yang sedekat mungkin
dengan nilai yang sebenarnya.
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari 2 hal yaitu efisiensi
waktu dan memori. Meskipun algoritma memberikan keluaran yang benar (paling
mendekati), tetapi jika kita harus menunggu berjam-jam untuk mendapatkan keluarannya,
algoritma tersebut biasanya tidak akan dipakai, setiap orang menginginkan keluaran yang
cepat. Begitu juga dengan memori, semakin besar memori yang terpakai maka semakin
buruklah algoritma tersebut. Dalam kenyataannya, setiap orang bisa membuat algoritma yang
berbeda untuk menyelesaikan suatu permasalahan, walaupun terjadi perbedaan dalam
menyusun algoritma, tentunya kita mengharapkan keluaran yang sama. Jika terjadi demikian,
carilah algoritma yang paling efisien dan cepat.

3.  Beda Algoritma dan Program

Program adalah kumpulan pernyataan komputer, sedangkan metode dan tahapan sistematis
dalam program adalah algoritma. Program ditulis dengan menggunakan bahasa
pemrograman. Jadi bisa disebut bahwa program adalah suatu implementasi dari bahasa
pemrograman. Beberapa pakar memberi formula bahwa :

Program = Algoritma + Bahasa (Struktur Data)

Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah
program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat
program menjadi kurang baik, demikian juga sebaliknya.

Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer
yang mengarah ke dalam terminologi algoritma. Namun, jangan beranggapan algoritma
selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-hari pun banyak terdapat
proses yang dinyatakan dalam suatu algoritma. Cara-cara membuat kue atau masakan yang
dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma. Pada setiap resep selalu
ada urutan langkah-langkah membuat masakan. Bila langkah-langkahnya tidak logis, tidak
dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang mencoba suatu resep masakan akan
membaca satu per satu langkah-langkah pembuatannya lalu ia mengerjakan proses sesuai
yang ia baca. Secara umum, pihak (benda) yang mengerjakan proses disebut pemroses
(processor). Pemroses tersebut dapat berupa manusia, komputer, robot atau alat-alat
elektronik lainnya. Pemroses melakukan suatu proses dengan melaksanakan atau
“mengeksekusi” algoritma yang menjabarkan proses tersebut.

Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan secara primitif yaitu
aksi-aksi yang didefenisikan sebelumnya dan diberi nama, dan diasumsikan sebelumnya
bahwa aksi-aksi tersebut dapat kerjakan sehingga dapat menyebabkan kejadian.

Melaksanakan algoritma berarti mengerjakan langkah-langkah di dalam algoritma tersebut.


Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan kepadanya. Juru
masak membuat kue berdasarkan resep yang diberikan kepadanya, pianis memainkan lagu
berdasarkan papan not balok. Karena itu suatu algoritma harus dinyatakan dalam bentuk yang
dapat dimengerti oleh pemroses. Jadi suatu pemroses harus:

 Mengerti setiap langkah dalam algoritma.


 Mengerjakan operasi yang bersesuaian dengan langkah tersebut.

4. Jenis - Jenis Algoritma


Algortima adalah sebuah strategi yang mengandalkan kemampuan berpikir secara logis untuk
memecahkan suatu masalah. Dalam algoritma, kita mulai dengan berpikir apa yang kita
miliki (kekuatan dan kelemahan), selanjutnya kita atur langkah (aksi) agar tujuan atau sasaran
yang kita harapkan dapat terwujud. Begitu juga dalam hal membuat program komputer. Ada
keterbatasan statements yang disediakan, namun dengan keterbatasan itu kita siasati langkah-
langkah untuk mencapai hasil program yang sesuai dengan keinginan.

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.

Berikut ini adalah beberapa rumpun algoritma yang terkenal, yaitu:

 Metode Greedy.
 Dynamic Programming.
 Kompresi data.
 Backtracking.
 Branch and Bound.
 Divide and Conquer

Masing-masing algoritma diatas memiliki keunggulan dan tentunya juga memiliki


kelemahan.

 Divide and Conquer yaitu 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 adalah 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 greedy merupakan 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.
 Kompresi Data adalah sebuah cara untuk memadatakan data sehingga hanya
memerlukan ruangan penyimpanan lebih kecil sehingga lebih efisien dalam
menyimpannya atau mempersingkat waktu pertukaran data tersebut.
 Backtracking merupakan perbaikan dari pendekatan kekerasan, yang secara sistematis
mencari solusi untuk masalah di antara semua pilihan yang tersedia.
 Branch and Bround (B&B) juga merupakan metode pencarian di dalam ruang solusi
secara sistematis. Branch and Bround digunakan untuk mencari solusi optimal dari
berbagai optimasi masalah, terutama dalam diskrit dan optimasi kombinatorial. Ini
terdiri dari pencacahan sistematis semua solusi kandidat, dimana himpunan bagian
besar calon sia-sia dibuang secara massal, dengan menggunakan perkiraan batas
bawah dan atas kuantitas yang sedang dioptimalkan.

5. Kompleksitas Algoritma

Algoritma adalah sekumpulan berhingga dari instruksi-instruksi untuk melakukan


perhitungan/ komputasi atau memecahkan suatu masalah. Sebuah algoritma tidak saja harus
benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan
efisien. Algoritma yang efektif diukur dari berapa jumlah waktu dan ruang (space) memori
yang dibutuhkan untuk menjalankannya.  Algoritma yang efisien adalah algoritma yang
meminimumkan kebutuhan waktu dan ruang. Kebutuhan waktu dan ruang suatu algoritma
bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses.
Keefektifan algoritma dapat digunakan untuk menilai algoritma yang bagus.

Kita dapat mengukur waktu yang diperlukan oleh sebuah algoritma dengan menghitung
banyaknya operasi/instruksi yang dieksekusi. Jika kita mengetahui besaran waktu (dalam
satuan detik) untuk melaksanakan sebuah operasi tertentu, maka kita dapat menghitung
berapa waktu sesungguhnya untuk melaksanakan algoritma tersebut.

Contoh 1. Menghitung rerata

a1 a2 a3 … an

Larik bilangan bulat

procedure HitungRerata(input a1, a2, …, an : integer, output

r : real)
{ Menghitung nilai rata-rata dari sekumpulan elemen larik integer a1, a2,

…, an.

Nilai rata-rata akan disimpan di dalam peubah r.

Masukan: a1, a2, …, an

Keluaran: r (nilai rata-rata)

Deklarasi

k : integer

jumlah : real

Algoritma

jumlah 0

k1

while k n do

jumlah jumlah + ak

k k+1

endwhile

{k>n}

r jumlah/n { nilai rata-rata }

1. Operasi pengisian nilai (jumlah 0, k 1, jumlah jumlah+ak, k k+1, dan r jumlah/n).


Jumlah seluruh operasi pengisian nilai adalah: t1 = 1 + 1 + n + n + 1 = 3 + 2n
2. Operasi penjumlahan (jumlah+ak, dan k+1). Jumlah seluruh operasi penjumlahan
adalah:  t2 = n + n = 2n
3. Operasi pembagian (jumlah/n). Jumlah seluruh operasi pembagian adalah t3 = 1

Total kebutuhan waktu algoritma HitungRerata:


t = t1 + t2 + t3 = (3 + 2n)a + 2nb + c detik

Model perhitungan kebutuhan waktu seperti di atas kurang berguna, karena dalam praktek
kita tidak mempunyai informasi berapa waktu sesungguhnya untuk melaksanakan suatu
operasi tertentu. Komputer dengan arsitektur yang berbeda akan berbeda pula lama waktu
untuk setiap jenis operasinya.

Model abstrak pengukuran waktu/ruang harus independent dari pertimbangan mesin dan
compiler apapun. Besaran yang dipakai untuk menerangkan model abstrak pengukuran
waktu/ruang ini adalah kompleksitas algoritma. Ada dua macam kompleksitas algoritma,
yaitu: kompleksitas waktu dan kompleksitas ruang.

Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk
menjalankan algoritma sebagai fungsi dari ukuran masukan n. Kompleksitas ruang, S(n),
diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma
sebagai fungsi dari ukuran masukan n. Dengan menggunakan besaran kompleksitas
waktu/ruang algoritma, kita dapat menentukan laju peningkatan waktu(ruang) yang
diperlukan algoritma dengan meningkatnya ukuran masukan n.

Dalam praktek, kompleksitas waktu dihitung berdasarkan jumlah operasi abstrak yang
mendasari suatu algoritma, dan memisahkan analisisnya dari implementasi. Tinjau algoritma
menghitung rerata pada Contoh 1. Operasi yang mendasar pada algoritma tersebut adalah
operasi penjumlahan elemen-elemen ak (yaitu jumlah jumlah+ak). Kompleksitas waktu
HitungRerata adalah T(n) = n.

6. Efisiensi algoritma.

Algoritma yang dapat dikatakan sebagai algoritma yang efisien, merupakan algoritma
yang dimana pada saat pemrosesan algoritma tersebut tidak memakan banyak waktu dan juga
ditak memakan banyak memori dalam pemrosesannya. Seperti yang sudah di jelaskan,
efisiensi algoritma umumnya di tinjau dari 2 hal, yaitu efisiensi terhadap waktu, dan efisiensi
terhadap memori.

Walaupun algoritma yang memberikan keluaran yang benar(paling mendekati


kenyataan), tetapi jika harus menunggu berjam-jam atau mungkin berhari-hari untuk
mendapatkan outputannya(dalam hal ini yang dimaksudkan adalah efisiensi dalam waktu),
algoritma tersebut biasanya tidak akan dipakai. Kebanyakan orang lebih menginignkan
algoritma yang memiliki pengeluaran atau hasil outputan yang lebih cepat.

Faktor-faktor yang dapat mempengaruhi waktu tempuh dari algoritma itu sendiri adalah :

1. Banyaknya langkah: Makin banyak langkah atau instruksi yang digunakan dalam
menyelesaikan masalah, maka makin lama waktu tempuh yang dibutuhkan dalam proses
tersebut
2. Besar dan jenis input data: Besar dan jenis input data pada suatu algoritma akan sangat
berpengaruh pada proses perhitugan yang terjadi. Jika jenis data adalah tingkat ketelitian
tunggal(Single precision), maka waktu tempuh akan menjadi relatif lebih cepat dibandingkan
dengan tingkat ketelitian ganda(double precesion)
3. Jenis operasi: Waktu tempuh juga dipengaruhi oleh jenis operasi yang digunakan. Jenis
operasi tersebut meliputi operasi matematika, nalar atau logika, atau yang lainnya. Sebagai
contoh, operasi perkalian atau pembagian akan memakan waktu lebih lama dibandingkan
operasi penjumlahan atau pengurangan.

Begitu juga dengan memori, algoritma yang memakan banyak memori merupakan algoritma
yang dapat dikatakan memiliki kualitas buruk. Semakin besar memori yang terpakai untuk
algoritma tersebut, maka akan semaikin jeleklah algoritma tersebut.

Salah satu faktor yang mempengaruhi pemakaian memori dalam suatu algoritma adalah
banyaknya langkah yang digunakan dan jenis variable data yang dipakai dalam suatu
algoritma.

Jadi dalam suatu algoritma, haruslah algoritma yang efisiensi akan waktu dan memori, karena
jika tidak maka pemrosesan dari algoritma tersebut akan menjadi lama, berat, dan tidak
efisien pastinya.

Sumber :

 http://lecturer.ukdw.ac.id/anton/download/strukdat1.pdf
 http://andikafisma.wordpress.com/algoritma-dan-pemrograman/
 http://zacki-sebastian.blogspot.com/2012/09/jenis-jenis-algoritma.html
 http://esha.students-blog.undip.ac.id/2010/09/20/matematika-diskrit-kompleksitas-
algoritma/
 http://apdys.wordpress.com/2011/12/12/efisiensi-algoritma/

Anda mungkin juga menyukai