Jumat, 24 Februari 2017

MENARA HANOI


MENARA HANOI ALGORITMA

Program permainan ( game ) merupakan salah satu implementasi dari   bidang  ilmu  komputer.  Perkembangan  permainan  pada  masa  kini  sudah sangat pesat dan telah menjadi mode tersendiri di dunia karena mayoritas pengguna komputer menghabiskan sebagian besar waktu mereka di depan   komputer dalam program permainan. Salah satu algoritma yang  digunakan  untuk  mengembangkan  program  permainan  adalah  algoritma berbasis  pohon  ruang  pencarian  (searching  algorithm).  Salah  satu  game yang  menggunakan  algoritma  berbasis  pohon  ruang  pencarian  dalam   menyelesaikan permainannya yaitu  menara hanoi. 
Menara Hanoi merupakan salah satu diantara berbagai teka-teki dalam matematika. Teka-teki ini ditemukan Edouard Lucas, ahli matematika Perancis di tahun 1883.Teka-teki ini berdasarkan pada sebuah cerita legenda tentang candi Indian atau menara Benares di India yang memiliki tiga tiang dan salah satu tiangnya terdapat 64 tumpukan cakram emas. Para pendeta mendapat tugas untuk memindahkan cakram emas itu ke tiang yang lain sesuai dengan suatu aturan. Tidak jelas apakah ini benar-benar legenda, atau inspirasi dari Lucas sendiri. Konon, Dewa Brahma menciptakan tiga tiang pada candi tersebut. Pada salah satu tiang terdapat tumpukan cakram emas sebanyak 64 keping, dengan urutan keping yang terbesar terletak di bawah, makin ke atas makin kecil. Selanjutnya Dewa Brahma memerintahkan para pendeta untuk memindahkan keping-keping emas itu dengan aturan : setiap perpindahan hanya boleh memindah 1 cakram dan cakram yang besar tidak boleh diletakkan di atas cakram yang lebih kecil. Dalam legenda itu dikatakan bahwa dunia akan berakhir jika para pendeta tersebut selesai memindahkan ke 64 cakram.
Dilihat  dari  karakteristik  persoalan  slide  puzzle ,  puzzle   ini  membentuk ruang  solusi  yang  diorganisasikan  ke  dalam  struktur  pohon  dinamis.   Struktur pohon dinamis sendiri dibangun dengan 2 metode traversal yaitu   Breadth  First  Search   (BFS)  dan  Depth  First  Search   (DFS)  [MUN04].   Untuk itu penulis menerapkan algoritma Depth   First Search dalam menyelesaikan permainan  menara hanoi .

Hanoi sendiri adalah sebuah permainan dimana sejumlah piringan dipindahkan dari tonggak satu ke tonggak lainnya dan dapat menggunakan tonggak bantuan .




 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 


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                                                       catatan :
N dipindahkan dari A ke C secara langsung              N = banyaknya piringan
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



Dan inilah adalah program dari code blok :
#include <iostream>
using namespace std;
void MenaraHanoi(int N, char asal, char bantu, char tujuan);
int main()
{
    int p;
    cout<<"------- Selamat datang di program------"<<endl;
    cout<< "---------PROGRAM MENARA HANOI--------\n";
    cout<< "Masukkan Banyaknya piringan: ";
    cin >> p;
    cout<< endl;
    MenaraHanoi(p,'A','B','C');
    cout<<endl;
    cout<<"create by: Muhammad Nur Fauzi\n";
    return 0;
}
void MenaraHanoi(int z, char asal, char bantu, char tujuan)
{
    if(z == 1)
        cout<<"Piringan 1 dari "<<asal<< " ke " << tujuan <<endl;
    else
    {
        MenaraHanoi(z-1,asal,tujuan, bantu);
        cout<<"Piringan " << z <<" dari " << asal << " ke " << tujuan<<endl;
        MenaraHanoi(z-1, bantu, asal, tujuan);
    }
}

Dan di bawah ini adalah hasil dari pemograman di atas,


1 komentar:

  1. I would highly recommend Mr Benjamin services to any person in need of financial help and they will keep you on top of high directories for any further needs. Once again I commend yourself and your staff for extraordinary service and customer service, as this is a great asset to your company and a pleasant experience to customers such as myself. Wishing you all the best for the future.Mr, Benjamin is the best way to get an easy loan,here is their email..  247officedept@gmail.com    Thank You for helping me with loan once again in my sincerely heart I'm forever grateful.

    BalasHapus