Algoritma Menara Hanoi

Waktu kuliah Struktur Data sempat enggak ngerti sama menara hanoi. Taunya cuman memindahkan piringan-piringan dari tonggak A ke tonggak C lewat B dengan cara piringan – piringan dari A di pindahin semuanya ke B baru nanti ke C , jadinya yang piringan besar dibawah dan yang kecil diatas :mrgreen:

Well, itu ngawur karena malas membaca soalnya :D . Pas kuliah Analog ketemu lagi sama menara hanoi. Yo wis… saya baca-baca n’ Alhamdulillah ngerti dikit :) .

Jadi apa sih Menara Hanoi itu ?

Sebuah permainan dimana sejumlah piringan dipindahkan dari tonggak satu ke tonggak lainnya dan dapat menggunakan tonggak bantuan .

towers-4disks

Caranya semua piringan di tonggak A akan dipindahkan ke tonggak C secara satu persatu dan piringan yang besar tidak boleh diletakkan di atas piringan yang kecil.

Untuk lebih jelasnya soal prosesnya bisa lihat gambar di bawah ini ;)

 

hanoi

Untuk menyelesaikan puzzle di atas dalam pemrograman, kita dapat menggunakan teknik rekursif. Rekursif adalah fungsi atau prosedure yang dapat memanggil dirinya sendiri.

Jadi algoritmanya adalah …

Kalau N = 1 maka

N dipindahkan dari A ke C secara langsung

Tapi kalau N > 1 maka

pindahkan N-1 dari A ke B

pindahkan N dari A ke C

pindahkan N-1 dari B ke C

catatan :

N = banyaknya piringan

 

Sekarang kita coba coding dengan c++ ;)


#include<iostream>

using namespace std;

void MenaraHanoi(int N, char asal, char bantu, char tujuan);

int main()

{

    int piringan;

    cout<< "\nPROGRAM MENARA HANOI\n";

    cout<< "--------------------\n\n";

    cout<< "Banyaknya piringan: ";

    cin >> piringan;

    cout<< endl;

    MenaraHanoi(piringan,'A','B','C');

    return 0;

}

void MenaraHanoi(int N, char asal, char bantu, char tujuan)

{

    if(N == 1)

        cout<<"Piringan 1 dari "<<asal<< " ke " << tujuan <<endl;

    else

        {

            MenaraHanoi(N-1,asal,tujuan, bantu);

            cout<<"Piringan " << N <<" dari " << asal << " ke " << tujuan<<endl;

            MenaraHanoi(N-1, bantu, asal, tujuan);

        }

}

outputnya ;)

compile

