Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan...

56
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) 1 Fasilkom UI SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Pengenalan Analisa Algoritma

Transcript of Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan...

Page 1: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

Struktur Data & Algoritma

Suryana Setiawan, Ruli Manurung & Ade Azurat(acknowledgments: Denny)

1

Fasilkom UI

SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Pengenalan Analisa Algoritma

Page 2: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

2SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

al•go•rithm n.

1 Math. a) any systematic method of solving a certain kind of problem b) the repetitive calculations used in finding the greatest common divisor of two numbers (called in full Euclidean algorithm)

2 Comput. a predetermined set of instructions for solving a specific problem in a limited number of steps

Suatu set instruksi yang harus diikuti oleh komputer untuk memecahkan suatu masalah.

Program harus berhenti dalam batas waktu yang wajar (reasonable)

Tidak terikat pada programming language atau bahkan paradigma pemrograman (mis. Procedural vs Object-Oriented)

Algoritma

Page 3: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

3SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa Algoritma: Motivasi

perlu diketahui berapa banyak resource (time & space) yang diperlukan oleh sebuah algoritma

Menggunakan teknik-teknik untuk mengurangi waktu yang dibutuhkan oleh sebuah algoritma

Page 4: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

4SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Tujuan Pengajaran

Mahasiswa dapat memperkirakan waktu yang dibutuhkan sebuah algoritma.

Mahasiswa memahami kerangka matematik yang menggambarkan running time.

Mahasiswa mengenali beberapa teknik sederhana yang dapat memperbaiki running time.

Mahasiswa memahami bahwa suatu permasalahan dapat diselesaikan dengan beberapa algoritma dengan running time yang berbeda-beda.

Page 5: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

5SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Outline

Apa itu analisa algoritma?- what Bagaimana cara untuk analisa/mengukur? -

how Notasi Big-Oh Studi kasus: The Maximum Contiguous

Subsequence Sum Problem (Nilai jumlah berurutan terbesar)Algoritma 1: A cubic algorithm

Algoritma 2: A quadratic algorithm

Algoritma 3: An N log N algorithm

Algoritma 4: A linear algorithm

Page 6: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

6SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa Algoritma: What?

Mengukur jumlah sumber daya (time dan space) yang diperlukan oleh sebuah algoritma

Waktu yang diperlukan (running time) oleh sebuah algoritma cenderung tergantung pada jumlah input yang diproses.

Running time dari sebuah algoritma adalah fungsi dari jumlah inputnya

Selalu tidak terikat pada platform (mesin + OS), bahasa pemrograman, kualitas kompilator atau bahkan paradigma pemrograman (mis. Procedural vs Object-Oriented)

Page 7: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

7SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa Algoritma: How?

Bagaimana jika kita menggunakan jam? Jumlah waktu yang digunakan bervariasi

tergantung pada beberapa faktor lain: kecepatan mesin, sistem operasi (multi-tasking), kualitas kompiler, dan bahasa pemrograman.

Sehingga kurang memberikan gambaran yang tepat tentang algoritma

Wall-Clock time

CPU time

Process 1:Process 2:Process 3:Idle:

Wall-Clock time

Page 8: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

8SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa Algoritma: how?

Notasi O (sering disebut sebagai “notasi big-Oh”)Digunakan sebagai bahasa untuk membahas

efisiensi dari sebuah algoritma: log n, linier, n log n, n2, n3, ...

Dari hasil run-time, dapat kita buat grafik dari waktu eksekusi dan jumlah data.

Page 9: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

9SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Contoh: Mencari elemen terkecil dalam sebuah arrayAlgoritma: sequential scan / linear searchOrde-nya: O(n) – linear

public static int smallest (int a[]) assert (length of array > 0); int elemenTerkecil = a[0]; for (ii = 1; ii < a.length; ii++) if (a[ii] < elemenTerkecil) elemenTerkecil = a[ii]; return elemenTerkecil ;

Analisa Algoritma: How?

Page 10: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

10SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa Algoritma: How?

average case

input size

runningtime

n

best case

worst case

Page 11: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

11SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Big Oh: contoh

Sebuah fungsi kubik adalah sebuah fungsi yang suku dominannya (dominant term) adalah sebuah konstan dikalikan dengan n3.

