Aryo Pinandito, ST, M.MT - PTIIK UB

Slides:



Advertisements
Presentasi serupa
Desain Dan Analisis Algoritma
Advertisements

Kompleksitas Algoritma
Algoritma dan Struktur Data
Design and Analysis of Algorithm Divide and Conquer Algorithm
Design and Analysis of Algorithm Recursive Algorithm Analysis
Fundamentals Of Algorithmics Gilles Brassard & Paul Bratley.
Algoritma dan Struktur Data
1 Algoritma Bahasa Pemrograman dan Bab 1.1. Pengertian Algoritma.
Desain Dan Analisis Algoritma
Desain dan Analisis Algoritma
Design and Analysis of ALGORITHM (Session 3)
sebuah fungsi yang memanggil dirinya sendiri
Tim Matematika Diskrit
Modul-8 : Algoritma dan Struktur Data
Desain dan Analisis Algoritma
PENCARIAN (SEARCHING)
Design and Analysis of Algorithm Dynamic Programming
Pertemuan 3 LINKED LIST (PART 2) Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009.
Design and Analysis of Algorithm Back Track Algorithm
Quick Sort dan Merge Sort
MATEMATIKA DISKRIT Kompleksitas Algoritma Kelompok 9
Algoritma dan Struktur Data
Kompleksitas Algoritma
Algoritma Indriati ,ST .,M.Kom.
Aryo Pinandito, ST, M.MT - PTIIK UB
Pertemuan-3 Laju Pertumbuhan Fungsi : Pengertian, motivasi dan manfaat
TEKNIK PENGINTEGRALAN
Design and Analysis Algorithm
Algoritma dan Struktur Data
Desain dan Analisis Algoritma
1 Diselesaikan Oleh KOMPUTER Langkah-langkah harus tersusun secara LOGIS dan Efisien agar dapat menyelesaikan tugas dengan benar dan efisien. ALGORITMA.
Pertemuan 3 ALGORITMA & FUNGSI KOMPLEKSITAS
Algoritma dan Struktur Data
Pertemuan-2 Kriteria kebaikan suatu algoritme Correctness
Pertemuan 10 DIVIDE And CONQUER Lanjutan ….
Algoritma dan Struktur Data
PART 6 Algoritma DOSEN : AHMAD APANDI, ST.
9.3 Geometric Sequences and Series. Objective To find specified terms and the common ratio in a geometric sequence. To find the partial sum of a geometric.
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
STATISTIKA CHATPER 4 (Perhitungan Dispersi (Sebaran))
DIG1G3 Implementasi Struktur Data
07/11/2017 BARISAN DAN DERET KONSEP BARISAN DAN DERET 1.
CSG523/ Desain dan Analisis Algoritma
Strategi Algoritma Kuliah 2 : Kompleksitas Algoritma
MATERI PERKULIAHAN ANALISIS ALGORITMA
CSG523/ Desain dan Analisis Algoritma
Design and Analysis Algorithm
CSG523/ Desain dan Analisis Algoritma
Algoritma dan Struktur Data
MATERI PERKULIAHAN ANALISIS ALGORITMA
Mata kuliah : K0144/ Matematika Diskrit Tahun : 2008
Kompleksitas Algoritma
PART 6 Algoritma DOSEN : AHMAD APANDI, ST.
Faktor analisa algoritma
Pertemuan 24 Teknik Searching
Analisis dan Perancangan Algoritma Kuliah 4 : Asymptotic pd Kasus
Algorithms and Programming Searching
MATERI PERKULIAHAN ANALISIS ALGORITMA
BINARY SEARCH Tim Algoritma Pemrograman Teknik Informatika
Mata kuliah : K0144/ Matematika Diskrit Tahun : 2008
Desain dan Analisis Algoritma
Strategi Algoritma Kuliah 3 : Algoritma Efisien
Kompleksitas Algoritma
Master data Management
Analisa algoritma rekursif
Algoritma dan Struktur Data
Dr. Mufid Nilmada, SSi., MMSI
Desain & Analisis Algoritma
Algorithms. Introduction The methods of algorithm design form one of the core practical technologies of computer science. The main aim of this lecture.
Transcript presentasi:

