Design and Analysis of Algorithm Recursive Algorithm Analysis

Slides:



Advertisements
Presentasi serupa
REKURSIF.
Advertisements

Desain Dan Analisis Algoritma
Algoritma dan Struktur Data
Aryo Pinandito, ST, M.MT - PTIIK UB
Algoritma dan Struktur Data
REKURSIF.
1 Algoritma Bahasa Pemrograman dan Bab 1.1. Pengertian Algoritma.
MATERI 9 FUNGSI REKURSIF.
1 Ruli Manurung & Ade AzuratFasilkom UI - IKI /2008 – Ganjil – Minggu 4 Dasar-dasar Rekursif.
Rekursif Yuliana Setiowati.
Desain dan Analisis Algoritma
Design and Analysis of ALGORITHM (Session 3)
Fungsi Rekursif.
sebuah fungsi yang memanggil dirinya sendiri
Sumber Kepustakaan : indryz.lecture.ub.ac.id/.../analisa-efisiensi- algoritm... 1  Fungsi yang memanggil dirinya sendiri  Sebuah fungsi f juga merupakan.
LOGIKA DAN ALGORITMA - PERTEMUAN 8 - REKURSI.
Function.
Modul-8 : Algoritma dan Struktur Data
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
Chapter 1-a FLOW CHART.
Langkah Awal Modularisasi
Design and Analysis Algorithm
Algoritma dan Struktur Data
BLACK BOX TESTING.
Presented By : Group 2. A solution of an equation in two variables of the form. Ax + By = C and Ax + By + C = 0 A and B are not both zero, is an ordered.
1 Diselesaikan Oleh KOMPUTER Langkah-langkah harus tersusun secara LOGIS dan Efisien agar dapat menyelesaikan tugas dengan benar dan efisien. ALGORITMA.
1 Pertemuan 12 Pengkodean & Implementasi Matakuliah: T0234 / Sistem Informasi Geografis Tahun: 2005 Versi: 01/revisi 1.
HAMPIRAN NUMERIK SOLUSI PERSAMAAN NIRLANJAR Pertemuan 3
Algoritma dan Struktur Data
1 Pertemuan 15 Game Playing Matakuliah: T0264/Intelijensia Semu Tahun: Juli 2006 Versi: 2/1.
1 HAMPIRAN NUMERIK SOLUSI PERSAMAAN LANJAR Pertemuan 5 Matakuliah: K0342 / Metode Numerik I Tahun: 2006 TIK:Mahasiswa dapat meghitung nilai hampiran numerik.
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.
Aplikasi Rekursif.
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
DIG1G3 Implementasi Struktur Data
KOMUNIKASI DATA Materi Pertemuan 3.
Recurrence relations.
Algoritma rekursif dan relasi rekurensi
Branch and Bound Lecture 12 CS3024.
Design and Analysis Algorithm
REKURSIF Learning Outcomes Pada akhir pertemuan ini, mahasiswa mampu:
CSG523/ Desain dan Analisis Algoritma
Algoritma dan Struktur Data
Dasar-Dasar Pemrograman
CA113 Pengantar Manajemen Bisnis
Faktor analisa algoritma
Algoritma.
CSG3F3/ Desain dan Analisis Algoritma
Kuis 1 April 2017 Pilih Suatu Proyek IT
BILANGAN REAL BILANGAN BERPANGKAT.
Algorithms and Programming Searching
CA113 Pengantar Manajemen Bisnis
Rekursif- studi kasus.
Recursive function.
STRUKTUR DATA (10) recursive function
Algoritma Rekursif.
Master data Management
Algoritma Rekursif Alpro-2.
Rekursif By Serdiwansyah N. A..
Analisa algoritma rekursif
CA113 Pengantar Manajemen Bisnis
Simultaneous Linear Equations
Dasar-Dasar Pemrograman
Aplikasi Graph Minimum Spaning Tree Shortest Path.
Algoritma & Pemrograman 1 Achmad Fitro The Power of PowerPoint – thepopp.com Chapter 3.
Rekursif Yuliana Setiowati. Rekursif Proses yang memanggil dirinya sendiri. Merupakan suatu fungsi atau prosedur Terdapat suatu kondisi untuk berhenti.
Perulangan (Loop) Oleh : Tim Teaching
Transcript presentasi:

Design and Analysis of Algorithm Recursive Algorithm Analysis Aryo Pinandito, ST, M.MT - PTIIK UB

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. start f start end f g

Sifat Penyelesaian Masalah dengan 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!.

Fungsi Rekursif: Tree

Format fungsi rekursif if current case is base case then solve it else redefine the problem using recursion case