Contoh:10 n3 + n2 + 40 n + 80n3 + 1000 n2 + 40 n + 80n3 + 10000

Page 12: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

12SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Dominant Term

Mengapa hanya suku yang memiliki pangkat tertinggi/dominan saja yang diperhatikan?

Untuk n yang besar, suku dominan lebih mengindikasikan perilaku dari algoritma.

Untuk n yang kecil, suku dominan tidak selalu mengindikasikan perilakunya, tetapi program dengan input kecil umumnya berjalan sangat cepat sehingga kita tidak perlu perhatikan.

Page 13: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

13SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Big Oh: issues

Apakah fungsi linier selalu lebih kecil dari fungsi kubik? Untuk n yang kecil, bisa saja fungsi linier > fungsi kubik Tetapi untuk n yang besar, fungsi kubik > fungsi linier Contoh:

• f(n) = 10 n3 + 20 n + 10 • g(n) = 10000 n + 10000• n = 10, f(n) = 10.210, g(n) = 110.000 f(n) < g(n)

• n = 100, f(n) = 10.002.010, g(n) = 1.010.000 f(n) > g(n)

Mengapa nilai konstan/koefesien pada setiap suku tidak diperhatikan? Nilai konstan/koefesien tidak berarti pada mesin yang

berbeda

∴ Big Oh digunakan untuk merepresentasikan laju pertumbuhan (growth rate)

Page 14: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

14SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Orde Fungsi Running-Time

Function Namec Constantlog N Logarithmiclog2 N Log-squaredN LinearN log N N log NN2 QuadraticN3 Cubic2N ExponentialN! Factorial

Page 15: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

15SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Fungsi Running-Time

Untuk input yang sedikit, beberapa fungsi lebih cepat dibandingkan dengan yang lain.

Page 16: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

16SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Fungsi Running-Time (2)

Untuk input yang besar, beberapa fungsi running-time sangat lambat - tidak berguna.

Page 17: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

17SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Contoh Algoritma

Mencari dua titik yang memiliki jarak terpendek dalam sebuah bidang (koordinat X-Y)Masalah dalam komputer grafis.Algoritma brute force:

•hitung jarak dari semua pasangan titik•cari jarak yang terpendek

Jika jumlah titik adalah n, maka jumlah semua pasangan adalah n * (n - 1) / 2

Orde-nya: O(n2) - kuadratikAda solusi yang O(n log n) bahkan O(n) dengan

cara algoritma lain.

Page 18: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

18SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Contoh Algoritma

Tentukan apakah ada tiga titik dalam sebuah bidang yang segaris (colinier).Algoritma brute force:

•periksa semua tripel titik yang terdiri dari 3 titik.

Jumlah pasangan: n * (n - 1) * (n - 2) / 6Orde-nya: O(n3) - kubik. Sangat tidak berguna

untuk 10.000 titik.Ada algoritma yang kuadratik.

Page 19: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

19SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Studi Kasus

Mengamati sebuah masalah dengan beberapa solusi.

Masalah Maximum Contiguous Subsequence SumDiberikan (angka integer negatif

dimungkinkan) A1, A2, …, AN, cari nilai maksimum dari (Ai + Ai+1 + …+ Aj ).

maximum contiguous subsequence sum adalah nol jika semua integer adalah negatif.

Contoh (maximum subsequences digarisbawahi) -2, 11, -4, 13, -4, 21, -3, 4, -2, -1, 6

Page 20: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

20SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Brute Force Algorithm (1)

Algoritma:Hitung jumlah dari semua sub-sequence yang

mungkinCari nilai maksimumnya

Contoh: jumlah subsequence (start, end)

• (0, 0), (0,1), (0,2), …, (0,5)• (1,1), (1,2), …, (1, 5)•…•(5,5)

2-413-411-2543210

Page 21: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

21SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Brute Force Algorithm (2) public static int maxSubSum1( int [] A ) int maxSum = 0; for(int ii = 0; ii < A.length; ii++) for( int jj = ii; jj < A.length; jj++) int thisSum= 0; for(int kk = ii; kk <= jj; kk++) thisSum += A[kk]; if( thisSum > maxSum ) maxSum = thisSum; return maxSum ;

