Recursion Properties. Factorial: MaxSubseqSum Recursive version. MaxSubseqSum Recursive version

dokumen-dokumen yang mirip
Struktur Data dan Algoritma

ANALISA RUNNING TIME

Struktur Data & Algoritma

Struktur Data & Algoritme (Data Structures & Algorithms)

Struktur Data & Algoritme (Data Structures & Algorithms)

Algoritme. Struktur Data & Algoritme (Data Structures & Algorithms) Expected Outcome. Analisa Algoritme: motivasi. Analisa Algoritme: what?

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

Decrease and Conquer

Perbandingan Algoritma Brute Force, Divide and conquer, dan Dynamic Programming untuk Solusi Maximum Subarray Problem

ANALISIS ALGORITMA BINARY SEARCH

Design and Analysis of Algorithm

Outline STRUKTUR DATA. VII. Sorting

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

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

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

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

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

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

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

Struktur Data & Algoritma

STRATEGI DIVIDE AND CONQUER

Sorting Algorithms. Divide and Conquer

Implementasi Pemrograman Dinamis dalam Pencarian Solusi Permainan Menara Hanoi

Algoritme dan Pemrograman

Struktur Data & Algoritme (Data Structures & Algorithms)

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Sort. Outline. Bubble Sort: idea. Bubble Sort. Sorting

Algoritme dan Pemrograman

Struktur Data & Algoritma

12/26/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Sorting. Data untuk sorting. Contoh. Algoritme #1: BUBBLE SORT.

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

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

PERTEMUAN 11 TEHNIK SEARCHING

PENCARIAN (SEARCHING)

UNIVERSITAS GUNADARMA

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

Struktur Data dan Algoritma

Design and Analysis Algorithm

Design and Analysis Algorithm

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

SATUAN ACARA PERKULIAHAN PERANCANGAN DAN ANALISIS ALGORITMA ** (S1/TEKNIK INFORMATIKA) PTA 2010/2011

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Algoritma dan Struktur Data. Linear & Binary Search Tree

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

Aplikasi Divide and Conquer pada: 1. Grafika Komputer 2. Evaluasi expression tree. Oleh: Rinaldi Munir Informatika STEI-ITB

Pengantar Strategi Algoritmik. Oleh: Rinaldi Munir

Pertemuan 4 Fungsi Rekursif

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

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

Penerapan Algoritma Brute Force di Permainan Nonogram

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

Insertion Sort Dengan Algoritma Divide And Conquer

BAB VII ALGORITMA DIVIDE AND CONQUER

Penyelesaian Barisan Rekursif dengan Kompleksitas Logaritmik Menggunakan Pemangkatan Matriks

Design and Analysis of Algorithm

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

Politeknik Elektronika Negeri Surabaya

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

13/12/2013. Binary Tree. Contoh Tree

METODE DEVIDE AND CONQUER (DANDC)

RENCANA PEMBELAJARAN SEMESTER (RPS)

UJIAN AKHIR SEMESTER GANJIL 2005/2006 ALGORITMA & STRUKTUR DATA / CS2014

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

Analisis dan Strategi Algoritma

Pertemuan 10 REKURSI

Berbagai Solusi Pemecahan Masalah Tower of Hanoi dan Representasi Grafnya

Menghitung Inversion Pada Barisan Dengan Menggunakan Modifikasi Bubble Sort, Insertion Sort, dan Merge Sort

Ujian Akhir Semester Ganjil 2013/2014

TUGAS RESUME MATERI KULIAH ALGORITMA DAN STRUKTUR DATA STRATEGI ALGORITMA : H

Sequential Search (Linear Search)

Analisis Kecepatan Sorting Dengan Notasi Big O

Modul 4: Iteratif & Rekursif, Binary Tree

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Penyelesaian Masalah Closest Pair dengan Algoritma Divide and Conquer

Multithreading untuk Algoritma Divide and Conquer

Politeknik Elektronika Negeri Surabaya

Pemecahan Masalah Longest Increasing Subsequence Memanfaatkan Program Dinamis dan Binary Search

ALGORITMA DIVIDE AND CONQUER

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Algoritma Divide and Conquer

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

BAB 3 SEARCHING A. TUJUAN

Pembuatan Peta Permainan dengan BSP

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

ANALISIS PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI PERSOALAN LOMPATAN KUDA

MAKALAH ALGORITMA DIVIDE AND CONQUER

Algoritma Dan Struktur Data II

Politeknik Elektronika Negeri Surabaya

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

Pengantar Strategi Algoritma

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

Testing dan Implementasi Sistem

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Modul Praktikum Algoritma dan Struktur Data

BAB I PENDAHULUAN Latar Belakang

Penger6an struct. Algoritme dan Pemrograman. Cara membuat struct. Deklarasi struct. Pointer pada struct 12/10/14 ILKOM IPB 1

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

Transkripsi:

