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

About these ads

26 Responses to “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 :)

  14. 18 dante September 25, 2012 pukul 2:15 pm

    gan untk line 3 codingnya di borland c++ apa ya ??

  15. 19 bayu rachmad Oktober 21, 2012 pukul 12:16 pm

    assalamualaikum kalo cara penyelesaiaan buat menara yang 5 piringan
    gmana???? heheh

  16. 20 WHERYN Oktober 26, 2012 pukul 5:40 am

    TOLONG DI JELASIN DENGAN NARASI DONG,,,,,,,,,

  17. 21 gresita Oktober 26, 2012 pukul 5:43 am

    uuuuuuuuuuu bacot????????????????

  18. 22 UNIversitas KOMedi Oktober 26, 2012 pukul 8:02 am

    untuk codingan yang di atas itu cuma untuk menampilkan output jalan pindahnya menara.

    untuk yang mau pake rumus ato rule coba toonggaknya di array ato pake linked list…

  19. 23 lystha Maret 26, 2013 pukul 5:27 am

    logikanya itu gmana ea?

  20. 26 mikhael Oktober 11, 2013 pukul 6:00 am

    maaf mba ini koq waktu dicoba run langsung ilang ya?
    dan tadi saya coba tambah getch(); untuk menghentikan data tapi malah failed,,
    itu kenapa ya?


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

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

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / 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

  • 37,555 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.

%d bloggers like this: