Você está na página 1de 22

Analisis Algoritma

Modul-1 : Pendahuluan
Rencana Penyajian
1. Pendahuluan
2. Fondasi Matematis
3. Analisa Complexity
4. Greedy Algorithm
5. Divide and Conquer
6. Dynamic Programming
7. Teknik Sort
8. Mid
9. Pattern Matching-1
10.Pattern Matching-2
11.Balanced Search Tree
12.Graph Traversal DFS/BFS
13.ShortestPathGraph Dijkstra&Floyd
14.Graph MST Prims & Kruskal
15.Algoritma Teori Bilangan
16.Final

24/08/2014 Analisis Algoritma, @Suarga 2


Referensi
1. T.Cormen, et.al, Introduction to Algorithm, MIT
Press
2. Seymour, Goodman E, Introduction to the
Design and Analysis of Algorithm, McGraw Hill
3. Suarga, Algoritma Pemrograman, Andi Offset
4. . Drozdek, A., Data Structures and Algoritmss in
C++, Brooks/Cole Pub., Australia, 2001
5. 5. Wilf, H.S., Algorithm and Complexity, Univ. of
Pennsylvania, 1994
6. Levitin,A., The Design and Analysis of
Algorithms, Pearson Education,Inc., New Jersey,
2012.
24/08/2014 Analisis Algoritma, @Suarga 3
Apa itu Algoritma?
Algoritma : teknik penyusunan langkah-
langkah penyelesaian masalah dalam bentuk
kalimat dengan jumlah kata terbatas tetapi
tersusun secara logis dan sistematis.
Algoritma : suatu prosedur yang jelas untuk
menyelesaikan suatu persoalan dengan
menggunakan langkah-langkah tertentu dan
terbatas jumlahnya.
Algoritma : susunan langkah yang pasti, bila
diikuti maka akan mentransformasi data input
menjadi informasi output.
24/08/2014 Analisis Algoritma, @Suarga 4
Algoritma Perkalian C=A*B
Andaikan simbol * (perkalian tidak
ada):
1. Beri nilai awal C=0
2. Bila A=0 maka cetak C, Selesai
3. Bila A<>0 maka tambahkan B ke C
4. Kurangi 1 nilai A
5. Pergi ke langkah-2

24/08/2014 Analisis Algoritma, @Suarga 5


Implementasi Perkalian
int A, B, C;
C=0;
input (A, B);
kali:
if (A = 0)
then Print C;
stop();
else C = C + B
A = A 1;
goto kali;
24/08/2014 Analisis Algoritma, @Suarga 6
Implementasi Perkalian
Fungsi Perkalian(int A, int B)
int C = 0;
while (A > 0) do
C = C + B;
A = A 1;
enddo
return C

Bila nilai A = m maka fungsi Perkalian ini akan


melakukan m penambahan dan m pengurangan,
dan m pemeriksaan (A>0), total 3m operasi atau
O(m), linier terhadap m
24/08/2014 Analisis Algoritma, @Suarga 7
Mengapa Analisis
Algoritma?
untuk mengetahui efisiensi algoritma
Algoritma yang efisien menghasilkan
program efisien
Program yang efisien lebih disukai
Program yang efisien memanfaatkan
hardware lebih baik
Programmer yang bisa menulis program
efisien lebih disenangi
Agar tahu mengapa program menjadi lambat
Agar tahu mengapa program out-of-memory
24/08/2014 Analisis Algoritma, @Suarga 8
Faktor yang mempengaruhi efisiensi

persoalan yang harus diselesaikan,


rumit?
algoritma
bahasa program
compiler
hardware komputer
kemampuan programmer
effektivitas programmer
24/08/2014 Analisis Algoritma, @Suarga 9
Bagaimana memperoleh
effisiensi
mencari tingkat kerumitan (complexity) dari
algoritma dalam memanfaatkan sumber daya (waktu
dan ruang/memory/storage)
Analisis algoritma = analisis pemakaian sumber daya
dari suatu algoritma
mencari algoritma alternatif yang biaya-nya lebih
murah, lebih hemat dalam pemakaian sumber daya
komputer
Karena kecepatan komputer bertambah sesuai
teknologi maka waktu bukan ukuran tepat
Storage semakin besar dan murah, juga bukan
ukuran tepat

24/08/2014 Analisis Algoritma, @Suarga 10


Analisis Algoritma
Analisis algoritma adalah suatu ilmu yang
digunakan untuk mengetahui ukuran kerumitan
(complexity) dari suatu algoritma sehingga dapat
diketahui apakah suatu algoritma cukup efisien
bila di-implementasi-kan.
Suatu ukuran kerumitan yang sering digunakan
adalah asymptotic time complexity, kerumitan
waktu asimptotik, suatu ukuran yang
menunjukkan perkembangan waktu proses
sesuai dengan pertambahan jumlah data input.

