ALGORITMA DAN PEMROGRAMAN III MATERI Analisa Algoritma Algoritma

  • Slides: 23
Download presentation
ALGORITMA DAN PEMROGRAMAN III

ALGORITMA DAN PEMROGRAMAN III

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

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

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

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

ANALISA ALGORITMA � Algoritma membantu kita memahami skalabilitas program kita � Analisa algoritma memberi

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

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,

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) �

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

Problem size

Menentukan Operasi Dominan � Operasi dominan merupakan operasi yang paling banyak dilakukan untuk memecahkan

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 “>”

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 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

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

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

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,

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 *

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

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)

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

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

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

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

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

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