Format fungsi rekursif Cabang if berisi base case, sedangkan bagian else- nya berisi recursive case Agar rekursi dapat berhenti input pada recursive cases harus mendekati base case di setiap pemanggilan fungsi rekursif

Latihan Buatlah fungsi rekursif untuk menghitung nilai Xn. Buat pohon rekursif untuk 45.

Jawaban Algoritma: pangkat(X, n) Pohon rekursif? 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)) Pohon rekursif?

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

Jawaban Algorithm fibonacci(n) Pohon rekursif? // 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 rekursif?

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)) Analisis efisiensi waktu algoritma rekursif!

Langkah-langkah Umum Analisis Efisiensi Waktu Algoritma Rekursif Tentukan metrik untuk ukuran input Identifikasi basic operation algoritma Tentukan apakah untuk ukuran input yang sama banyaknya eksekusi basic operation bisa berbeda Tentukan persamaan rekursi yang menunjukkan berapa kali basic operation dieksekusi Cari rumus langsung yang menunjukkan banyaknya basic operation dieksekusi

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

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

3: Case Apakah ada best case, average case dan worst case? Untuk input n tertentu misal 5, recursion treenya selalu sama. Banyaknya komputasi / pemanggilan fungsi rekursif tetap. Tidak ada best case, average case dan worst case Pada fungsi rekrusif.

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 (X, n-1). Hal ini menyebabkan secara internal basic operation dieksekusi lagi. Berapa kali banyaknya basic operation dieksekusi untuk input n? if n == 1

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

4: Persamaan Rekursif Banyaknya Eksekusi Basic Operation Untuk mengetahui kelas efisiensi waktunya kita harus menemukan persamaan langsung (non recursive) dari C(n)

Perhitungan efisiensi waktu 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.

Perhitungan efisiensi waktu 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

Perhitungan efisiensi waktu 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 efisiensi n Apa artinya?

Example 2: Tower of Hanoi (1) n disks on different sizes and three pegs Initially, all disks are on the first peg in order of size. The largest on the bottom and the smallest on top The goal: move all disks to the third peg, using the second one as an auxiliary Move only one disk at a time It is forbidden to place a larger disk on top of a smaller one CS3024-FAZ

Example 2: Tower of Hanoi (2)

Tower of Hanoi: Recursive Solution (1)

ToH: Recursive Solution (2) To move n>1 disks from peg 1 to peg 3 (with peg 2 as an auxiliary): Move recursively n-1 disk(s) from peg 1 to peg 2 (with peg 3 as an auxiliary) Move the largest disk from peg 1 to peg 3 Move recursively n-1 disk(s) from peg 2 to peg 3 (with peg 1 as an auxiliary)

Recursive Pseudocode FUNCTION MoveTower(disk, source, dest, spare): IF disk == 0, THEN: move disk from source to dest ELSE: MoveTower(disk - 1, source, spare, dest) MoveTower(disk - 1, spare, dest, source) END IF

ToH: Analysis (1) Input's size = the number of disks = n Basic operation = moving one disk The number of moves M(n) depends on n only: M(n) = M(n-1) + 1 + M(n-1) ; for n>1 Recurrence relation: M(n) = 2M(n-1) + 1 ; for n>1 M(1) = 1  initial condition

ToH: Analysis (2) Backward substitution: M(n) = 2M(n-1) + 1 The pattern, after i substitution: M(n) = 2iM(n-i) + 2i-1 + 2i-2 +..+ 2 + 1 = 2iM(n-i) + 2i - 1

ToH: Analysis (3) Initial condition, n=1  i=n-1: M(n) = 2iM(n-i) + 2i - 1 = 2(n-1)M(n-(n-1)) + 2(n-1) -1 = 2(n-1)M(1) + 2(n-1) - 1 = 2(n-1) + 2(n-1) - 1 = 2n - 1 Exponential algorithm! This is the most efficient algorithm It is the problem's intrinsic difficulty that makes it so computationally difficult

Exercises (2) Algorithm S(n) //input: a positive integer n if n = 1 return 1 else return S(n-1)+n*n*n What does this algorithm compute? Set up and solve a recurrence relation for the number of times the basic operation is executed How does this algorithm compare with the straightforward non recursive algorithm for computing this function?

Exercises (3) Write an algorithm to find the n-th Fibonacci number recursively by using its definition. Is it more efficient than the iterative algorithm to find the same number? CS3024-FAZ

Exercises (4) In the original version of the Tower of Hanoi puzzle (Edouard Lucas, 1890), the world will end after 64 disks have been moved from a mythical Tower of Brahma. Estimate the number of years it will take if priests could move one disk per minute (they do not eat, sleep, or die) How many moves are made by the i-th largest disk (1≤i ≤n) in this algorithm?

Questions?

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