PENYELESAIAN MENARA HANOI
Presented by Edinburgh Group
41523010140
MEET OUR GROUP
Achmad Ardani Prasha
Clavino Ourizqi Rachmadi
41523010005
Dikisahkan bahwa di kota Hanoi, Vietnam, terdapat tiga buah tiang tegak setinggi 5 meter dan 64 buah piringan (disk) dari berbagai ukuran. Tiap piringan mempunyai lubang di tengahnya yang memungkinkannya untuk dimasukkan ke dalam tiang. Pada mulanya piringan tersebut tersusun pada sebuah tiang sedemikian rupa sehingga piringan yang di bawah mempunyai ukuran lebih besar daripada ukuran piringan di atasnya. Pendeta Budha memberi pertanyaan kepada murid-muridnyanya: bagaimana memindahkan seluruh piringan tersebut ke sebuah tiang yang lain; setiap kali hanya satu piringan yang boleh dipindahkan, tetapi tidak boleh ada piringan besar di atas piringan kecil. Tiang yang satu lagi dapat dipakai sebagai tempat peralihan dengan tetap memegang aturan yang telah disebutkan. Menurut legenda pendeta Budha, bila pemindahan seluruh piringan itu berhasil dilakukan, maka dunia akan kiamat!
Soal
Definisi Fungsi:
H(n) adalah jumlah langkah minimum yang diperlukan untuk memindahkan 𝑛n cakram dari menara asal ke menara tujuan dengan menggunakan satu menara bantuan.
Secara umum, untuk n piringan, penyelesaian dengan cara berpikir rekursif adalah sebagai Berikut:
Kita harus memindahkan piringan paling bawah terlebih dahulu ke tiang B sebagai alas bagi piringan yang lain. Untuk mencapai maksud demikian, berpikirlah secara rekursif: pindahkan n – 1 piringan teratas dari A ke C, lalu pindahkan piringan paling bawah dari A ke B, lalu pindahkan n – 1 piringan dari C ke B.
pindahkan n – 1 piringan dari A ke C 1.
pindahkan 1 piringan terbawah dari A ke B 2.
pindahkan n – 1 piringan dari C ke B 3.
Fungsi Rekursif Menara
Hanoi
Selanjutnya dengan tetap berpikir rekursif-pekerjaan memindahkan n – 1 piringan dari sebuah tiang ke tiang lain dapat dibayangkan sebagai memindahkan n – 2 piringan antara kedua tiang tersebut, lalu memindahkan piringan terbawah dari sebuah tiang ke tiang lain, begitu seterusnya.
Misalkan Hn menyatakan jumlah perpindahan piringan yang dibutuhkan untuk memecahkan teka- teki Menara Hanoi.
Penyelesaian Menara Hanoi
dengan Fungsi Rekursif
Permainan ini terdiri dari tiga tiang dan sejumlah cakram / piringan dengan ukuran berbeda-beda yang bisa dimasukkan ke tiang mana saja.
Kondisi awal piringan yang tertumpuk rapi berurutan berdasarkan ukuranya dalam salah satu tiang, piringan terkecil diletakkan teratas, sehingga membentuk kerucut.
Tujuannya memindahkan seluruh tumpukan ke tiang yang lain, dengan
aturan: Tidak boleh meletakkan piringan
di atas piringan lain yang lebih kecil
Setiap perpindahan berupa pengambilan piringan teratas dari satu tiang dan memasukkanya ke tiang lain, di atas piringan lain yang mungkin sudah ada di tiang tersebut
Hanya satu piringan yang boleh dipindahkan dalam satu waktu
Permodelan dengan Relasi Kurens: Menara Hanoi
Proses Secara Umum
Pindahkan n-1 piringan dari A ke C
Pindahkan piringan ke-n dari A ke B
Pindahkan piringan ke-n dari A ke B
Pindahkan n-1 piringan dari C ke B
Penyelesaian Menara Hanoi
Pindahkan n-1 piringan dari A ke C
Pindahkan piringan ke-n dari A ke B
Pindahkan piringan ke-n dari A ke B
Pindahkan n-1 piringan dari C ke B
Jumlah perpindahan yang terjadi :
Penyelesaian Menara Hanoi
Hn-1 kali
1 kali
Hn-1 kali
Langkah Penyelesaian Menara Hanoi dengan Relasi Kurens
Penyelesaian Relasi Kurens
Basis: H1 = 1
Rekurens: Hn = 2^n -1
Langkah Penyelesaian Menara Hanoi
dengan Relasi Kurens dengan Asumsi 10 Menit dalam 1 Kali Pemindahan
Berdasarkan hasil perhitungan pada slide sebelumnya, jika satu kali pemindahan piringan membutuhkan waktu 1 detik, maka waktu yang diperlukan adalah 18.446.744.073.709.551.615 detik atau setara dengan 584.942.417.355 tahun atau sekitar 584 milyar tahun!
Untuk mengetahui waktu yang diperlukan jika satu kali pemindahan membutuhkan 10 menit kita harus terlebih dahulu mengubah 10 menit menjadi detik yaitu sebesar 600 detik
Kita dapat menghitung waktu total jika menggunakan asumsi 10 menit yaitu
18.446.744.073.709.551.615 x 600 detik = 11.068.046.444.225.730.969.000 detik atau setara 350.725.227.654.375,8 tahun (350, 73 triliun tahun), dapat dibaca tiga ratus lima puluh triliun, tujuh ratus dua puluh lima miliar, dua ratus dua puluh tujuh juta, enam ratus lima puluh empat ribu, tiga ratus tujuh puluh lima koma delapan tahun!
Kapan Kiamat akan terjadi?
Legenda yang mengklaim bahwa kiamat akan tiba jika seseorang berhasil memindahkan 64 piringan di Menara Hanoi mungkin tidak sepenuhnya tanpa dasar. Ini karena waktu yang dibutuhkan, yaitu 584 miliar tahun atau 350,73 triliun tahun, jika dengan asumsi 10 menit dalam 1 kali pemindahan piringan, merupakan periode yang sangat panjang, selama itu dunia akan terus menua dan pada akhirnya, bisa saja mengalami kehancuran.
Wallahu’alam
Pembuktian dengan Induksi Matematika
Basis Induksi:
Untuk membuktikan Hn benar untuk n >= 2, kita perlu membuktikan H2 benar. Jelas bahwa H2 = 2^2 - 1 = 3 benar, karena diperlukan 3 langkah untuk menyelesaikan menara Hanoi dengan 2 piringan
Langkah Induksi:
Asumsikan Hk benar untuk k >= 2, maka banyak langkah minimum untuk menyelesaikan persoalan menara Hanoi dengan k piringan adalah 2^k - 1 Tambahkan 1 piringan sehingga banyak langkah untuk menyelesaikan menara Hanoi dengan k + 1 piringan adalah Hk+1 = 2Hk + 1
Subtitusi Hk = 2^k - 1 dan lakukan manipulasi aljabar
Berdasarkan induksi matematika, solusi Hn = 2^n - 1 untuk n >= 2 bernilai benar
Program Penyelesaian Menara Hanoi (Python)
Kode tersebut merupakan implementasi dari algoritma rekursif untuk menyelesaikan permasalahan Menara Hanoi.
Fungsi hanoi(piringan, asal, bantuan, tujuan): Ini adalah fungsi utama yang digunakan untuk memindahkan piringan- piringan dari satu tiang ke tiang lainnya. Fungsi ini memiliki empat parameter:
piringan: Jumlah piringan yang akan dipindahkan.
1.
asal: Nama tiang asal.
2.
bantuan: Nama tiang bantuan.
3.
tujuan: Nama tiang tujuan.
4.
Setelah semua pemanggilan rekursif pada kode tersebut, dicetaklah langkah pemindahan piringan yang lebih besar (piringan) dari tiang asal ke tiang tujuan.
Program Penyelesaian Menara Hanoi (Python)
Fungsi ini beroperasi secara rekursif dan memindahkan piringan-piringan sesuai dengan aturan permainan Menara Hanoi.
Pernyataan if piringan == 1: Ini adalah kondisi dasar yang menandakan bahwa hanya ada satu piringan yang harus dipindahkan. Ketika kondisi ini terpenuhi, fungsi langsung
mencetak langkah pemindahan tersebut dan mengakhiri rekursi dengan pernyataan return.
Program Penyelesaian Menara Hanoi (Python)
Pada baris kode ini, terdapat dua pemanggilan rekursif:
Pemanggilan pertama: hanoi(piringan - 1, asal, tujuan, bantuan). Ini bertujuan untuk
memindahkan piringan - 1 piringan dari tiang asal ke tiang bantuan, dengan menggunakan tiang tujuan sebagai tiang bantuan.
Pemanggilan kedua: hanoi(piringan - 1, bantuan, asal, tujuan). Ini bertujuan untuk memindahkan piringan - 1 piringan dari tiang bantuan ke tiang tujuan, dengan
menggunakan tiang asal sebagai tiang bantuan.