Recursion Properties base case, problem paling sederhana yang memproses input tanpa perlu recursive lagi. recursive case: 1. membagi problem menjadi bagian yang lebih kecil. 2. memanggil fungsi secara recursive untuk setiap bagian 3. menggabungkan solusi tiap bagian ke menjadi solusi dari problem utama. 04-Mar-04 IKI10100 - PM 1 Factorial: static public int factorial( int n) { // return n! if( n <= 1) // base case return 1; else return n * factorial(n-1); 04-Mar-04 IKI10100 - PM 2 MaxSubseqSum Recursive version MaxSubseqSum Recursive version Case 1: Max sum dihasilkan oleh elemen di paruh pertama Case 2: Max sum dihasilkan oleh elemen di paruh kedua Case 3: Max sum dihasilkan oleh elemen awal di paruh pertama dan berakhir di paruh kedua public int maxsubsum (int[ ] a) { return maxsumrec(a, 0, a.length-1); private int maxsumrec(int[ ] a, int left, int right) { int center = (left+right)/2; cari index tengah Case 1 Case 2 if(left == right) return a[left] > 0? a[left] : 0; base case Case 3 int maxleftsum = maxsumrec(a, left, center); cari max di paruh kiri Pilih dari ketiganya yang menghasilkan nilai terbesar. 04-Mar-04 IKI10100 - PM 3 int maxrightsum = maxsumrec(a, center+1, right);. cari max di paruh kanan 04-Mar-04 IKI10100 - PM 4

MaxSubseqSum Recursive Version Recursive Version for(int i=center; i>=left; i--) { leftbordersum += a[i]; if(leftbordersum > maxleftbordersum) maxleftbordersum = leftbordersum; for(int j=center+1; j<=right; j++) { rightbordersum += a[j]; if(rightbordersum > maxrightbordersum) maxrightbordersum = rightbordersum; cari max jumlah dari tengah ke kiri return max3(maxleftsum, maxrightsum, maxleftbordersum + maxrightbodersum); cari max jumlah dari tengah ke kanan pilih max dari ketiga kemungkinan 04-Mar-04 IKI10100 - PM 5 First Half Second Half 4-3 5-2 -1 2 6-2 4 0 3-2 - 7 5 maxseqsum 04-Mar-04 IKI10100 - PM 6 Recursive Call Running Time Binary Search O ( log ) 04-Mar-04 IKI10100 - PM 7 low high mid int binsearch(data[ ], n, low, high) { mid = data.length() / 2; if( data[mid] == n ) return mid; else if ( n < data[mid] ) return binsearch(data[ ], n, low, mid ); else return binsearch( data[ ], n, mid+1, high); 04-Mar-04 IKI10100 - PM 8

Running Time of BinarySearch Tower of Hanoi (Lucas, 1883) Pindahkan tumpukan disc dari source ke dest dengan bantuan auxiliary Tumpukan disc harus mengecil ke atas. O (log ) 04-Mar-04 IKI10100 - PM 9 source auxiliary destination 04-Mar-04 IKI10100 - PM 10 Tower of Hanoi Recursive Solution ( discs) Change-making Problem: 1. Move the top -1 disks from Src to Aux (using Dst as an intermediary peg) 2. Move the bottom disks from Src to Dst 3. Move -1 disks from Aux to Dst (using Src as an intermediary peg) Solve(, Src, Aux, Dst) if is 0 exit Solve(-1, Src, Dst, Aux) Move from Src to Dst Solve(-1, Aux, Src, Dst) 04-Mar-04 IKI10100 - PM 11 Dengan coin yang tersedia C 1, C 2,.., C (cents) tentukan jumlah minimum coin yang diperlukan untuk kembalian sejumlah K cents. 04-Mar-04 IKI10100 - PM 12

Greedy Algorithm Inefficient makechange Dengan divide-and-conquer, hasilkan penyelesaian terbaik untuk setiap sub-problem tanpa memperhitungkan hasil akhir. Dengan coin: 1, 5, 10, 21 dan 25 cent, kembalian 63 cent: 25, 25, 10, 1, 1, 1. 04-Mar-04 IKI10100 - PM 13 int makechange (int[] coins, int change, int differentcoins) { int mincoins = change; max # of coins for (int i=0; i<differentcoins; i++) if (coins[i] == change) return 1; ada coin yg = change for (int j=1; j<=change/2; j++) { int thiscoins = makechange(coins, j, differentcoins) + makechange(coins, change-j, differentcoins); if(thiscoins < mincoins) mincoins = thiscoins return mincoins; 04-Mar-04 IKI10100 - PM 14 Brute-Force Recursive Version Dynamic Programming Coin = 1, 5, 7 Change = 10 1+minCoin(9) 1+minCoin(8) 5+minCoin(4) 7+minCoin(2) 1+minCoin(4) Hasil perhitungan disimpan dalam cache untuk kemudian dipakai lagi untuk permasalah yang sama. mincoin(10) 5+minCoin(5) 5+minCoin(0) 1+minCoin(2) 7+minCoin(3) 04-Mar-04 IKI10100 - PM 15 04-Mar-04 IKI10100 - PM 16

Dynamic Programming Result Caching Pelajari algoritma ini dan ubah ke bentuk recursive! for loop Version Menyimpan hasil penyelesaian optimal setiap tahap ke dalam bentuk array/tabel. Kembalian Jml Coin 2 2 5 1 6 2 10 1 11 2 23 3 63 3 04-Mar-04 IKI10100 - PM 17 coinused[0]=0; lastcoin[0]=1; for(int cents = 1; cents <= change; cents++) { int mincoins = cents; int newcoin = 1; for(int j = 0; j < diffcoins; j++) { j = index coin if(coins[ j ] > cents) continue; // can t use coin j if(coinused[ cents - coins[ j ] ] + 1 < mincoins) { mincoins = coinused[ cents-coins[ j ] ] + 1; newcoin = coins[ j ]; coinused[ cents ]=mincoins; lastcoin[ cents ]=newcoin; 04-Mar-04 IKI10100 - PM 18 Reporting Coin List for (int i = change; i > 0; ) { System.out.print( lastcoin[ i ] + ); i -= lastcoin[ i ]; System.out.println( ); 04-Mar-04 IKI10100 - PM 19 Result Caching Menyimpan hasil penyelesaian optimal setiap tahap ke dalam bentuk array/tabel. Kembalian Jml Coin 0 0 5 1 12 1 25 1 37 2 38 3 Kembalian Last Coin 0 0 5 5 12 12 25 25 37 12 38 1 coinused[ ] lastcoin[ ] Change(38) 04-Mar-04 IKI10100 - PM 20