Design and Analysis Algorithm

dokumen-dokumen yang mirip
Algoritma dan Struktur Data

Design and Analysis Algorithm

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 03

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Pendahuluan. Ukuran input (input s size)

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

Pengantar Analisa Algoritma

Logika dan Algoritma Yuni Dwi Astuti, ST 2

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

Kompleksitas Algoritma

Langkah Awal menuju Analisis Kompleksitas Algoritma

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

Kompleksitas Algoritma

Kompleksitas Algoritma

Kompleksitas Algoritma (1)

ANALISIS ALGORITMA BINARY SEARCH

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Design and Analysis of Algorithm

Algoritma Sorting (Selection Insertion)

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Design and Analysis Algorithm

Design and Analysis Algorithm

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Analisis Kecepatan Sorting Dengan Notasi Big O

Kompleksitas Algoritma

Langkah Awal menuju Analisis Kompleksitas Algoritma

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Analisa Kompleksitas Algoritma. Sunu Wibirama

STRATEGI DIVIDE AND CONQUER

Analisa Algoritma. Konsep Algoritma

JARINGAN UNTUK MERGING

Analisis Algoritma Bubble Sort

Design and Analysis of Algorithms CNH2G3- Week 4 Kompleksitas waktu algoritma rekursif part 1

Sorting Algorithms. Buble Sort

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

METODE DEVIDE AND CONQUER (DANDC)

Algoritma dan Struktur Data. Performansi Algoritma

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Kompleksitas Algoritma

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 05

BAB 2 LANDASAN TEORI

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Penyelesaian Barisan Rekursif dengan Kompleksitas Logaritmik Menggunakan Pemangkatan Matriks

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Bubble Sort dan Shell-Sort. Yuliana Setiowati

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

Algoritma dan Kompleksitas Algoritma

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

BAB VIII Pencarian(Searching)

BAB II TINJAUAN PUSTAKA. Kriptografi (cryptography) berasal dari Bahasa Yunani: cryptós artinya

SEARCHING & SORTING. Pendahuluan

Design and Analysis of Algorithm

BAB II TINJAUAN PUSTAKA

Pemrograman Dasar L A T I H A N M E T H O D / F U N G S I M E T H O D R E K U R S I F

Design and Analysis of Algorithms CNH2G3- Week 5 Kompleksitas waktu algoritma rekursif part 2: Metode Karakteristik

Selection, Looping, Branching

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik. Penjelasannya adalah sebagai berikut: T(n) = (n + 2) log(n 2 + 1) + 5n 2

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 08

PERTEMUAN 11 TEHNIK SEARCHING

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

ANALISIS DAN PERANCANGAN SISTEM

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 04

Setelah mempelajari topik Analisis Algoritma di kuliah SDA, ada beberapa kompetensi yang perlu Anda kuasai:

OPERASI PERNYATAAN KONDISI

UNIVERSITAS GUNADARMA

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Fungsi Rekursif PEMROGRAMAN DASAR. Dr. Eng. Herman Tolle, ST., MT. Sistem Informasi PTIIK UB Semester Ganjil 2014/2015

PERTEMUAN 7 REVIEW (QUIZ)

ALGORITMA PENGURUTAN & PENCARIAN

BAB VII ALGORITMA DIVIDE AND CONQUER

BAB V Tujuan 5.1 Rekursi Dasar

Outline STRUKTUR DATA. VII. Sorting

Konsep Dasar Struktur Data. Struktur Data

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

ALGORITMA DAN STRUKTUR DATA SEARCHING ARRAY

Kompleksitas Algoritma Rank Sort dan Implementasi pada Parallel Programming Dengan Menggunakan OpenMP

BAB 2 LANDASAN TEORI

Design and Analysis of Algorithm

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

Kompleksitas Komputasi

LATIHAN UTS Tim Pengajar KU1071 Sem

ALGORITMA RINTA KRIDALUKMANA SISKOM UNDIP

PENGANTAR KOMPUTER & SOFTWARE II

Soal hari Jumat (16/10) Latihan 10 MS

Algoritma dan Struktur Data

BAB 3 ANALISA SISTEM

Control Structure. Dasar Pemrograman C Mikrokontroler AVR. Hendawan Soebhakti Oktober 2009

PENGANTAR KOMPUTER & SOFTWARE II

Program Attributes. Algorithm Analysis. Time Consumption. Algoritma

Decrease and Conquer

Soal hari Selasa (13/10) Latihan 7 AN

Transkripsi:

