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

dokumen-dokumen yang mirip
Design and Analysis of Algorithm

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

Design and Analysis of Algorithm

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

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

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

Design and Analysis Algorithm

Design and Analysis of Algorithm

Algoritma Divide and Conquer (Bagian 1)

Decrease and Conquer

Algoritma Pemrograman

Algoritma Pemrograman

Kompleksitas Algoritma

Design and Analysis of Algorithms CNH2G3- Week 8 Greedy Algorithm

Algoritma Divide and Conquer. (Bagian 2)

Algoritma Divide and Conquer (Bagian 2)

Pendahuluan. Ukuran input (input s size)

Algoritma Pemrograman

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

Kompleksitas Algoritma

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

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

Kompleksitas Algoritma

Kompleksitas Algoritma (1)

Kompleksitas Algoritma

STRATEGI DIVIDE AND CONQUER

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

ALGORITHM. 3 Rekursif Algorithm. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

Kompleksitas Algoritma

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

Rekursif. Rekursif adalah salah satu metode dalam dunia matematika dimana definisi sebuah fungsi mengandung fungsi itu sendiri.

BAB VII ALGORITMA DIVIDE AND CONQUER

Algoritma Brute Force

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 3

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

RESUME ALGORITMA MERGE SORT DAN REKURENS

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Aplikasi Divide and Conquer pada Perkalian Large Integer untuk Menghitung Jumlah Rute TSP Brute Force

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Logika dan Algoritma Yuni Dwi Astuti, ST 2

Algoritma Brute Force

Design and Analysis Algorithm

ALGORITMA DIVIDE AND CONQUER

Kompleksitas Waktu untuk Algoritma Rekursif. ZK Abdurahman Baizal

BAB I PENDAHULUAN Latar Belakang

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

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

MAKALAH ALGORITMA DIVIDE AND CONQUER

Algoritma dan Kompleksitas Algoritma

Perulangan Rekursif dan Perulangan Iteratif

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Pengantar Analisa Algoritma

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Design and Analysis of Algorithm

Algoritma Divide and Conquer

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi.

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

BAB IV PERANCANGAN. IV.1 Evaluasi Usulan untuk Perancangan Iteratif

Algoritma dan Struktur Data

Design and Analysis of Algorithms CNH2G3- Week 6 Brute Force Algorithm Part 1: Design Strategy

Algoritma dan Struktur Data

ALGORITMA PENGURUTAN & PENCARIAN

BAB V Tujuan 5.1 Rekursi Dasar

Searching [pencarian] Algoritma Pemrograman

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

PERSEGI ANGKA-HURUF VERTIKAL

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

UNIVERSITAS GUNADARMA

Pertemuan 4 Diagram Alur / Flowchart

CHAPTER 3 ALGORITHMS 3.1 ALGORITHMS

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Soal dan Jawaban Materi Graf, Pohon, dan Kompleksitas Algoritma

Algoritma Pemrograman

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Algoritma Bubble Sort dan Quick Sort

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Algoritma Pemrograman

Design and Analysis of Algorithms CNH2G3- Week 7 Brute Force Algorithm Part 2: Exhaustive Search

A. TUJUAN PEMBELAJARAN 1. Memahami mengenai konsep rekursif 2. Mampu memecahkan permasalahan dengan konsep rekursif

Design and Analysis of Algorithm

2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b. Program c. Algoritma d. Prosesor e.

a. TRUE b. FALSE c. Jawaban A dan B keduanya dimungkinkan benar d. Tidak dapat ditentukan e. Tidak ada jawaban di antara A, B, C, D yang benar

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

Catatan Kuliah STRUKTUR DATA BAB III REKURSIF

METODE DEVIDE AND CONQUER (DANDC)

Strategi Algoritma Penyelesaian Puzzle Hanjie

Algoritma Pemrograman

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

Penerapan Rekursif dan Analisa Kompleksitas Algoritma Pada Brute Force Login

FUNGSI. setiap elemen di dalam himpunan A mempunyai pasangan tepat satu elemen di himpunan B.

A. TUJUAN PEMBELAJARAN

Algoritma Pemrograman

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Transkripsi:

Design and Analysis of Algorithms CNH2G3- Week 4 Kompleksitas waktu algoritma rekursif part 1 Dr. Putu Harry Gunawan (PHN) Quiz I 1. Tentukan operasi dasar, c op dan C(n) untung masing-masing algoritma berikut. Serta tambahkan analisis untuk T max (n), T min (n) dan T avg (n): (a) l <-- 1 for j=0 to l++ for l=1 to 3 a=sqrt(5/4) end end (b) j=1; while j<n for k=1 to j if(a[k] == A[j]) return k; endif endfor endwhile (c) L=2n; do k=l+3; L=L/2; while(l<0); 1