2-413-411-2

ii jj

Page 22: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

22SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa

Iterasi (kk) sebanyak N dalam iterasi (jj) sebanyak N dalam iterasi (ii) sebanyak N artinya: O(N3), atau algoritma kubik.

Slight over-estimate yang dihasilkan dari perhitungan iterasi yang kurang dari N adalah tidak terlalu penting (kk <= jj).

Page 23: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

23SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Running Time yang sesungguhnya Untuk N = 100, waktu sebenarnya adalah 0.47

detik pada sebuah komputer. Dapat menggunakan informasi tersebut, untuk

memperkirakan waktu untuk input yang lebih besar:

T(N) = cN 3

T(10N) = c(10N)3 = 1000cN 3 = 1000T(N) Ukuran input meningkat dengan kelipatan 10 kali,

yang artinya meningkatkan running time dengan kelipatan 1000 kali.

Untuk N = 1000, perkiraan waktu 470 detik. (waktu sebenarnya 449 detik).

Untuk N = 10,000, perkiraan waktu 449000 detik (6 hari).

Page 24: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

24SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Bagaimana memperbaikinya?

Membuang sebuah iterasi; Tidak selalu bisa. Dalam contoh sebelumnya dimungkinkan: iterasi

paling dalam (kk) tidak diperlukan karena informasi nya terbuang.

Nilai thisSum untuk nilai jj selanjutnya dapat dengan mudah diperoleh dari nilai thisSum yang sebelumnya:Yang diperlukan: Aii + A ii+1 + … + A jj-1 + Ajj

Yang telah dihitung: Aii +A ii+1 + …+ A jj-1

Yang dibutuhkan adalah yang telah dihitung + Ajj

Dengan kata lain:

• sum (ii, jj) = sum (ii, jj - 1) + Ajj

Page 25: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

25SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

The Better Algorithm

public static int maxSubSum2( int [ ] A ) int maxSum = 0; for( int ii = 0; ii < A.length; ii++ ) int thisSum = 0; for( int jj = ii; jj < A.length; jj++ ) thisSum += A[jj]; if( thisSum > maxSum ) maxSum = thisSum; return maxSum ;

Page 26: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

26SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa

Dengan logika yang sama: Saat ini running time adalah quadratic, or O(N2)

Perkirakan waktu eksekusi untuk input berukuran ribuan. Algoritma ini masih dapat digunakan untuk ukuran input 10 ribu.

Ingat, bahwa algoritma kubik sudah tidak practical lagi bila digunakan untuk ukuran input tersebut.

Page 27: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

27SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Actual running time

Untuk N = 100, waktu sebenarnya adalah 0.011 detik pada sebuah komputer.

Perkirakan waktu sebenarnya untuk input lebih besar:

T(N) = cN 2

T(10N) = c(10N)2 = 100cN 2 = 100T(N) Input diperbesar dengan kelipatan 10 artinya

running time akan membesar dengan kelipatan 100.

Untuk N = 1000, perkiraan running time adalah 1.11 detik. (waktu sebenarnya 1.12 detik).

Untuk N = 10,000, perkiraan 111 detik (= actual).

Page 28: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

28SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Algoritma Rekursif

Gunakan pendekatan divide-and-conquer :Membagi (divide) permasalahan ke dalam

bagian yang lebih kecil

Menyelesaikan (conquer) masalah per bagian secara recursive

Menggabung penyelesaian per bagian menjadi solusi masalah awal

Page 29: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

29SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Algoritma Rekursif (2)

Urutan dengan nilai jumlah terbesar kemungkinan berada pada: terletak di setengah input awal terletak di setengah input akhir.berawal disetengan input awal dan berakhir di

setengah input akhir. Hitung ketiga kemungkinan tersebut. Cari

yang lebih besar. Kedua kemungkinan pertama dapat dengan

mudah dihitung secara rekursif.

Page 30: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

30SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Menghitung kemungkinan ketiga

dapat dilakukan dengan dua iterasi; lihat program

kemungkinan ketika berasal dari penjumlahan dua bagian, bagian pertama berawal pada setengah bagian input pertama berakhir di tengah. Bagian kedua berasal dari urutan index setengah +1 hingga setengah bagian input akhir.