Design and Analysis Algorithm Pertemuan 02 Drs. Achmad Ridok M.Kom Fitra A. Bachtiar, S.T., M. Eng Imam Cholissodin, S.Si., M.Kom Aryo Pinandito, MT

Contents 31 2 Analisis Algoritma Analisis Efisiensi Algoritma 3 4 Analisis Efisiensi Algoritma Non-Rekursif Order Of Growth 2

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 3

Analisis Efisiensi Algoritma Untuk melakukan analisis efisiensi waktu algoritma harus diestimasi dulu waktu eksekusi algoritma Bagaimana melakukannya? 4

Analisis Efisiensi 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 while i n and A[i] K do i i + 1 if i n return i else return -1 1 x 2 x 1 x 2 x 1 x 5

Analisis Efisiensi Algoritma 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 6

Analisis Efisiensi Algoritma Sequential Search i 0 1 x while i n and A[i] K do 2 x i i + 1 1 x if i n return i 2 x else return -1 1 x Estimasi waktu eksekusi algoritma sequential search! 7

Analisis Efisiensi Algoritma 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 8

Analisis Efisiensi Algoritma 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 9

Analisis Efisiensi Algoritma Langkah-langkah umum untuk menganalisis efisiensi waktu algoritma 1. Tentukan parameter yang mengindikasikan ukuran input 2. Identifikasi basic operation algoritma 3. Tentukan apakah untuk ukuran input yang sama banyaknya eksekusi basic operation bisa berbeda 4. Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi 5. Selesaikan rumus sigma untuk menghitung banyaknya eksekusi basic operation 10

Analisis Efisiensi Algoritma Step 1 = Tentukan parameter yang mengindikasikan ukuran input Sesuatu pada input yang jika nilainya bertambah akan menyebabkan banyaknya eksekusi loop bertambah Contoh, algoritma untuk menghitung X n menggunakan cara X n = 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? Untuk algoritma sequential search, parameter ukuran inputnya adalah banyaknya elemen array (n) Mengapa nilai elemen array tidak? 11

Analisis Efisiensi Algoritma Step 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 12

Analisis Efisiensi Algoritma Step 3 = Tentukan apakah untuk ukuran input yang sama banyaknya eksekusi basic operation bisa 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 13

Analisis Efisiensi Algoritma Step 4 = Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi C(n) = banyaknya eksekusi basic operation untuk input ukuran n Untuk Best case : C( n) 1 i 1 1 Best case terjadi jika elemen pertama A bernilai K 14

Analisis Efisiensi Algoritma Step 4 = Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Untuk Worst case : C( n) n i 1 1 Worst case terjadi jika elemen A yang bernilai bernilai K merupakan elemen terakhir atau tidak ada elemen A yang bernilai K 15

Analisis Efisiensi Algoritma Step 4 = Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Untuk Average case : Asumsikan Data K memang ada di A Probabilitas K terletak di elemen tertentu A terdistribusi merata. Probabilitas K terletak di elemen ke i = 1/n 16

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

Analisis Efisiensi Algoritma Step 4 = Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Sehingga untuk Average case : C( n) n i 1 i* 1 n 18

Analisis Efisiensi Algoritma Step 5 = Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Best case untuk sequential search C( n) 1 i 1 1 C( n) 1 Best case pada sequential search C(n) = 1 Untuk input berukuran n, basic operation dilakukan 1 kali 19

Analisis Efisiensi Algoritma Step 5 = Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Worst case untuk sequential search C( n) n i 1 1 C( n) n Worst case pada sequential search C(n) = n Untuk input berukuran n, basic operation dilakukan n kali 20