Aryo Pinandito, ST, M.MT - PTIIK UB Design and Analysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency Aryo Pinandito, ST, M.MT - PTIIK UB

Analisis Algoritma Analisis Algoritma bertujuan memeriksa efisiensi algoritma dari dua segi : waktu eksekusi dan penggunaan memori Efisiensi waktu seberapa cepat algoritma dieksekusi Efisiensi memori berapa banyak memori yang dibutuhkan untuk menjalankan algoritma

Analisis Efisiensi Waktu Algoritma Untuk melakukan analisa efisiensi waktu algoritma harus diestimasi dulu waktu eksekusi algoritma

Algorithm sequential search (A[0..n-1], K) Searches for a given value in a given array by sequential search Input: an array A[0..n-1] and a search key K Output: returns the index of the first element of A that matches K or -1 if there are no matching elements i  0 1x while i  n and A[i]  K do 2x i  i + 1 1x if i  n return i 2x else return -1 1x

Analisis Algoritma Sequential Search Baris kode mana yang sangat berpengaruh pada running time? Bagian loop (baris 2 dan 3). Mengapa? Karena dieksekusi berulang–ulang. Makin banyak eksekusinya, makin lama running time program

Sequential Search Estimasi waktu eksekusi algoritma sequential search? i  0 1x while i  n and A[i]  K do 2x i  i + 1 1x if i  n return i 2x else return -1 1x Estimasi waktu eksekusi algoritma sequential search?

time = nLoop x tLoop time = estimasi waktu eksekusi algoritma untuk input tertentu nLoop: berapa kali loop dieksekusi tLoop: waktu yang diperlukan untuk mengeksekusi loop 1 kali. Biasanya ditentukan 1 satuan waktu tanpa dispesifikasikan berapa nilainya

Case: Best, Average, Worst Asumsikan array A terdiri atas n elemen. Best case: k ditemukan di elemen pertama array A. time = 1 x 1 satuan waktu Average case: k ditemukan di elemen tengah array A. time = n/2 x 1 satuan waktu Worst case: k ditemukan di elemen paling akhir array A. time = n x 1 satuan waktu

Analisis Algoritma Non-Rekursif Langkah-langkah umum untuk menganalisa efisiensi waktu algoritma nonrekursif Tentukan parameter yang mengindikasikan ukuran input Identifikasi basic operation algoritma Tentukan apakah untuk ukuran input yang sama banyaknya eksekusi basic operation bisa berbeda Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Selesaikan rumus sigma untuk menghitung banyaknya eksekusi basic operation

1: Tentukan parameter yang mengindikasikan ukuran input Sesuatu pada input yang jika nilainya bertambah akan menyebabkan banyaknya eksekusi loop bertambah Contoh, algoritma untuk menghitung Xn menggunakan cara Xn = X * X * X * … * X sebanyak n kali. Parameter ukuran inputnya adalah nilai n, karena jika n makin besar, maka banyaknya eksekusi loop bertambah Bagaimana dengan nilai X?

2: Identifikasi basic operation algoritma Waktu yang diperlukan untuk mengeksekusi loop 1 kali Dapat diwakili oleh sebuah operasi pada loop paling dalam. Operasi yang dipilih adalah operasi yang selalu dilakukan ketika loop dieksekusi Untuk algoritma sequential search, basic operationnya dapat digunakan i  n i  n dieksekusi 1 kali setiap loop dieksekusi

