Hour 12: APPLIED RECURSION Ivan Kurniawan Prasetyo
Rekursi Terapan Menyelesaikan masalah yang rumit dengan cara yang simple Puzzle “Towers of Hanoi” Penerapan dalam algoritma sorting Merge Sort
Towers of Hanoi Puzzle (1) 3 buah menara (menara A, B, C) Piringan sejumlah ‘n’ , urut dari kecil – besar
Towers of Hanoi Puzzle(2) Rule and Goal: ‘n’ piringan pada menara A pindah ke menara C Piringan hanya dipindahkan satu per satu Memanfaatkan menara B Tidak boleh menumpuk piringan yang lebih besar diatas
Ide!(1) Untuk memindahkan n piringan dari menara A ke C: Pindahkan (n-1) subtree (piringan) dari menara A ke B Pindahkan 1 piringan (terbesar) dari menara A ke C Pindahkan (n-1) subtree (piringan) dari menara B ke C *Subtree = Semua piringan selain yang terbesar
Ide!(2)
Algoritma Jika n==1, pindahkan piringan dari A ke C Jika tidak: Pindahkan n-1 piringan dari A ke B menggunakan C sebagai tampungan Pindahkan n-1 piringan dari B ke C menggunakan A sebagai tampungan
Pascal
Ilustrasi Tower of Hanoi
Banyaknya Perpindahan T(n)=2n+1 adalah jumlah seluruh perpindahan piringan dari satu tiang ke tiang lainnya. Bila terdapat 64 tumpukan piringan dan perpindahan 1 piringan butuh waktu 1 detik, maka waktu yang dibutuhkan : detik 264−1 detik = 10.446.744.073.709.551.615 detik = kira-kira 600 milyar tahun
Mergesort Pola Divide and Conquer Divide: Memilah elemen – elemen dari rangkaian data menjadi dua bagian. Conquer: Setiap bagian dengan memanggil prosedur merge sort secara rekursif. Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan. Proses rekursi berhenti jika mencapai elemen dasar Bagian yang akan diurutkan menyisakan tepat satu elemen
Contoh:
Efisiensi Algoritma Mergesort O(N*logN) Jumlah action copy: 24 kali copy untuk mengurutkan 8 data 2log8 = 3 8 * 2log8 ≈ 24 Jumlah action membandingkan (komparasi) Selalu kurang dari jumlah action copy Jumlah action komparasi maksimum selalu 1 lebih sedikit dari jumlah data yang di bandingkan
Terima Kasih