Pertemuan 3 ALGORITMA & FUNGSI KOMPLEKSITAS Matakuliah : T0034 / Perancangan & Analisis Algoritma Tahun : 2008 Pertemuan 3 ALGORITMA & FUNGSI KOMPLEKSITAS
LANGKAH DASAR ALGORITMA Sederhanakan masalah Membangun rencana penyelesaian secara matematis Merancang algoritma Menguji kebenaran algoritma Implementasi dengan suatu bahasa pemrograman yang dimengerti Dokumentasi Analisis kompleksitas algoritma Bina Nusantara
WAKTU PROSES ALGORITMA Waktu proses algoritma adalah lamanya waktu yang diperlukan komputer untuk menjalankan sebuah algoritma. Karena kecepatan komputer yang biasa kita gunakan sangat tinggi, maka biasanya waktu proses itu tidak terlalu kita perhatikan. Tidak semua algoritma dapat selesai diproses dalam waktu kurang dari satu detik. Algoritma yang kompleks dapat memerlukan waktu beberapa menit hingga berhari-hari untuk menyelesaikan prosesnya. Hal ini berlaku bahkan di komputer paling canggih sekalipun. Sejumlah algoritma dengan kompleksitas sangat tinggi bahkan ada yang memakan waktu lebih dari satu tahun untuk mengeluarkan hasil. Dalam hal merancang algoritma yang cukup kompleks, sangat penting bagi kita untuk menghitung waktu proses algoritma. [buku utama, bab 3.1] Bina Nusantara
VARIASI WAKTU PROSES Algoritma bekerja berdasarkan input yang dimasukkan user. Setiap input memiliki ukuran. Misalnya kita hendak mengurutkan sejumlah bilangan, banyaknya bilangan yang perlu diurutkan merupakan ukuran besarnya input Makin besar ukuran input yang dimasukkan, pada umumnya waktu proses akan semakin lama. Tergantung pada isi input, waktu proses dapat bervariasi : Keadaan terbaik (best case) Dilambangkan dengan notasi (...) dibaca Theta Keadaan rata-rata (average case) Dilambangkan dengan notasi (...) dibaca Omega Keadaan terburuk (worst case) Dilambangkan dengan notasi O(...) dibaca Big-O Kinerja sebuah algoritma biasanya diukur dengan menggunakan patokan keadaan terburuk (worst case) yang dinyatakan dengan Big-O Bina Nusantara
ALGORITMA Definisi 1 : waktu terburuk iff ada dua bilangan konstanta c dan no Theorema : Misal adalah suatu polinom derajat n. Maka Bina Nusantara
ALGORITMA Definisi 2 : waktu tercepat iff ada dua konstanta c dan no Bina Nusantara
ALGORITMA Definisi 3 : waktu rata-rata iff ada tiga konstanta positif c1, c2, dan no Bina Nusantara
MENGHITUNG WAKTU PROSES (1) Contoh : Pseudocode Selection Sort (pseudocode 3.6) 1 for i=1 to N-1 do 2 min=i 3 for j=i+1 to N do 4 if A[j]<A[min] then 5 min=j 6 end if 7 end for 8 swap(A[i],A[min]) 9 end for Hitung waktu proses algoritma yang diperlukan untuk mengurutkan deretan yang berisi 8 angka acak ! Bagaimana jika ukuran input belum diketahui? Dinyatakan dengan N Waktu proses dinyatakan dengan sebuah persamaan N, selanjutnya disebut Fungsi Kompleksitas Fungsi Kompleksitas menyatakan seberapa kompleksnya sebuah algoritma [buku utama, bab 3.2] Bina Nusantara
MENGHITUNG WAKTU PROSES (2) Asumsi bahwa nilai N belum diketahui Bisa dihitung bahwa untuk setiap perulangan i akan terjadi perulangan j sebanyak N-1, N-2, N-3, ..., 1 kali Misalkan nilai N adalah 5, berarti kita perlu menghitung 5+4+3+2+1 (rumus deret hitung) Dengan nilai a dan b = 1 diperoleh : Bina Nusantara
GROWTH RATE Dengan rumus Fungsi Kompleksitas N(N+1)/2 berarti jika N=5 maka waktu proses adalah 15. Jika nilai N diperbesar menjadi 8, maka waktu proses menjadi 36. Nilai N dan waktu proses bisa dipetakan dalam sebuah koordinat Cartesius dengan N di sumbu x dan waktu proses di sumbu y. Terlihat bahwa waktu proses algoritma Selection Sort bertumbuh (growth rate) secara linear. Bina Nusantara
FUNGSI KOMPLEKSITAS Fungsi Kompleksitas algoritma Selection Sort di atas Jenis-jenis Fungsi Kompleksitas Big Oh f(n) adalah O(n) jika ada c > 0 dan n0 ≥ 1 yang memenuhi f(n) ≤ c.g(n) untuk n ≥ n0 Big Omega f(n) adalah Ω(n) jika ada c > 0 dan n0 ≥ 1 yang memenuhi f(n) ≥ c.g(n) untuk n ≥ n0 Big Theta f(n) adalah θ(n) jika ada c1 > 0, c2 > 0 dan n0 ≥ 1 yang memenuhi c1.g(n) ≤ f(n) ≤ c2.g(n) untuk n ≥ n0 Little oh f(n) adalah ο(n) jika ada c > 0 dan n0 ≥ 0 yang memenuhi f(n) ≤ c.g(n) untuk n ≥ n0 Little omega f(n) adalah ω(n) jika ada c > 0 dan n0 ≥ 0 yang memenuhi f(n) ≥ c.g(n) untuk n ≥ n0 Bina Nusantara
ANALISIS KOMPLEKSITAS ALGORITMA Apriori analysis yaitu suatu analisis waktu proses (computing time) suatu algoritma yang menyatakan dalam bentuk fungsi Aposteriori testing yaitu analisis dengan cara melakukan sejumlah percobaan untuk mengetahui waktu proses eksak dari suatu algoritma pada suatu komputer tertentu; bisa juga dilakukan untuk memperoleh data statistik dari waktu proses dan jumlah memori space yang digunakan Bina Nusantara
MEMBACA BIG-OH O(1) artinya algoritma konstan O(n) artinya algoritma linear O(n2) artinya algorritma quadratic O(n3) artinya algoritma qubic O(log n) contohnya pada full balanced Binary Search Tree O(nm) artinya algoritma eksponensial Notasi Big-O bisa berisi kombinasi dari contoh di atas Penyederhanaan Big-O dilakukan pada komponen yang “less important” Bina Nusantara
LATIHAN Hitunglah Fungsi Kompleksitas untuk algoritma bilangan Fibonacci yang terdapat di pertemuan sebelumnya! Bina Nusantara
Apa yang sudah dipahami? Apa yang akan dibahas selanjutnya? REVIEW Apa yang sudah dipahami? Apa yang akan dibahas selanjutnya? Bina Nusantara