3: Apakah untuk ukuran input yang sama, jumlah eksekusi basic operation dapat berbeda? Pada sequential search, parameter untuk ukuran input adalah n atau banyaknya elemen array Untuk n tertentu, apakah banyaknya eksekusi basic operation bisa berbeda? Jika elemen pertama array input A bernilai K, maka banyaknya eksekusi basic operation untuk n tertentu C(n)= 1 Jika K ditemukan di elemen terakhir, maka C(n)= n Perlu diadakan analisa best case, worst case dan average case

4A: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi C(n) = banyaknya eksekusi basic operation untuk input ukuran n Best case Sequential Search: Best case terjadi jika elemen pertama A bernilai K

4B: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi C(n) = banyaknya eksekusi basic operation untuk input ukuran n Worst case Sequential Search: Worst case terjadi jika elemen A yang bernilai bernilai K merupakan elemen terakhir atau tidak ada elemen A yang bernilai K

4C: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Average case pada sequential search Asumsikan Data K memang ada di A Probabilitas K terletak di elemen tertentu A dan terdistribusi secara merata. Probabilitas K terletak di elemen ke i = 1/n

Banyaknya eksekusi basic operation 4C: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Posisi K ditemukan Banyaknya eksekusi basic operation Probabilitas terjadi Kontribusi pada C(n) 1 2 … n 1/n 1 * 1/n 2 * 1/n N * 1/n Bentuk umum: i * 1 / n

4C: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Average case pada sequential search:

5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Best case untuk sequential search Untuk input berukuran n, basic operation dilakukan 1 kali

5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Worst case untuk sequential search Untuk input berukuran n, basic operation dilakukan n kali

5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Average case pada sequential search To find the sum of a certain number of terms of an arithmetic sequence: where Sn is the sum of n terms (nth partial sum), a1 is the first term, an is the nth term.

5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Pada sequential search, average case-nya: Untuk n = 10, C(n) = 5,5 Apakah itu berarti K berada pada elemen 5 atau 6 Apa artinya?

Estimasi Running Time Algoritma Sequential Search T(n) = Cop* C(n) Dimana: T(n) = Waktu yang diperlukan untuk mengeksekusi algoritma dengan input berukuran n Cop = Waktu untuk mengeksekusi basic operation 1 kali. Biasanya ditentukan sebagai 1 satuan waktu Hitung T(n) untuk sequential search pada best case, worst case dan average case!

What is T(n) For? Apakah untuk mengestimasi running time algoritma? Tujuan utama mencari T(n) bukan mencari waktu eksak yang dibutuhkan untuk mengeksekusi sebuah algoritma Tetapi untuk mengetahui tingkat pertumbuhan waktu eksekusi algoritma jika ukuran input bertambah (order of growth / OoG)

Exercise Sebuah algoritma memiliki T(n) = n – 1. Estimasi waktu eksekusi algoritma jika jumlah masukannya memiliki anggota: 10 elemen 20 elemen 30 elemen Buat grafik yang menunjukkan hubungan antara banyaknya elemen yang dieksekusi dengan waktu eksekusi

Orders of Growth are also known as Efficiency Classes Orders of Growth (OoG) Tingkat pertumbuhan waktu eksekusi algoritma jika ukuran input bertambah Orders of Growth are also known as Efficiency Classes

Exercise Urutkan waktu eksekusi algoritma T(1–4)(n) berdasar order of growthnya dari kecil ke besar T1(n) = n2 T1 (10) = 100 T1 (100) = 10,000 T2(n) = n3 T2(10) = 1,000 T2(100) = 1,000,000 T3(n) = n T3(10) = 10 T3(100) = 100 T4(n) = log2n T4(10) = 3.3 T4(100) = 6.6

Membandingkan Orders of Growth dari dua Algoritma Algoritma A dan B merupakan algoritma untuk menyelesaikan permasalahan yang sama. Untuk input berukuran n, waktu eksekusi algoritma A adalah TA(n) sedangkan waktu eksekusi algoritma B adalah TB(n). Orders of growth mana yang paling besar?

