<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Menara Hanoi on kenji.blog</title><link>http://kenji.blog/id/tags/menara-hanoi/</link><description>Recent content in Menara Hanoi on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>id</language><copyright>kenjinote</copyright><lastBuildDate>Thu, 17 Apr 2025 22:23:14 +0900</lastBuildDate><atom:link href="http://kenji.blog/id/tags/menara-hanoi/index.xml" rel="self" type="application/rss+xml"/><item><title>Menara Hanoi</title><link>http://kenji.blog/id/p/menara-hanoi/</link><pubDate>Thu, 17 Apr 2025 22:23:14 +0900</pubDate><guid>http://kenji.blog/id/p/menara-hanoi/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94/img.png" alt="Featured image of post Menara Hanoi" />&lt;h1 id="menara-hanoi">Menara Hanoi
&lt;/h1>&lt;p>Halo!&lt;/p>
&lt;p>Hari ini saya akan membahas tentang &amp;ldquo;Menara Hanoi&amp;rdquo;, lengkap dengan contoh program menggunakan Python.&lt;/p>
&lt;hr>
&lt;h2 id="apa-itu-menara-hanoi">Apa itu Menara Hanoi?
&lt;/h2>&lt;p>Menara Hanoi adalah teka-teki yang menggunakan tiga tiang dan beberapa cakram. Cakram-cakram ini memiliki ukuran yang berbeda-beda, dan pada awalnya ditumpuk di satu tiang dari yang terbesar hingga terkecil. Aturannya adalah sebagai berikut:&lt;/p>
&lt;ol>
&lt;li>Hanya satu cakram yang boleh dipindahkan dalam satu waktu.&lt;/li>
&lt;li>Cakram yang lebih besar tidak boleh diletakkan di atas cakram yang lebih kecil.&lt;/li>
&lt;/ol>
&lt;p>Teka-teki ini dianggap sebagai materi yang bagus untuk mempelajari pemikiran rekursif. Rekursi adalah metode pemecahan masalah dengan memecah suatu masalah menjadi masalah serupa yang lebih kecil. Dalam Menara Hanoi, untuk memindahkan n cakram, kita mengulangi operasi memindahkan n-1 cakram.&lt;/p>
&lt;hr>
&lt;h2 id="mari-kita-selesaikan-menara-hanoi-dengan-python">Mari Kita Selesaikan Menara Hanoi dengan Python
&lt;/h2>&lt;p>Berikut adalah contoh kode Python untuk memecahkan masalah Menara Hanoi.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Move disk 1 from &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> to &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Move disk &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> from &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> to &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Contoh: Memindahkan 3 cakram dari A ke C&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;A&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;C&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;B&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Dalam kode ini, fungsi &lt;code>hanoi&lt;/code> dipanggil secara rekursif, dan langkah-langkah untuk memindahkan cakram ditampilkan. Sebagai contoh, untuk 3 cakram, output yang dihasilkan adalah sebagai berikut:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Move disk 1 from A to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 2 from A to B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from C to B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 3 from A to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from B to A
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 2 from B to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from A to C
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Dengan menggunakan pendekatan rekursif seperti ini, bahkan masalah kompleks pun dapat diselesaikan secara sederhana.&lt;/p>
&lt;hr>
&lt;h2 id="berapa-lama-waktu-yang-dibutuhkan-untuk-memindahkan-64-cakram">Berapa Lama Waktu yang Dibutuhkan untuk Memindahkan 64 Cakram?
&lt;/h2>&lt;p>Jumlah pemindahan minimal dalam Menara Hanoi adalah 2^n - 1 kali. Artinya, untuk memindahkan 64 cakram, diperlukan 2^64 - 1 atau sekitar 1,84×10^19 kali perpindahan. Meskipun kita dapat memindahkannya 1 kali per detik, waktu yang dibutuhkan adalah sekitar 584 miliar tahun. Angka ini sekitar 42 kali lipat umur alam semesta (sekitar 13,7 miliar tahun).&lt;/p>
&lt;p>Dengan demikian, saat jumlah cakram bertambah, jumlah pergerakan yang dibutuhkan akan meningkat secara eksponensial. Oleh karena itu, memindahkan 64 cakram di dunia nyata adalah hal yang tidak realistis.&lt;/p>
&lt;hr>
&lt;h2 id="kesimpulan">Kesimpulan
&lt;/h2>&lt;p>Menara Hanoi adalah teka-teki yang sangat baik untuk melatih pemikiran rekursif. Dengan menggunakan Python, kita dapat dengan mudah mengimplementasikan solusinya. Namun, perlu diperhatikan bahwa jumlah pemindahan meningkat secara drastis saat jumlah cakram bertambah.&lt;/p>
&lt;p>Dengan memahami pendekatan rekursif dan mencoba menulis kodenya secara langsung, Anda dapat meningkatkan keterampilan pemrograman. Jangan ragu untuk mencoba memecahkan masalah Menara Hanoi!&lt;/p>
&lt;hr></description></item></channel></rss>