Design and Analysis Algorithm

dokumen-dokumen yang mirip
Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 03

Design and Analysis Algorithm

Design and Analysis of Algorithm

Pertemuan 4 Fungsi Rekursif

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

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

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

Design and Analysis of Algorithm

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

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

REKURSIF. Arkham Zahri Rakhman, S.Kom., M.Eng. Rev.: Dr. Fazat Nur Azizah

Algoritma dan Struktur Data

Algoritma Pemrograman

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

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

Algoritma Pemrograman

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

REKURSIF. Dari bahan Dasar Pemrograman oleh: Arkham Zahri Rakhman Rev.: Fazat Nur Azizah

Design and Analysis Algorithm

Recursion, Algoritma, Struktur Data. Recursion. Erick Pranata. Edisi I

Algoritma Pemrograman

BAB V Tujuan 5.1 Rekursi Dasar

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

Design and Analysis Algorithm

Fungsi Rekursif. Bentuk umum fungsi rekursif.

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

Struktur Data & Algoritme (Data Structures & Algorithms)

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Outline. Apa itu Recursion? Recursion

Recursion, Algoritma, Struktur Data. Recursion. Erick Pranata. Edisi II

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

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

Perulangan Rekursif dan Perulangan Iteratif

Pengantar Analisa Algoritma

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

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

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

A. TUJUAN PEMBELAJARAN

Karena relasi rekurens menyatakan definisi barisan secara rekursif, maka kondisi awal merupakan langkah basis pada definisi rekursif tersebut.

Optimasi Perhitungan Bilangan Fibonacci Menggunakan Program Dinamis

RESUME ALGORITMA MERGE SORT DAN REKURENS

UNIVERSITAS GUNADARMA

I Putu Gede Darmawan

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

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

JARINGAN UNTUK MERGING

STRATEGI DIVIDE AND CONQUER

Decrease and Conquer

ANALISIS ALGORITMA BINARY SEARCH

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Rekursif. Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.

Analisa Algoritma. Konsep Algoritma

Kompleksitas Algoritma

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

Kompleksitas Komputasi

Pertemuan 4 Diagram Alur / Flowchart

BAB II PROSES REKURSI DAN ITERASI

Berbagai Solusi Pemecahan Masalah Tower of Hanoi dan Representasi Grafnya

Catatan Kuliah STRUKTUR DATA BAB III REKURSIF

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

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

Selection, Looping, Branching

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

PERTEMUAN 7 REVIEW (QUIZ)

Algoritma Perulangan. Kuliah algoritma dan pemrograman

Solusi Rekursif pada Persoalan Menara Hanoi

Praktikum 6. Konsep Rekursi Perbandingan Perulangan biasa dan Rekursi Implementasi Rekursi dalam Bahasa C

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

Langkah Awal menuju Analisis Kompleksitas Algoritma

Algoritma Divide and Conquer. (Bagian 2)

BAB II TINJAUAN PUSTAKA

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

Pertemuan 10 REKURSI

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA April 1, 2010 BAB 8 REKURSIF

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

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

Alat Peraga Menara Hanoi untuk Pembelajaran Pola Bilangan. Oleh: Tim Unit Media Alat Peraga Matematika

Kompleksitas Algoritma

Problem A. Turnamen Panco

Penyelesaian Persoalan Penukaran Uang dengan Program Dinamis

METODE DEVIDE AND CONQUER (DANDC)

Kompleksitas Algoritma

Analisis dan Strategi Algoritma

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

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

c. Membeli komputer d. Proses 2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b.

BAB 3 ANALISA SISTEM

Algoritma Divide and Conquer (Bagian 2)

Kompleksitas Algoritma (1)

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

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

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

5.3 RECURSIVE DEFINITIONS AND STRUCTURAL INDUCTION

Apakah Anda sering kesulitan untuk

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Penyelesaian Barisan Rekursif dengan Kompleksitas Logaritmik Menggunakan Pemangkatan Matriks

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

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

Soal Ujian Akhir Semester Pendek TA. 2006/2007 D3-Manajemen Informatika

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

Transkripsi:

Design and Analysis Algorithm Pertemuan 04 Drs. Achmad Ridok M.Kom Imam Cholissodin, S.Si., M.Kom M. Ali Fauzi, S.Kom., M.Kom. Ratih Kartika Dewi, ST, M.Kom

Contents Dasar Analisis Algoritma Rekursif 2

Contents 31 2 Fungsi Rekursif Format Fungsi Rekursif 3 Analisa Efisiensi Algoritma Rekursif 3

Apa itu fungsi rekursif? Fungsi yang memanggil dirinya sendiri Sebuah fungsi f juga merupakan fungsi rekursif jika memanggil fungsi lain g dan di dalam g terdapat pemanggilan f 4

Apa itu fungsi rekursif? Permasalahan yang dapat diselesaikan oleh fungsi rekursif memiliki sifat Memiliki kasus sederhana yang dapat langsung diselesaikan (base case). Contoh 0! = 1. Kasus yang kompleks dapat diuraikan menjadi kasus yang identik dengan ukuran yang lebih kecil (recursive cases). Contoh: n! = n * (n-1)! Dengan menerapkan karakteristik 2 berulang-ulang, recursive cases akan mendekati dan sampai pada base case. Contoh: n! (n-1)! (n-2)!... 1!, 0!. 5