Membandingkan Orders of Growth dari dua Algoritma 0 maka OoG TA(n) < OoG TB(n) C maka OoG TA(n) = OoG TB(n) ~ maka OoG TA(n) > OoG TB(n)

Asymptotic Notations O (big oh)  (big omega)  (big theta)

In the following discussion… t(n) & g(n): any nonnegative functions defined on the set of natural numbers t(n)  an algorithm's running time Usually indicated by its basic operation count C(n) g(n)  some simple function to compare the count with CS3024-FAZ

O(g(n)): Informally O(g(n)) is a set of all functions with a smaller or same order of growth as g(n) Examples: n  O(n2); 100n + 5  O(n2) ½ n(n-1)  O(n2) n3  O(n2); 0.0001 n3  O(n2); n4+n+1  O(n2) ≤ CS3024-FAZ

(g(n)): Informally (g(n)) is a set of all functions with a larger or same order of growth as g(n) Examples: n3  (n2) ½ n(n-1)  (n2) 100n + 5  (n2) ≥ CS3024-FAZ

(g(n)): Informally (g(n)) is a set of all functions with a same order of growth as g(n) Examples: an2+bn+c; a>0  (n2); n2+sin n  (n2) ½ n(n-1)  (n2); n2+log n  (n2) 100n + 5  (n2); n3  (n2) = CS3024-FAZ

Exercise Terdapat dua algoritma yang menyelesaikan permasalahan yang sama. Untuk input berukuran n, Algoritma 1: T1(n) = 30n2 + 2n + 5. Algoritma 2: T2(n) = n3 + n Mana yang lebih besar, OoG T1 atau T2? Untuk n kecil mana yang anda pilih? Untuk n besar, mana yang anda pilih?

Basic Efficiency Classes The time efficiency of a large number of algorithms fall into only few classes 1 or C, log n, n, n log n, n2, n3, 2n, n! Multiplicative constants are ignored  it is possible that an algorithm in worse efficiency class running faster than algorithm in better class Exp: Alg A: n3, alg B: 106n2; unless n > 106, alg B runs faster than alg A

Kelas-kelas Orders of Growth C constant log N logarithmic N linear N log N linear logaritmic N2 quadratic N3 cubic 2N exponential N! factorial Makin ke bawah, OoG-nya makin besar

Grafik Kelas-kelas OoG

Sifat OoG Jika T(n) = T1(n) + T2(n) + … + Ti(n) Maka OoG T(n) = max OoG(T1(n), T2(n), … , Ti(n)) Jika T(n) = cf(n) Maka OoG T(n) = f(n)

Exercise Tentukan kelas orders of growth dari: T1(n) = 2n3 + 4n + 1 T3(n) = n3 + n log n T4(n) = 2n + 4n3 + log n + 10

Order of Growth: Summary (1) Waktu pelaksanaan algoritma adalah tetap, tidak bergantung pada ukuran input. (log n) Kompleksitas waktu logaritmik berarti laju pertumbuhan waktunya berjalan lebih lambat daripada pertumbuhan n. (n) Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma juga dua kali semula. (n log n) Bila n dijadikan dua kali semula, maka n log n menjadi lebih dari dua kali semula (tetapi tidak terlalu banyak)

Order of Growth: Summary (n2) Bila n dinaikkan menjadi dua kali semula, maka waktu pelaksanaan algoritma meningkat menjadi empat kali semula. (n3) Bila n dinaikkan menjadi dua kali semula, waktu pelaksanan algoritma meningkat menjadi delapan kali semula. (2n) Bila n dijadikan dua kali semula, waktu pelaksanaan menjadi kuadrat kali semula! (n!) Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma menjadi faktorial dari 2n.

감사합니다 Gratias Terima Kasih ありがとうございます Grazias Kiitos Gratias Danke ﺷﻜﺮﺍﹰ Terima Kasih 谢谢 Merci Thank You धन्यवाद ありがとうございます