ALGORITMA DAN PEMROGRAMAN III MATERI Analisa Algoritma Algoritma























- Slides: 23

ALGORITMA DAN PEMROGRAMAN III

MATERI � Analisa Algoritma � Algoritma Greedy � Exploring Graph � Algoritma Probabilistic

PENILAIAN � Kuliah 50% � Praktikum 50% ◦ Tugas 20% ◦ UTS 30% ◦ UAS 50%

ANALISA ALGORITMA � Algoritma membantu kita memahami skalabilitas program kita � Analisa algoritma memberi gambaran informasi tentang ‘perilaku program’ kita � Mempelajari bagaimana menerapkan algoritma yang baik untuk kasus tertentu membedakan profesi system analyst dan programmer

Prinsip Perbandingan Algoritma Apa yang membuat sebuah algoritma dikatakan LEBIH BAIK dari algoritma yang lain? � Kompleksitas waktu (Time Complexity) � Kompleksitas ruang (Space Complexity) Kecenderungan saat ini: � ruang (hard disk) semakin murah � kapasitas data yang diproses semakin besar � waktu pemrosesan harus semakin cepat Kompleksitas waktu menjadi variabel yang sangat penting

Ukuran Efisiensi Waktu � Efisiensi suatu algoritma tidak dapat diukur dengan satuan waktu (detik, milidetik dsb), karena waktu tempuh algoritma sangat tergantung pada : ◦ ◦ ◦ Banyaknya data Spesifikasi komputer Hardware Compiler software Tegangan listrik Lain-lain

Efisiensi Waktu � Efisiensi waktu dalam algoritma diukur dengan satuan n (problem size) � 4 langkah untuk menentukan ukuran efisiensi waktu antara lain : ◦ ◦ Menentukan problem size (n) operasi dominan fungsi langkah g(n) kompleksitas waktu O(f(n)) Big Oh

Problem size

Menentukan Operasi Dominan � Operasi dominan merupakan operasi yang paling banyak dilakukan untuk memecahkan suatu permasalahan. � Operasi dominan ini sangat tergantung pada permasalahan dan operasi yang dilakukan yang banyaknya tergantung pada n

Contoh � Pada algoritma menentukan max/min operasi dominannya adalah operasi perbandingan “<“ atau “>” � Pda algoritma searching operasi dominannya adalah operasi “=“

Menentukan fungsi langkah g(n) � g(n) = banyak kali operasi dominan dilakukan dalam (n)

Menentukan kompleksitas waktu O(f(n)) � Suatu algoritma dengan fungsi langkah g(n) dikatakan mempunyai kompleksitas waktu O(f(n)) jika terdapat konstanta c>0 sedemikian hingga : g(n) ≤ c. f(n) untuk n > n 0 ◦ Algoritma Max. Min g(n)= 2 n-2 O(n) ◦ Algoritma Bubblesort g(n) = n 2/2 -n/2 O(n 2)

Efisiensi Algoritma � Faktor-faktor yang menentukan banyak langkah antara lain : 1. Banyaknya operator dasar yang digunakan 2. Assigment (konstanta c) 3. Function Call 4. Struktur Program - Sekuensial - Percabangan - Kalang (loop)

SEKUENSIAL � Misalkan dalam algoritma terdapat blok statement, masing-masing mempunyai banyak langkah : S 1 banyak langkah P 1 S 2 banyak langkah P 2 S 3 banyak langkah P 3 Sn banyak langkah Pn Total banyak langkah blok-blok statement tersebut adalah

Contoh Sekuensial �x x*y operasi 1 =1 � y a * sin(x) operasi 1, procedure 1 = 2 � Readln(b) assigment 1 =1 � Writeln (x+y+b) assigment 1 operasi 2 =3 Banyak langkah =7

Soal � Hitung banyak langkah dari algoritma berikut : read(panjang) read(lebar) luas panjang * lebar keliling 2 * (panjang + lebar) write(luas) write(keliling)

Percabangan Bentuk IF k THEN S 1 ELSE S 2 k = kondisi dengan banyak langkah c S 1 , S 2 = blok statement dengan banyak langkah P 1, P 2

Percabangan � Kasus terbaik mempunyai banyak langkah c + min (P 1, P 2) � Kasus terburuk mempunyai banyak langkah c + max (P 1, P 2) Operator dasar logika : AND, OR, NOT dihitung 1 langkah

Percabangan C=1 P 1 = 2 P 2 = 1 Kasus terburuk = c + max (P 1, P 2) = 1 + max(2, 1) = 3

Perulangan (Loop) � Yang dianalisa hanya For Loop � Bentuk umum For variable nilai awal To nilai akhir Step S

Perulangan (Loop) � Kasus I Statement S mempunyai banyak langkah yang tidak tergantung nilai counter For counter : awal To akhir S Counter ≤ Akhir S dieksekusi sebanyak akhir – awal + 2 kali Counter = counter + 1 S dieksekusi sebanyak akhir – awal + 1 kali

Perulangan (Loop) Banyak Langkah = (akhir – awal + 2) + (akhir – awal + 1) (p + 1) Contoh : For i = 1 to n x: =x+5 y: =y+x

Perulangan (Loop) � Kasus II Banyak langkah S bergantung nilai Counter Contoh : For i : = 1 To n x : = x + y For j : = i To n y : = i + j