Apa itu fungsi rekursif? 6

Format Fungsi Rekursif if this base case solve it else redefine the problem using recursion case 7

Format Fungsi Rekursif Cabang if berisi base case, sedangkan bagian elsenya berisi recursive case Agar rekursi dapat berhenti input recursive cases harus mendekati base case di setiap pemanggilan fungsi rekursif 8

Latihan Buatlah fungsi rekursif untuk menghitung nilai X n Buat pohon rekursif untuk 4 5 9

Algorithm pangkat(x, n) //algoritma untuk menghitung nilai X n secara rekursif //input : integer positif X dan n //output : nilai X n if n = 1 return X else return (X * pangkat(x, n-1)) Pohon rekursifnya? 10

Latihan Buatlah fungsi rekursif untuk menghitung bilangan fibonacci ke n Buat pohon rekursif untuk fib(4) 11

Algorithm fib(n) //algoritma untuk menghitung bilangan fibonacci ke n //secara rekursif //input : n //output : bilangan fibonacci ke n if n = 0 or n = 1 return n else return (fib(n - 1) + fib(n - 2)) Pohon rekursifnya? 12

Analisa Efisiensi Algoritma Rekursif Algorithm pangkat(x, n) //algoritma untuk menghitung nilai X n secara rekursif //input : integer positif X dan n //output : nilai X n if n = 1 return X else return (X * pangkat(x, n-1)) Analisalah efisiensi waktu algoritma rekursif 13

Analisa Efisiensi Algoritma Rekursif Langkah-langkah umum untuk menganalisa efisiensi waktu algoritma rekursif 1. Tentukan metrik untuk ukuran input 2. Identifikasi basic operation algoritma 3. Tentukan apakah untuk ukuran input yang sama banyaknya eksekusi basic operation bisa berbeda 4. Tentukan persamaan rekursi yang menunjukkan berapa kali basic operation dieksekusi 5. Cari rumus langsung yang menunjukkan banyaknya basic operation dieksekusi 14

Analisa Efisiensi Algoritma Rekursif 1 : Metrik untuk ukuran input Sesuatu pada input yang jika membesar, maka banyaknya pemanggilan fungsi rekursif bertambah Pada kasus ini adalah nilai n. Jika n membesar, maka banyaknya komputasi atau pemanggilan fungsi rekursi bertambah Untuk memahaminya coba gambar pohon rekursifnya. Efisiensi dinyatakan sebagai fungsi dari n 15

Analisa Efisiensi Algoritma Rekursif 2 : Basic operation Pada algoritma rekursif merupakan salah satu operasi pada kondisi seleksi base case atau bagian recursive case if n = 1 Basic operationnya dipilih = yang dilakukan 1 kali setiap kali fungsi rekursif dipanggil 16

3 : Case Analisa Efisiensi Algoritma Rekursif Apakah ada best case, average case dan worst case? Untuk input n tertentu misal 5, recursion treenya selalu sama. Banyaknya komputasi / pemanggilan fungsi rekursi tetap. Tidak ada best case, average case dan worst case 17

Analisa Efisiensi Algoritma Rekursif 4 : Persamaan rekursif banyaknya eksekusi basic operation Jika algoritma pangkat dieksekusi dengan input (X, n) maka basic operation dieksekusi satu kali. Namun pada saat eksekusi, algoritma tersebut juga memanggil dirinya sendiri dengan input (A, B-1). if n = 1 Hal ini menyebabkan secara internal basic operation dieksekusi lagi. Berapa kali banyaknya basic operation dieksekusi untuk input n? 18

Analisa Efisiensi Algoritma Rekursif 4 : Persamaan rekursif banyaknya eksekusi basic operation Jika C(n) menyatakan banyaknya basic operation dieksekusi untuk input berukuran n dan C(n - 1) menyatakan banyaknya basic operation dieksekusi untuk input berukuran n-1, Hubungan C(n) dan C(n - 1) dinyatakan dengan C(n) = C(n - 1) + 1 untuk n > 1 (recursive case) C(1) = 1, base case 19

Analisa Efisiensi Algoritma Rekursif 5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi Untuk mengetahui kelas efisiensi waktunya kita harus menemukan persamaan langsung (non recursive) dari C(n) 20

Analisa Efisiensi Algoritma Rekursif 5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi Menggunakan metode backward substitution, cari pola dari C(n) : C(n) = C(n - 1) + 1 C(n) = (C(n - 2) + 1) + 1 = C(n) = C(n - 2) + 2 C(n) = (C(n - 3) + 1) + 2 = C(n) = C(n - 3) + 3 dst Pola atau bentuk umum yang didapatkan adalah C(n) = C(n - i) + i. 21

Analisa Efisiensi Algoritma Rekursif 5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi Nilai initial condition C(1) disubtitusikan ke C(n - i) pada bentuk umum C(n). C(n) = C(n - i) + i C(n) = C(1) + i C(n) = i + 1 22

