Matakuliah Tahun : T0034 / Perancangan & Analisis Algoritma : 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 f n g n iff ada dua bilangan konstanta c dan no f n c g n , n no Theorema : Misal An an n .... a1n a0 m adalah suatu polinom derajat n. Maka A n nm Bina Nusantara ALGORITMA Definisi 2 : waktu tercepat f n g n iff ada dua konstanta c dan no f n c g n , n no Bina Nusantara ALGORITMA Definisi 3 : waktu rata-rata f n g n iff ada tiga konstanta positif c1, c2, dan no c1 g n f n c2 g n , n 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) DN N (2a ( N 1)b) 2 • Dengan nilai a dan b = 1 diperoleh : DN Bina Nusantara N ( N 1) 2 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 f ( n) n(n 1) 2 • 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 f n g n • 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 REVIEW • Apa yang sudah dipahami? • Apa yang akan dibahas selanjutnya? Bina Nusantara
© Copyright 2024 Paperzz