Untuk bagian pertama gunakan iterasi dari kanan-ke-kiri (right-to-left) mulai dari element terakhir pada setengah input awal.

Untuk bagian kedua, gunakan iterasi dari kiri-ke-kanan, (left-to-right) mulai dari awal setengah input akhir.

Page 31: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

31SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Ilustrasi

4 -3 5 -2 -1 2 6 -2

4* 0 3 -2 -1 1 7* 5

Tengah-tengah

Page 32: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

32SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Versi Rekursif

private int maxSumRec (int[] a, int left, int right) int center = (left + right) / 2;

if(left == right) // Base case return a[left] > 0 ? a[left] : 0; int maxLeftSum = maxSumRec (a, left, center); int maxRightSum = maxSumRec (a, center+1, right);

for(int ii = center; ii >= left; ii--) leftBorderSum += a[ii]; if(leftBorderSum > maxLeftBorderSum) maxLeftBorderSum = leftBorderSum; ...

Page 33: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

33SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Versi Rekursif (lanj.)

... for(int jj = center + 1; jj <= right; jj++) rightBorderSum += a[jj]; if(rightBorderSum > maxRightBorderSum) maxRightBorderSum = rightBorderSum;

return max3 (maxLeftSum, maxRightSum, maxLeftBorderSum + maxRightBorderSum);

// publicly visible routine (a.k.a driver function)public int maxSubSum (int [] a) return maxSumRec (a, 0, a.length-1);

Page 34: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

34SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Detil Program

Pastikan dalam rekursif program anda ada base case untuk mengatasi zero-element arrays.

Gunakan method “driver” yang public (method rekursif dibuat private)

Aturan Rekursif :Memiliki base caseMembuat progress menuju ke base caseAsumsikan bahwa panggilan rekursif bekerja

dengan baik.Hindari menghitung sebuah penyelesaian dua

kali.

Page 35: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

35SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa

Misalkan T( N ) adalah waktu untuk menyelesaikan masalah dengan ukuran input N.

maka T( 1 ) = 1 (1 adalah quantum time unit ketika memproses base case; ingat konstanta tidak terlalu penting. ).

T( N ) = 2 T( N / 2 ) + NDua buah pemanggilan rekursif, masing-

masing berukuran N / 2. Waktu yang dibutuhkan untuk menyelesaikan masing-masing-nya adalah T( N / 2 )

Kasus ketiga membutuhkan O( N ) .

Page 36: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

36SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Bottom Line

T(1) = 1 = 1 * 1T(2) = 2 * T(1) + 2 = 4 = 2 * 2T(4) = 2 * T(2) + 4 = 12 = 4 * 3T(8) = 2 * T(4) + 8 = 32 = 8 * 4T(16) = 2 * T(8) + 16 = 80 = 16 * 5T(32) = 2 * T(16) + 32 = 192 = 32 * 6T(64) = 2 * T(32) + 64 = 448 = 64 * 7

T(N) = N(1 + log N) = N + N log N = O(N log N)

Page 37: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

37SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

N log N

Setiap algoritma rekursif yang menyelesaikankan permasalahan dengan membagi dua permasalahan kemudian melakukan proses linear (menggabung atau memecah) akan selalu O( N log N ) karena analisa yang sama tetap berlaku.

Algoritma yang O( N log N ) adalah jauh lebih baik dibanding quadratic.

Tapi masih belum lebih baik dibanding O( N ), namun tidak terlalu jauh berbeda.

Untuk permasalahan ini terdapat solusi yang linear. Menganalisa running time cukup jelas, namun memeriksa kebenaran program ataupun menyusun algoritma tersebut tidak mudah .

Page 38: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

38SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Algoritma linear

Algoritma Linear merupakan yang terbaik. Ingat: linear artinya O( N ). Running time yang linear selalu sebanding

dengan ukuran input. Sulit untuk membuat algoritma yang lebih baik dari linear (kecuali ada rumusan tertentu).

Jika input membesar dengan kelipatan 10, maka running time juga hanya akan membesar dengan kelipatan yang sama.

Page 39: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

39SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Ide

Ai,j adalah kumpulan bilangan mulai dari

urutan i hingga urutan j.