2. Berikan definisi masing-masing Big oh, Big Omega dan Big Theta beserta ilustrasinya! Big-Oh Big-Omega Big-Theta T (n) O(g(n)) T (n) Ω(g(n)) T (n) Θ(g(n)) ilustrasi ilustrasi ilustrasi 3. Buktikan pernyataan berikut ini: (a) 1 2 (n 2)(n 3) Θ(n2 ) (b) n 3 i=2 5i Θ(n2 ) (c) n 2 + 10n log(n 2 ) O(n 2 ) Jawab Review 1. Buatlah algoritma rekursif untuk menghitung faktorial! Contoh 10! = 10 9 2 1 (0.1) 2. Buatlah algoritma rekursif untuk menentukan nilai baris fibonanci ke-n Contoh: Baris fibonanci ke 6 1, 1, 2, 3, 5, 8 (0.2) 1 Pendahuluan Pada bab ini, akan dibahas mengenai menghitung waktu asismtotik untuk algoritma rekursif. Kita mulai dengan definisi-definisi algoritma rekursif: 2

1.1 Dikatkan bentuk rekursif: 1. suatu subrutin atau fungsi/ prosedur yang memanggil dirinya sendiri. 2. bentuk dimana pemanggilan subrutin terdapat di dalam body subrutin 3. dengan rekursi, program akan lebih mudah dilihat. 1.2 Tujuan dibuat rekursif: 1. menyederhanakan penulisan program 2. menggantikan bentuk iterasi 1.3 Syarat bentuk rekursif: 1. ada kondisi terminal 2. ada subroutine call yang melibatkan parameter yang nilainya menuju kondisi terminal Sehingga untuk menghitung kompleksitas bentuk rekursif, maka digunakan teknik perhitungan kompleksitas dengan relasi rekurens. 2 Relasi Rekurens Faktorial Perhatikan algoritma berikut: Function Factorial(input n: integer) -> integer Algoritma if n=0 then return 1 return (n * Factorial(n-1)) Kompleksitas waktu: untuk kasus basis, tidak ada operasi perkalian 0 untuk kasus rekurens, kompleksitas waktu diukur dari jumlah perkalian (1) ditambah kompleksitas wasktu untuk faktorial (n-1). Sehingga relasi rekursinya dapat dibentuk menjadi: 0, n = 0, T (n 1) + 1, n > 0. (2.1) 3

Jadi menghitung waktunya adalah 1 + T (n 1) = 1 + 1 + T (n 2) = 2 + T (n 2) = 2 + 1 + T (n 3) = 3 + T (n 3) = = n + T (0) = n + 0 Jadi n O(n). Secara umum, untuk menganalisis waktu efisiensi dari algoritma rekursif: 1. Putuskan dalam parameter, yang mengindikasikan ukuran inputan. 2. Identifikasi operasi dasar algoritma 3. Cek apakah jumlah operasi dasar akan berbeda jika ukuran masukan berbeda?, kalau iya maka dapat dihitung, waktu terbaik, terburuk, dan rata-rata secara terpisah. 4. Buat relasi rekursi dengan kondisi awal yang sesuai, untuk jumlah operasi dasar yang dijalankan. 5. Selesaikan relasi rekursi, atau paling tidak tentukan orde kenaikannya. 3 Relasi Rekurens Hanoi Tower Selanjutnya adalah contoh masalah yang dikenal sebagai the Tower of Hanoi puzzle. Dalam permainan ini, pemain diberikan tiga buah batu yang memiliki ukuran berbeda. Batubatu tersebut selanjutnya disusun berdasarakan ukuran, yakni ukuran terbesar berada paling bawah. Tujuan dari permainan ini adalah, memindahkan tumpukan batu di tiang A ke B tanpa mengubah posisi batu besar paling bawah. Disediakan tiang C sebagai perantara. Procedure Hanoi (input n, A, B, C:integer) Algoritma If n=1 then Write (Pindahkan piringan dari,a,ke,b) Else Hanoi(n-1,A,C,B) Writeln(Pindahkan piringan dari,a,ke,b) Hanoi(n-1,C,B,A) Endif Operasi dasar dari algoritma Hanoi adalah Writeln(), sehingga dengan jelas bahwa pergerakan T (n) bergantung pada n yang relasi rekursinya berupa: T (n 1) + 1 + T (n 1) n > 1 (3.1) 4

Figure 1: Solusi rekursif untuk masalah Menara Hanoi. Dengan kondisi awal T (1) = 1, maka relasi rekursinya ditulis ulang dalam bentuk: 1, n = 1 2T (n 1) + 1, n > 1 (3.2) Maka kompleksitas waktunya dapat dihitung sebagai berikut: 2T (n 1) + 1 = 2(2T (n 2) + 1) + 1 = 2 2 T (n 2) + 2 + 1 = 2 2 (2T (n 3) + 1) + 2 + 1 = 2 3 T (n 3) + 2 2 + 2 + 1 = = 2 n 2 (2T (n (n 1)) + 1) + 2 n 3 + + 2 2 + 2 + 1 = 2 n 2 2T (1) + ( 2 n 2 + 2 n 3 + + 2 2 + 2 + 1 ) = 2 n 1 + 2 n 2 + 2 n 3 + + 2 2 + 2 + 1 = 2 n 1 Sehingga 2 n 1 O(2 n ). 4 Relasi Rekursi Min Max Perhatikan algoritma mencari data maksimum dan minimum dari suatu tabel berikut procedure MinMaks2(input A : TabelInt, i, j : integer, output min, maks : integer) Mencari nilai maksimum dan minimum di dalam tabel A yang berukuran n elemen secara Divide and Conquer. Masukan: tabel A yang sudah terdefinisi elemen- elemennya Keluaran: nilai maksimum dan nilai minimum tabel } Deklarasi 5