Analisis Efisiensi Algoritma Step 5 = Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Average case pada sequential search 21 n i n i n C 1 1 * ) ( n i i n n C 1 1 ) ( ) (1 2 1 ) (1 2 1 * 1 ) ( n n n n n C

Analisis Efisiensi Algoritma Step 5 = Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi Average case pada sequential search ( 1) C( n) n 2 Untuk n = 10, C(n) = 5,5 Apakah itu berarti K berada pada elemen 5 atau 6 Apa artinya? 22

Analisis Efisiensi Algoritma Estimasi waktu running algoritma sequential search T(n) = C op * C(n) T(n) = Waktu yang diperlukan untuk mengeksekusi algoritma dengan input berukuran n C op = Waktu untuk mengeksekusi basic operation 1 kali. Biasanya ditentukan 1 satuan waktu Hitung T(n) untuk sequential search pada best case, worst case dan average case! 23

Soal 1 Algorithm uniqueelement(a[0..n-1]) //memeriksa apakah setiap elemen A unik //input : array A[0..n-1] //output : mengembalikan true jika setiap elemen A unik dan false jika terdapat beberapa elemen yang nilainya sama for i 0 to n 2 do for j i + 1 to n - 1 do Return true If A[i] = A[j] return false Estimasi running time algoritma uniqueelement! (Anany levitin halaman 63) 24

Soal 2 Buat algoritma untuk menghitung X n secara iteratif menggunakan cara X n = X * X * X * * X sebanyak n kali. Estimasi running time algoritma yang anda buat! 25

Analisis Algoritma Non-Rekursif Langkah-langkah umum untuk menganalisis efisiensi waktu algoritma 1. Tentukan parameter yang mengindikasikan ukuran input 2. Identifikasi basic operation algoritma 3. Tentukan apakah untuk ukuran input yang sama banyaknya eksekusi basic operation bisa berbeda 4. Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi 5. Selesaikan rumus sigma untuk menghitung banyaknya eksekusi basic operation 26

Latihan Algorithm mystery(a[0..n-1]) X A[0] for i 1 to n 1 do if A[i] > X X A[i] return X 1. Apa yang dilakukan algoritma mystery? 2. Estimasikan waktu eksekusi algoritma mystery 3. Estimasi waktu eksekusi algoritma mystery untuk input A = [1, 2, 5, 9, 4, 4, 7, 10, 1, 6] 27

Untuk apa kita mencari T(n)? 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) 28

Latihan Algoritma mystery T(n) = n 1. Estimasi waktu eksekusi algoritma jika array inputnya memiliki anggota 10 elemen 20 elemen 30 elemen Buat grafik yang menunjukkan hubungan antara banyaknya elemen array yang dieksekusi dengan waktu eksekusi 29

Orders of Growth Order of Growth adalah Tingkat pertumbahan waktu eksekusi algoritma jika ukuran input bertambah 30

Latihan Urutkan waktu eksekusi algoritma 1 4 berdasar order of growthnya dari kecil ke besar T 1 (n) = n 2 T 1 (10) = 100 T 1 (100) = 10,000 T 2 (n) = n 3 T 3 (n) = n T 4 (n) = log 2 n T 2 (10) = 1,000 T 3 (10) = 10 T 4 (10) = 3.3 T 2 (100) = 1,000,000 T 3 (100) = 100 T 4 (100) = 6.6 31

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

Membandingkan Orders of Growth lim n ~ T T A B ( n) ( n) 0 maka OoG T A (n) < OoG T B (n) C maka OoG T A (n) = OoG T B (n) ~ maka OoG T A (n) > OoG T B (n) 33

Tugas 1 Terdapat dua algoritma yang menyelesaikan permasalahan yang sama. Untuk input berukuran n, Algoritma 1 menyelesaikan dalam T 1 (n) = 30n 2 + 2n + 5. Algoritma 2 dalam T 2 (n) = n 3 + n Mana yang lebih besar, OoG T 1 atau T 2? Mengapa? Untuk n kecil, mana yang anda pilih? Mengapa? Untuk n besar, mana yang anda pilih? Mengapa? 34

Kelas-Kelas Order of Growth Makin ke bawah, OoGnya makin besar C logn N NlogN constant logarithmic linear N 2 quadratic N 3 cubic 2 N exponential N! factorial 35

Grafik Kelas-Kelas Order of Growth 36

Sifat Order of Growth Misal T(n) = T 1 (n) + T 2 (n) + + T i (n) Maka OoG T(n) = max OoG(T 1 (n), T 2 (n),, T i (n)) Misal T(n) = cf(n) Maka OoG T(n) = f(n) 37

Tugas 2 Tentukan kelas orders of growth dari T 1 (n) = 2n 3 + 4n + 1 T 2 (n) = 0,5 n! + n 10 T 3 (n) = n 3 + n logn T 4 (n) = 2 n + 4n 3 + log n +10 38

Kelas-Kelas OoG (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. 39

Kelas-Kelas OoG (n log n) Bila n dijadikan dua kali semual, maka n log n menjadi lebih dari dua kali semula (tetapi tidak terlalu banyak) (n 2 ) Bila n dinaikkan menjadi dua kali semula, maka waktu pelaksanaan algoritma meningkat menjadi empat kali semula. (n 3 ) Bila n dinaikkan menjadi dua kali semula, waktu pelaksanan algoritma meningkat menjadi delapan kali semula. 40

Kelas-Kelas OoG (2 n ) 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. 41

Click to edit subtitle style