Si,j adalah dari kumpulan bilangan tersebut.

Theorema: Untuk Ai,j dengan Si,j < 0. Jika q >

j, maka Ai,q bukanlah deretan terurut yang

terbesar.

Page 40: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

40SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Bukti Theorema

Bukti:

Si,q = Si,j + Sj+1,q

Si,j < 0 Si,q < Sj+1,q

Page 41: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

41SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Program – versi 1

static public int maximumSubSequenceSum3 (int a[]) int maxSum = 0; int thisSum = 0; for (int jj = 0; jj < a.length; jj++) thisSum += a[jj]; if (thisSum > maxSum) maxSum = thisSum; else if (thisSum < 0) thisSum = 0; return maxSum;

Page 42: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

42SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Program – versi 2

static public int maximumSubSequenceSum3b (int a[]) int thisSum = 0, maxSum = 0; for (int ii = 0; ii < a.length; ii++) thisSum = Max(0, a[ii] + thisSum); maxSum = Max(thisSum, maxSum); return maxSum;

Page 43: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

43SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Running Time

Page 44: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

44SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Running Time: on different machines

Algoritma Kubik pada mesin Alpha 21164 at 533 Mhz menggunakan C compiler (mewakili mesin yang cepat)

Algoritma Linear pada mesin Radio Shack TRS-80 Model III(a 1980 personal computer with a Z-80 processor running at 2.03 Mhz) using interpreted Basic (mewakili mesin lambat)

n Alpha21164A,

C compiled,Cubic

Algorithm

TRS-80,Basic interpreted,Linear Algorithm

10 0.6 microsecs 200 milisecs100 0.6 milisecs 2.0 secs

1,000 0.6 secs 20 secs10,000 10 mins 3.2 mins

100,000 7 days 32 mins1,000,000 19 yrs 5.4 hrs

Page 45: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

45SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Running Time: Moral Of The Story

Bahkan teknik programming yang terbaik tak akan dapat membuat sebuah algoritma yang tidak efisien menjadi cepat.

Sebelum kita menginvestasikan waktu untuk mencoba mengoptimisasi program, kita harus pastikan algoritma nya sudah yang paling efisien.

Page 46: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

46SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Algoritma Logaritme

Definisi Formal Untuk setiap B, N > 0, logB N = K, if B K = N. Jika (base) B diabaikan, maka default-nya

adalah 2 dalam konteks ilmu komputer (binary representation).

Contoh: log 32 = 5 (karena 25 = 32) log 1024 = 10 log 1048576 = 20 log 1 milyard = sekitar 30

logaritme berkembang jauh lebih lambat dari N dan lebih lambat dari akar kuadrat dari N.

Page 47: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

47SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Contoh Algoritma Logaritme

BITS IN A BINARY NUMBERBerapa banyak bits dibutuhkan untuk

merepresentasikan bilangan bulat? REPEATED DOUBLING

Mulai dari X = 1, berapa kali X harus dikalikan dua agar mendekati nilai N?

REPEATED HALVINGMulai dari X = N, jika N dibagi dua terus

menerus, berapa kali iterasi agar membuat N lebih kecil atau sama dengan 1 (Halving rounds up).

Jawaban untuk seluruh pertanyaan diatas adalah: log N (dibulatkan).

Page 48: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

48SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Mengapa log N?

B bits menyatakan 2B bilangan bulat. Maka 2B adalah minimal sebesar N, maka B adalah minimal log N. Karena B bilangan bulat, maka pembulatan dibutuhkan.

Pendekatan serupa untuk contoh-contoh lain.

Page 49: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

49SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Repeated Halving Principle

Sebuah algoritma adalah O( log N ) jika membutuhkan waktu konstan untuk membagi input permasalahan dan mengerjakan masing-masing-nya secara rekursif. (biasanya 1/2).

Penjelasan: Akan terjadi sebanyak log N dari proses konstan tersebut.

Page 50: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

50SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Linear Search

Bila diberikan sebuah bilangan bulat X dan sebuah array A, kembalikan posisi X dalam A atau sebuah tanda bila tidak ada X dalam A. Jika X muncul lebih dari sekali, kembalikan posisi manapun. Array A tidak perlu diubah.