min1, min2, maks1, maks2 : integer if i=j then Jika satu elemen} min <-- A[i] maks <-- A[i] if (i = j-1) then Jika dua elemen} if A[i] < A[j] then maks <-- A[j] min <-- A[i] maks <-- A[i] min <-- A[j] k=(i+j) div 2 bagidua tabel pada posisi k } MinMaks2(A, i, k, min1, maks1) MinMaks2(A, k+1, j, min2, maks2) if min1 < min2 then min <-- min1 min <-- min2 if maks1<maks2 then maks <-- maks2 maks <-- maks2 Dari algoritma tersebut dapat dibuat relasi rekursi sebagai berikut: 0, n = 1 1, n = 2 2T (n/2) + 2, n > 2 Sehingga waktu asismtotiknya bisa dicari yaitu: (4.1) 6

Misal n = 2 k, sehingga 2T (n/2) + 2 = 2(2T (n/4) + 2) + 2 = 4T (n/4) + 4 + 2 = 4(2T (n/8) + 2) + 4 + 2 = 8T (n/8) + 8 + 4 + 2 = 2 3 T (2 k /2 3 ) + 8 + 4 + 2 = 2 3 T (2 k 3 ) + 2 3 + 2 2 + 2 1, n = 2 k = = 2 k 1 T (2) + 2 k 1 + + 2 2 + 2 1 k 1 = 2 k 1 + i=1 = 2 k 1 + 2 k 2 Selanjutnya bawa ke bentuk n atau k = 2 log n, 2 i 5 Tambahan 2 k 1 + 2 k 2 = 2 2 log n 1 + 2 2 log n 2 = n 2 + n 2 = 3n 2 2 O(n) Untuk mengetahui kompleksitas bentuk rekursif, maka T (n) harus diubah dalam bentuk yang bukan rekursif. Bagaimana mengubah bentuk rekursif ke non rekursif? Ada dua macam cara untuk menyelesaikan masalah ini, yaitu cara coba-coba dan dengan persamaan karakteristik : 1. Cara coba-coba (deret). 2. Metode dengan persamaan karakteristik 5.1 Cara coba-coba Cara ini dilakukan dengan menentukan pola deret yang terbentuk (cara deret). Contoh untuk cara ini telah ditunjukkan dalam mencari kompleksitas waktu untuk beberapa bentuk rekursif sebelumnya. Cara ini agak sulit dan perlu pengalaman. Example 5.1 Tentukan waktu rekursi berikut: a, n = 1, 2 T (n 1) + T (n 2) + b, n 3 (5.1) 7

Solusi dari contoh diatas dengan cara coba coba adalah sebagi berikut: T (1) = T (2) = a T (3) = T (2) + T (1) + b = a + a + b = 2a + b T (4) = T (3) + T (2) + b = (2a + b) + a + b = 3a + 2b T (5) = T (4) + T (3) + b = (3a + 2b) + (2a + b) + b = 5a + 4b T (6) = T (5) + T (4) + b = (5a + 4b) + (3a + 2b) + b = 8a + 7b Sangat sulit untuk bisa diformulasikan. Sehingga harus mencari cara lain utntuk menghitung waktu algoritma. Salah satu caranya adalah dengan menggunakan metode karakteristik. Metode ini akan dijelaskan pada peretemuan selanutnya. References 1. Anany, L. (2003). Introduction to the design and analysis of algorithms. Villanova University. 2. http://www.annedawson.net/bigoh.htm 6 Exercise 1. Selesaikan relasi rekurensi berikut: (a) 0, n = 1 T (n 1) + 5, n 2 (6.1) (b) 4, n = 1 3T (n 1), n 2 (6.2) (c) 0, n = 0 T (n 1) + n, n > 0 (6.3) (d) 1, n = 1 T (n/2) + n, n > 1 (6.4) (e) 1, n = 1 T (n/3) + 1, n > 1 (6.5) 2. Diberikan algoritma untuk menghitung jumlah pangkat 3 dari deret, S(n) = n 3 + (n 1) 3 + + 2 3 + 1 3. 8

ALGORITHM S(n) //Input: A positive integer n //Output: The sum of the first n cubes if n = 1 return 1 return S(n - 1) + n * n * n (a) Tentukan relasi rekursi dari algoritma di atas dan selesaikan. (b) Bandingkan dengan algoritma yang tidak ditulis dengan rekursif. 9