24/08/2014 Analisis Algoritma, @Suarga 11


Contoh: suatu algoritma yang memerlukan waktu
yang sebanding dengan kuadrat jumlah data input
biasa ditulis sebagai T(n) = O(n2)
Bila 1 data diselesaikan 0.1 detik maka 100 data
akan diselesaikan dalam waktu 100*100*0.1 detik
= 1000 detik
Ada beberapa formula kerumitan yang sering
digunakan, antara lain:
O(n) - linier
O(log n) logaritmik
O(n log n) linier logaritmik
O(n2) dan O(n3) polinomial
O(2n) exponensial
O(n!) - faktorial
24/08/2014 Analisis Algoritma, @Suarga 12
24/08/2014 Analisis Algoritma, @Suarga 13
Kompleksitas 1 detik 1 menit 1 jam
O(n) 1000 6 X 104 3.6 X 106
O(n log n) 140 4893 2.0 X 105
O(n2) 31 244 1897
O(n3) 10 39 153
O(2n) 9 15 21

24/08/2014 Analisis Algoritma, @Suarga 14


Maksimum Maksimum
Kompleksitas Problem pada Problem pada
mesin lambat mesin yang 10X
lebih cepat

O(n) n1 10 n1
O(n log n) n2 10 n2
bila n2 besar
O(n2) n3 3.16 n3
O(n3) n4 2.15 n4
O(2n) n5 n5 + 3.3

24/08/2014 Analisis Algoritma, @Suarga 15


Disain Algoritma
disain algoritma sangat menentukan
kerumitan algoritma, oleh sebab itu
perlu dibahas berbagai konsep
disain, antara lain:
Brute Force
Greedy algorithm
Divide and Conquer
Dynamic Programming
Tree/Graph traverse
24/08/2014 Analisis Algoritma, @Suarga 16
Contoh Analisis
Algoritma Perkalian:
Fungsi Perkalian(int A, int B)
int C = 0;
while (A > 0) do
C = C + B;
A = A 1;
enddo
return C
24/08/2014 Analisis Algoritma, @Suarga 17
Andaikan biaya operasi dasar + dan
adalah k, dan biaya pemeriksaan
adalah p
Perulangan akan terlaksanan A kali,
andaikan A=n
maka biaya algoritma ini adalah:
n * (k + k+p) = n(2k+p) O(n)
linier terhadap n

24/08/2014 Analisis Algoritma, @Suarga 18


Algoritma Bubble Sort
prosedur Sort_Larik ( in-out integer A[ ], input integer N )
{ mengurutkan isi larik secara ascending dengan metoda bubble sort }

Deklarasi
integer idx1, idx2, temp;

Deskripsi
for ( idx1 = 1 to N-1 step 1 )
for ( idx2 = idx1 + 1 to N step 1 )
{ bila A[idx1] > A[idx2] tukar }
if ( A[idx1] > A[idx2] )
then temp A[idx1];
A[idx1] A[idx2];
A[idx2] temp;
endif.
endfor.
endfor.

24/08/2014 Analisis Algoritma, @Suarga 19


Andaikan waktu untuk menjalankan instruksi
satu putaran luar adalah t1, dan putaran
dalam adalah t2
Andaikan masing-masing instruksi
pemindahan data adalah t3
Andaikan untuk memeriksa if perlu t4
Maka putaran dalam akan dilakukan selama:
(t4+t3 + t3 + t3)*(t2*n) = (t4 + 3*t3)*(n*t2)
putaran luar dilakukan t1*n
maka total waktu = t1*n(t2*t4*n + 3*t3*t2*n)
atau = t1*t2*t4*n2 + 3*t1*t2*t3*n2 =
= t1*t2*(t4 + 3*t3)*n2 = O(n2)

24/08/2014 Analisis Algoritma, @Suarga 20


Apa dampak dari O(n2) ?
Bila data bertambah 10 kali lipat
maka waktu akan berlipat 100 kali.
Misalnya waktu untuk mensort 300
data mahasiswa adalah 10 detik,
maka untuk 3000 data perlu 1000
detik = 16,67 menit
Kalau ada 30,000 mahasiswa perlu
1667 menit
= 27,78 jam

24/08/2014 Analisis Algoritma, @Suarga 21


Latihan
1. Tulis algoritma untuk mencari angka terbesar
dari sekumpulan bilangan bulat (N buah
bilangan).
2. Buatlah sebuah algoritma untuk menghitung
jumlah deret dengan N buah suku sbb:
S = 1 1/2 + 1/4 - 1/6 + 1/8 - 1/10 + 1/12 - 1/14 +
3. Tulis algoritma yang menerima masukan N
buah bilangan bulat kemudian menampilkan
rata-rata bilangan ganjil dan rata-rata
bilangan genap
Hitung juga biaya masing-masing algoritma.

24/08/2014 Analisis Algoritma, @Suarga 22

Você também pode gostar