Strategi Algoritma Kuliah 2 Kompleksitas Algoritma E Haodudin

  • Slides: 31
Download presentation
Strategi Algoritma Kuliah 2 : Kompleksitas Algoritma E. Haodudin Nurkifli Teknik Informatika Universitas Ahmad

Strategi Algoritma Kuliah 2 : Kompleksitas Algoritma E. Haodudin Nurkifli Teknik Informatika Universitas Ahmad Dahlan

Jenis algoritma • Divide and conquer : menyederhanakan problem yang besar. • Greedy methode

Jenis algoritma • Divide and conquer : menyederhanakan problem yang besar. • Greedy methode : mencari yang optimal pada saat itu. Algoritma : jumlah langkah yang berhingga (finite) instruksinya jelas Contoh : for i do 10 then. . .

Tujuan Menganalisis algoritma • Efisiensi waktu • Efisiensi storage

Tujuan Menganalisis algoritma • Efisiensi waktu • Efisiensi storage

Analisis algoritma • Menentukan karakteristik kinerja (memprediksi sumber daya) • Mengapa ? ü Memilih

Analisis algoritma • Menentukan karakteristik kinerja (memprediksi sumber daya) • Mengapa ? ü Memilih algoritma yang paling efisien dari beberapa alternatif penyelesaian untuk kasus yang sama ü Mencari waktu yang terbaik untuk keperluan praktis ü Apakah algoritma itu optimal untuk beberapa kasus atau ada yang lebih baik

Runing time • fungsi dari input size • Memanggil instruksi sederhana dan mengakses ke

Runing time • fungsi dari input size • Memanggil instruksi sederhana dan mengakses ke memory word sebagai “primitive operation” atau “step” • Jumlah step eksekusi algoritma pada input tersebut • Dikenal juga “complexity and input”

Kompleksitas tergantung • Ukuran input bergantung pada problem ü Misalkan jumlah data yang diurutkan

Kompleksitas tergantung • Ukuran input bergantung pada problem ü Misalkan jumlah data yang diurutkan • Karakter lain dari input ü Apakah data sudah terurut ü Apakah ada lingkaran dalam grafik