17 Tanggapan ke “Algoritma Menara Hanoi”


  1. 1 ana Desember 1, 2009 pukul 11:51 pm

    mas/mbaa..
    thanks bwt infonya..
    saya punya tugas ni ..
    tapi tugasnya nggak sampe pemograman gni ..
    intinya rumus dari menara hanoi itu apa ya?!
    hehe ^^,

    saya haturkan nuhun sebelumnya..
    tlong di jawab ya..

  2. 2 Liroesdy Desember 3, 2009 pukul 6:46 am

    salam kenal mbak ana :)

    intinya rumus dari menara hanoi itu apa ya?!

    Bukan rumus melainkan algoritma :) . Kalau algoritma yang aku tulis diatas itu intinya sebuah prosedur untuk memindahkan piring-piringan itu.

    kalau algoritmanya secara pseucode :

    prosedure menaraHanoi(n, Asal, bantu, tujuan):
    if n == 1
    cetak “pindahkan piring dari A ke C”
    else
    menaraHanoi(n – 1, Asal, Bantu, tujuan)
    cetak “pindahkan piring dari A ke C”
    menaraHanoi(n – 1, bantu ,asal , tujuan)

    :)

    • 3 ana Desember 3, 2009 pukul 11:31 am

      salam kenal juga mbaa..
      thanks a lot mbaa Lia..
      it helps me so..
      sebenrnya aku lebin suka diterangin live,,
      tapi apa daya..
      hehe..
      dunia maya sudah cukup sangat membantu..
      sekali lagi salam kenal dan terimakasih ya..
      ^^.

      ku akan banyak bertanya sepertinya..

      mohon bantuannya ya,,

      thanks b4..
      nice 2 know you.
      n how glad to fin this blog..

      saya termasuk orang yang lebih suka di kasih tau..daripada baca..
      hehe
      jadi blog ini bakal jadi membantu saya sangat ni .
      dan mbaa lia akan punya banyak pertanyaan dari saya,, moga mbaa nggak keberatan untuk menjawabnya ya..
      hhehe..

  3. 4 Ova Desember 27, 2009 pukul 9:31 am

    permisi…mau nanya nih…
    kalo code yang di baris 41 dan 45 itu maksudnya apa yahh?
    trus itu disebut apa, method? atau mungkin ada istilah lainnya…terima kasih atas bantuannya…

  4. 5 Liroesdy Desember 30, 2009 pukul 10:02 am

    Kalau yang itu line 41 & 45, merupakan bagian rekursif dari prosedur MenaraHanoi-nya.Dimana prosedur MenaraHanoi memanggil dirinya sendiri (rekursif) :)

    • 6 rafa April 9, 2010 pukul 3:16 pm

      mbak mau tanya namespace pada line 3 salah terus waktu di run???
      gmn mbak soludinya??
      maksih

      • 7 Liroesdy April 13, 2010 pukul 11:08 am

        oh mungkin karena beda editor c++ nya :) Bisa jadi mas pakai editor turbo c++ (yg masih lama) jadi kalau ditambah “using namespace std; ” enggak bisa :)

        Solusinya, tinggal diilangin aja statementnya. Jadi enggak usah pake “using namespace std;” . Mudah-mudahan bisa jalan (pengalaman soalnya ;) )

  5. 8 Fani Juni 7, 2010 pukul 2:37 pm

    makasih ya mba bwt infonya..
    kebetulan sya lagi disuruh nyari algoritma baru dan d suruh ngetrace.. :D

  6. 10 Bani Adam Setiadi Desember 4, 2010 pukul 7:13 am

    MAKASIH ATAS PENJELASANNYA. Saya sendiri masih bingung.. tapi INsya ALLAH ntar aku coba otak-atik lagi deh… dengan adanya artikel di atas, aku jadi ada bayangan jalannya menara hanoi itu..(karena ada gambar ilustrasinya) makasih.. Salam Kenal..

  7. 11 anoy Desember 20, 2010 pukul 8:06 am

    mau tanya dong.
    boleh minta diagram alirnya untuk 4 kepingan?
    ga paham diagram alir =.=”

  8. 12 iwan Februari 21, 2011 pukul 11:35 am

    MW tnya ney… itu algoritma yang digunakan ap??? algoritma backtracking kah?? atau greddy….

  9. 13 Ari apriyadi April 25, 2011 pukul 11:06 am

    hhhmmmm makasih bgt nie dgn ad nya info diDunia maya ini q bisa ngerjain tugas,…..thanks yach

  10. 14 bhamz Mei 3, 2011 pukul 1:53 pm

    akh.. lieur

  11. 15 ade September 30, 2011 pukul 2:44 am

    gmana jika menara hanoi prigan dari yang besar dibawah 123, dtuangkan ke tonggak yg B semua, terus dituangkan ke tonggak c, apakah benar?

  12. 16 mutiara insani Oktober 5, 2011 pukul 9:43 am

    mo nnya nie,, algoritma bwt menara hanoi pndeskripsian nya sperti ini ya,, tuk flowchart nya gimna ya??? mhon bantuan. . .

  13. 17 zanuar Desember 23, 2011 pukul 3:09 pm

    makasih infonya :)


Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s




Me (^^)

About

Blog ini adalah catatan kuliah ku, tidak hanya mengenai materi kuliah tetapi juga tentang kegiatan, pengalaman aku selama kuliah :) .


=-=-=-=-=
image header = "Byousoku 5 cm " with edited :)

Liroesdy on Net (=^_^=)

Blog Stats

  • 15,443 hits
Click to view my 

Personality Profile page

My Personal Blog

Liroesdy Blog

Liroesdy Lab

Liroesdy Lab

Ikuti

Get every new post delivered to your Inbox.