Jika array input tidak terurut, solusinya adalah menggunakan linear search. Running times: pencarian tidak berhasil: O( N ); setiap element

diperiksa pencarian berhasil:

• Worst case: O( N ); setiap element diperiksa• Average case: O( N ); setengah bagian diperiksa

Apakah kita akan dapat melakukannya lebih baik bila diketahui array input terurut?

Page 51: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

51SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Binary Search Ya! Gunakan binary search. Lihat bilangan ditengah (asumsi array terurut dari kiri

ke kanan) Kasus 1: Jika X lebih kecil dari bilangan ditengah,

maka hanya perlu lihat sub array bagian kiri. Kasus 2: Jika X lebih besar dari bilangan ditengah,

maka hanya perlu lihat sub array bagian kanan Kasus 3: Jika X sama dengan bilangan ditengah,

maka selesai. Base Case: Jika input sub array kosong, X tidak

ditemukan. Logaritme sesuai dengan the repeated halving

principle. Algoritma binary search pertama dipublikasikan tahun

1946. Published binary search pertama tanpa bugs tidak muncul hingga 1962.

Page 52: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

52SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

/** Performs the standard binary search using two comparisons per level. @param a the array @param x the key @exception ItemNotFound if appropriate. @return index where item is found.*/public static int binarySearch (Comparable [ ] a, Comparable x ) throws ItemNotFound int low = 0; int high = a.length - 1; int mid;

while( low <= high ) mid = (low + high) / 2; if (a[mid].compareTo (x) < 0) low = mid + 1; else if (a[mid].compareTo (x) > 0) high = mid - 1; else return mid; throw new ItemNotFound( "BinarySearch fails" );

Page 53: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

53SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Analisa program Binary Search

Dapat melakukan satu perbandingan tiap iterasi dari pada dua iterasi dengan cara menggantikan base case:Save the value returned by a[mid].compareTo (x)

Average case dan worst case dalam algoritma hasil revisi adalah sama : 1 + log N perbandingan (dibulatkan). Contoh: If N = 1,000,000, maka 20 bilangan dibandingkan.

Sequential search akan lebih banyak 25,000 kali dalam kondisi rata-rata (average case).

Page 54: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

54SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Big-Oh Rules (1)

Ekspresi matematika untuk menyatakan tingkat laju pertumbuhan relatif:

DEFINITION: (Big-Oh) T(N) = O(F(N)) jika ada konstan positif c dan N0 sehingga T(N) ≤ c F(N)

untuk N ≥ N0.

DEFINITION: (Big-Omega) T(N) = Ω (F(N)) jika ada konstan c dan N0 sehingga T(N) ≥ c F(N) untuk N

≥ N0

DEFINITION: (Big-Theta) T(N) = Θ (F(N)) jika dan hanya jika T(N) = O(F(N)) dan T(N) = Ω (F(N)).

DEFINITION: (Little-Oh) T(N) = o(F(N)) jika dan hanya jika T(N) = O(F(N)) dan T(N) ≠ Θ (F(N)).

Page 55: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

55SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Big-Oh Rules (2)

Arti dari beberapa fungsi tingkat laju.(diambil dari Weiss 2006)

Jika ada lebih dari satu parameter, maka aturan tersebut berlaku untuk setiap parameter. 4 n log(m) + 50 n2 + 500 m + 1853

O(n log(m) + n2 + m)

4 m log(m) + 50 n2 + 500 m + 853

O(m log(m) + n2)

Page 56: Struktur Data & Algoritmaaren.cs.ui.ac.id/sda/resources/sda2010/04_analisis.pdf · permasalahan dapat diselesaikan dengan ... adalah sebuah konstan dikalikan dengan n3. Contoh: ...

56SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010

Latihan

Urutkan fungsi berikut berdasarkan laju pertumbuhan (growth rate)N, √N, N1.5, N2, N log N, N log log N, N log2 N, N

log (N2), 2/N, 2N, 2N/2, 37, N3, N2 log N A5 + B5 + C5 + D5 + E5 = F5

0 < A ≤ B ≤ C ≤ D ≤ E ≤ F ≤ 75

Rancang algoritmanya.

Apakah algoritm tersebut sudah efisien?