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

dokumen-dokumen yang mirip
Design and Analysis Algorithm

Pertemuan 4 Fungsi Rekursif

Design and Analysis of Algorithm

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

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

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

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

Design and Analysis Algorithm

Design and Analysis of Algorithm

Algoritma dan Struktur Data

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

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

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

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

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

Struktur Data & Algoritme (Data Structures & Algorithms)

Algoritma Pemrograman

Algoritma Pemrograman

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

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

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

Fungsi Rekursif. Bentuk umum fungsi rekursif.

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

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

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

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

Perulangan Rekursif dan Perulangan Iteratif

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

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

RESUME ALGORITMA MERGE SORT DAN REKURENS

A. TUJUAN PEMBELAJARAN

Pengantar Analisa Algoritma

I Putu Gede Darmawan

UNIVERSITAS GUNADARMA

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

Solusi Rekursif pada Persoalan Menara Hanoi

Analisa Algoritma. Konsep Algoritma

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

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

STRATEGI DIVIDE AND CONQUER

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

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

Decrease and Conquer

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

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

Catatan Kuliah STRUKTUR DATA BAB III REKURSIF

ANALISIS ALGORITMA BINARY SEARCH

Berbagai Solusi Pemecahan Masalah Tower of Hanoi dan Representasi Grafnya

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Design and Analysis Algorithm

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Optimasi Perhitungan Bilangan Fibonacci Menggunakan Program Dinamis

Pertemuan 10 REKURSI

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

Selection, Looping, Branching

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

PERTEMUAN 7 REVIEW (QUIZ)

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

Struktur Data dan Algoritma

JARINGAN UNTUK MERGING

BAB II PROSES REKURSI DAN ITERASI

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

Langkah Awal menuju Analisis Kompleksitas Algoritma

METODE DEVIDE AND CONQUER (DANDC)

Problem A. Turnamen Panco

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

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

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

Apakah Anda sering kesulitan untuk

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

Program menjadi terstruktur Dapat mengurangi pengulangan kode program. Fungsi dapat diimplementasikan dalam tiga bentuk :

Algoritma. Begin at the beginning and go on /ll you come to the end: then stop. Lewis Caroll, Alice s Adventures in Wonderland, 1865

Pertemuan 4 Diagram Alur / Flowchart

BAB 3 ANALISA SISTEM

PENDEKATAN MASALAH TOWER OF HANOI DENGAN ALGORITMA DIVIDE AND CONQUER

OPERASI LOGIKA PADA GENERAL TREE MENGGUNAKAN FUNGSI REKURSIF

Method. Pemrograman Dasar Sistem Informasi PTIIK Herman Tolle

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

BAB 6. FUNGSI. Tujuan penggunaan fungsi : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode program.

Penyelesaian Persoalan Penukaran Uang dengan Program Dinamis

Algoritma dan Struktur Data

PROCEDURE DAN FUNCTION

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

Algoritma Divide and Conquer (Bagian 2)

Penerapan Relasi Rekursif dan Matriks dalam Partisi Bilangan Bulat

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

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

Algoritma Divide and Conquer. (Bagian 2)

STATEMEN GO TO DAN IF-THEN. Pertemuan IX

BAB VII ALGORITMA DIVIDE AND CONQUER

Kompleksitas Komputasi

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

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

Kompleksitas Algoritma (1)

Algoritma Sorting (Selection Insertion)

Refreshing Materi Kuliah Semester Pendek 2010/2011. Logika dan Algoritma. Heri Sismoro, M.Kom.

Transkripsi:

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

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

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 3

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!. 4

Apa itu fungsi rekursif? 5

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

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 7

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

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? 9

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

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? 11

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

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 13

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 14

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 15

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 16

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? 17

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 18

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) 19

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. 20

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 21

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 22

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 23

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 24

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

Latihan 2 Buatlah fungsi rekursif untuk menghitung permasalahan Menara Hanoi Kata Pendeta: Jika pemindahan 64 piringan berhasil dilakukan, maka DUNIA KIAMAT!!! 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 26

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? 27

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 2 + 2 + 1 T(n) = 2 n - 1 = 2 n - 1 times Anggota kelas 2 n 28

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?!?!?!?! 29

Click to edit subtitle style