Analisa Efisiensi Algoritma Rekursif 5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi Subtitusi tersebut mensyaratkan C(n - i) = C(1) atau n i = 1 i = n 1 nilai i = n 1 disubtitusikan ke bentuk umum C(n) = i + 1 sehingga C(n) = n 1 + 1 C(n) = n C(n) merupakan anggota kelas n Apa artinya? Ingat materi pertemuan sebelumnya 23

Analisa Waktu Algoritma Pada algoritma X n Untuk bentuk rekursif, digunakan teknik perhitungan dengan relasi rekurens Untuk kasus basis, tidak ada operasi perkalian (0) Untuk kasus rekurens, waktu dihitung dari jumlah perkalian (1) ditambah waktu untuk x n-1 24

Relasi rekurens Analisa Waktu Algoritma T(n)=0 untuk n=1 T(n)=(n-1)+1 untuk n>1 Analisa waktu: T(n) = T(n - 1) + 1 T(n) = (T(n - 2) + 1) + 1 = T(n - 2) + 2 T(n) = (T(n - 3) + 1) + 2 = T(n - 3) + 3 T(n) = T(1) + n T(n) = 0 + n = n times Anggota kelas n 25

Latihan 2 Buatlah fungsi rekursif untuk menghitung nilai faktorial bilangan n Buat pohon rekursif untuk faktorial(5) Analisalah efisiensi waktu algoritmanya 26

Soal 1 Buatlah fungsi rekursif untuk menghitung permasalahan Menara Hanoi Bagaimana memindahkan piringan di A ke sebuah tiang B; setiap kali hanya satu piringan yang boleh dipindahkan, tetapi tidak boleh ada piringan besar di atas piringan kecil. Ada tiang perantara C Buat Algoritmanya Analisalah efisiensi waktu algoritmanya ( Buktikan bahwa T(n) = 2 n -1 ) 27

Algorithm Hanoi(n, A, B, C) if n = 1 pindahkan piringan A ke B else Hanoi(n-1,A,C,B) pindahkan piringan A ke B Hanoi(n-1,C,B,A) end if Analisis efisiensi algoritma? 28

Relasi rekurens : T(n) = 1 untuk n=1 T(n) = 2T(n-1) + 1 untuk n>1 Analisis waktu: T(n) = 2T(n - 1) + 1 T(n) = 2(2T(n - 2) + 1) + 1 = 2 2 T(n - 2) + 2 + 1 T(n) = 2 2 (2T(n - 3) + 1) + 2 + 1= 2 3 T(n - 3) + 2 2 + 2 + 1 T(n) = 2 n-1 + + 2 3 + 2 2 + 2 + 1 T(n) = 2 n - 1 = 2 n - 1 times Anggota kelas 2 n 29

Bukti Pernyataan Pendeta T(n) = 2 n -1 Jumlah seluruh perpindahan piringan. Jika perpindahan 1 piringan membutuhkan waktu 1 detik, maka waktu yang dibutuhkan untuk memindahkan 64 piringan : 2 64-1 detik = 10.446.744.073.709.551.615 Kira-kira 600 milyar tahun?!?!?!?! 30

Soal 2 Algoritma Fibonacci adalah algoritma rekursif yang bertujuan untuk menampilkan angka fibonacci. F n = 0, jika n = 0 1, jika n = 1 F n 1 + F n 2, jika n > 1 Pertanyaan : a. Gambarkan pohon rekursifnya untuk fib(5)! b. Analisis dan hitung kompleksitas dari C(n) = C(n-1) + C(n-2) + 1! (diasumsikan C(1)=1 dan C(0)=1). 31 n n n n n n n S n U 2 5 1 1 2 5 1 1 2 5 1 2 5 1 5 1 0,1,.. dimana, 5 2 5 1 5 1. Deret : 0,1,1,2,3,5,8,13,21,34,55, Petunjuk Hitung Kompleksitas: 2 2

Soal 2 Desainlah algoritma untuk menghitung 2 n untuk semua n integer positif berdasarkan konsep 2 n = 2 n 1 + 2 n 1. Buatlah persamaan rekursifnya lalu hitung estimasi waktunya, basic operationya adalah penambahan. Gambarkan gambar pohon rekursifnya dan hitung jumlah pemanggilan yang dilakukan n=4 Apakah algoritma ini bagus? 32

Soal 3 Apa tujuan dari Algoritma ini? Buatlah persamaannya lalu hitung estimasi waktu ekseskusinya jika basic operationya adalah multiplication 33

Soal 4 Perhatikan algoritma rekursif untuk menghitung S(n) = 1 3 + 2 3 +... + n 3. Buatlah persamaannya lalu hitung estimasi waktu ekseskusi basic operationya(multiplication) Buat algortima non rekursif untuk fungsi tersebut, hitung estimasi waktunya lalu bandingkan dengan algoritma rekursif 34

Soal 5 Buatlah persamaannya lalu hitung estimasi waktu ekseskusi basic operationya (penambahan) 35

Click to edit subtitle style