Kompleksitas • Worst-case : kompleksitas waktu untuk waktu terburuk (waktu tempuh bernilai maksimum dari

Kompleksitas • Worst-case : kompleksitas waktu untuk waktu terburuk (waktu tempuh bernilai maksimum dari suatu fungsi f(n)) atau Tmax(n) • Best-case : kompleksitas waktu untuk waktu terbaik (kompleksitas waktu yang bernilai minimum dari suatu fungsi f(n)) atau Tmin(n) • Average-case : kompleksitas waktu untuk kasus rata-rata

Metode Analisis 1. Asymptotic/theoretic/mathematic : berdasarkan pendekatan secara teori atau atas dasar analisa secara

Metode Analisis 1. Asymptotic/theoretic/mathematic : berdasarkan pendekatan secara teori atau atas dasar analisa secara matematik 2. Empirical/Practical/Empiris/Praktis : berdasarkan pendekatan praktis yang biasanya didasarkan atas data yang telah ada atau data-data yang di-generete / dibangkitkan

Asymptotic • Menggambarkan karakteristik/perilaku suatu algoritma pada batasan tertentu (berupa suatu fungsi matematis) •

Asymptotic • Menggambarkan karakteristik/perilaku suatu algoritma pada batasan tertentu (berupa suatu fungsi matematis) • Dituliskan dengan notasi matematis yg dikenal dgn notasi asymptotic • Notasi asymptotic dapat dituliskan dengan beberpa simbul berikut · , O, , o, w

Notasi Asymptotic · , O, , o, w • Didefinisikan untuk fungsi diatas nilai

Notasi Asymptotic · , O, , o, w • Didefinisikan untuk fungsi diatas nilai biasa – Contoh: f(n) = (n 2). – Menggambarkan bagaimana fungsi f(n) tumbuh pd pembandingan untuk n 2. • Mendefinisikan himpunan fungsi ; • Pada prakteknya untuk membandingan 2 ukuran fungsi. • Notasi menggambarkan perbedaan rate-of -growth hubungan antara definisi fungsi dan definisi himpunan fungsi.

Notasi O (big Oh) Untuk fungsi g(n), kita definisikan O(g(n)) sbg big-Oh dari n,

Notasi O (big Oh) Untuk fungsi g(n), kita definisikan O(g(n)) sbg big-Oh dari n, sbg himpunan: O(g(n)) = {f(n) : konstanta positif c dan n 0, sedemikian rupa n n 0, sehingga 0 f(n) cg(n) } : ada, : untuk semua Ada konstanta n

Lanjt f(n) Secara intuitif : himpunan seluruh fungsi yg rate of growth – nya

Lanjt f(n) Secara intuitif : himpunan seluruh fungsi yg rate of growth – nya adalah sama atau lebih kecil dari g(n) adalah asymptotic upper bound untuk f(n) = (g(n)) f(n) = O(g(n)). (g(n)) O(g(n)).

Lanjt • • • 2. 99 = 3 (pembulatan ke atas dalah 3) 2.

Lanjt • • • 2. 99 = 3 (pembulatan ke atas dalah 3) 2. 50 = 3 2. 0001 = 3 3 n + 7 = ? (tidak bakal lebih 4 n) 2 n 2 + 5 = ? • Big Oh O adalah merupakan Upper bound dari suatu fungsi

Contoh f(n) = 3 n + 4 berapa / apa big oh-nya ? n

Contoh f(n) = 3 n + 4 berapa / apa big oh-nya ? n 0 = 2 3 n+4 <= Cn ? C =3 3*2+4 <=3*3 10<=9 ? Bgm dgn n 0 = 2 C =4 Bgm dgn n 0 = 3 C =4 Bgm dgn n 0 = 4 C =4 Tidak akan pernah terpenuhi berapapun nilai n 3 n+4 <= cn ? 3*2+4 <=4*2 ? 3 n+4 <= cn ? 3*3+4 <=4*3 ? 3 n+4 <= cn ? 3*4+4 <=4*4 ? Apa kesimp ulannya ?

Lanjt Sehingga dari f(n) = 3 n+4 akan terpenuhi f(n) <= 4 n untuk

Lanjt Sehingga dari f(n) = 3 n+4 akan terpenuhi f(n) <= 4 n untuk n >= 4 berarti f(n)=O(4 n) untuk n 0=4 f(n) 4 n 3 n+4 n=4 n

Contoh dan Latihan Apa fungsi big Oh dari 4 n ? 2 n+7 ?

Contoh dan Latihan Apa fungsi big Oh dari 4 n ? 2 n+7 ? n 2+3 ?

Notasi (big Omega) Untuk fungsi g(n), kita definisikan (g(n)) sbg big. Omega dari n,

Notasi (big Omega) Untuk fungsi g(n), kita definisikan (g(n)) sbg big. Omega dari n, sbg himpunan: (g(n)) = {f(n) : konstanta positif c dan n 0, sedemikian hingga n n 0, maka 0 cg(n) f(n)}

Lanjt f(n) Secara intuitif : himpunan dari semua nilai fungsi yang rate of growth-nya

Lanjt f(n) Secara intuitif : himpunan dari semua nilai fungsi yang rate of growth-nya adalah sama atau lebih tinggi dari g(n) adalah asymptotic lower bound untuk f(n) = (g(n)).

Lanjt • • • 2. 0001 = 2. 50 = 2. 99 = 3

Lanjt • • • 2. 0001 = 2. 50 = 2. 99 = 3 n + 7 = 2 n 2 + 5 = 2 (batas bawah tidak akan kurang dari 2) 2 2 ? ? • Big Omega adalah merupakan Lower bound dari suatu fungsi

Notasi (big theta) Untuk fungsi g(n), kita definisikan (g(n)) sbg big-theta dari n, sbg

Notasi (big theta) Untuk fungsi g(n), kita definisikan (g(n)) sbg big-theta dari n, sbg himpunan sprt berikut (g(n)) = {f(n) : konstanta positif c 1, c 2 dan n 0, sedmikian rupa n n 0, maka 0 c 1 g(n) f(n) c 2 g(n)}

Lanjt • Big theta adalah merupakan tight bound dari suatu fungsi f(n) merupakan (g(n))

Lanjt • Big theta adalah merupakan tight bound dari suatu fungsi f(n) merupakan (g(n)) pada nilai antara c 1 smp c 2 g(n) adalah asymptotically tight bound untuk f(n).

Lanjt Secara intuitif : himpunan seluruh fungsi yang rate of growth-nya sama dengan g(n).

Lanjt Secara intuitif : himpunan seluruh fungsi yang rate of growth-nya sama dengan g(n). Secara teknik, f(n) (g(n)). Penggunan sebelumnya, f(n) = (g(n)). Mana yg akan kita teima … ? f(n) dan g(n) nonnegative, untuk nilai n besar.

Contoh (g(n)) = {f(n) : konstanta positif c 1, c 2, dan n 0,

Contoh (g(n)) = {f(n) : konstanta positif c 1, c 2, dan n 0, yg mana n n 0, 0 c 1 g(n) f(n) c 2 g(n)} • 10 n 2 - 3 n = (n 2) • Apa nilai konstanta n 0, c 1, dan c 2 sehingga akan terpenuhi fungsi tsb? • Buat c 1 sedkit lebih kecil dari koefisien utama, dan c 2 sedikit lebih besar. • Untuk membandingkan tingkat pertumbuhan, lihat term utama. • Latihan: Buktikan bahwa n 2/2 -3 n = (n 2)

Relasi antara , O,

Relasi antara , O,

Relasi antara , O, Teorema : untuk 2 fungsi g(n) dan f(n), f(n) =

Relasi antara , O, Teorema : untuk 2 fungsi g(n) dan f(n), f(n) = (g(n)) jika f(n) = O(g(n)) dan f(n) = (g(n)). • yakni, (g(n)) = O (g(n)) Ç (g(n)) • Dalam prakteknya, nilai (atau tight bounds) didapat dari asymptotic upper bound dan lower bound.

Running Time • Running time dari suatu algoritma, secara matematis adalah suatu fungsi input

Running Time • Running time dari suatu algoritma, secara matematis adalah suatu fungsi input n untuk sejumlah n data – Misal f(n)=n 2 berarti fungsi runing time dari sejumlah n data adalah n 2 • Running time merupakan fungsi kebutuhan sumberdaya yang diperlukan suatu algoritma (atau implementasinya) untuk memproses sejumlah data n

Lanjt • “Running time-nya O(f(n))” O(f(n)) adalah sbg. Worst case-nya • O(f(n)) batasan pd

Lanjt • “Running time-nya O(f(n))” O(f(n)) adalah sbg. Worst case-nya • O(f(n)) batasan pd worst-case running time O(f(n)) batasan pada running time dari setiap input. . (f(n)) batasan pd worst-case running time (f(n)) batasan pd running time dari setiap input. • “Running time -nya (f(n))” (f(n)) sbg Best case-nya

Analisis Empiris ?

Analisis Empiris ?