270 likes | 720 Views
ALGORITMA DAN PEMROGRAMAN III. MATERI. Analisa Algoritma Algoritma Greedy Exploring Graph Algoritma Probabilistic. PENILAIAN. Kuliah 50% Tugas 20% UTS 30% UAS 50% Praktikum 50%. ANALISA ALGORITMA. Algoritma membantu kita memahami skalabilitas program kita
E N D
MATERI • Analisa Algoritma • Algoritma Greedy • Exploring Graph • Algoritma Probabilistic
PENILAIAN • Kuliah 50% • Tugas 20% • UTS 30% • UAS 50% • Praktikum 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) • Menentukan operasi dominan • Menentukan fungsi langkah g(n) • Menentukan kompleksitas waktu O(f(n)) Big Oh
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 > n0 • Algoritma MaxMin g(n)= 2n-2 O(n) • Algoritma Bubblesort g(n) = n2/2-n/2 O(n2)
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 : S1 banyak langkah P1 S2 banyak langkah P2 S3 banyak langkah P3 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 S1 ELSE S2 k = kondisi dengan banyak langkah c S1 , S2 = blok statement dengan banyak langkah P1,P2
Percabangan • Kasus terbaik mempunyai banyak langkah c + min (P1, P2) • Kasus terburuk mempunyai banyak langkah c + max (P1, P2) Operator dasar logika : AND, OR, NOT dihitung 1 langkah
Percabangan C = 1 P1 = 2 P2 = 1 Kasus terburuk = c + max (P1, P2) = 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