Permasalahan
Diketahui Balok yang ditumpuk di bejana A tidak teratur, bagaimana cara memindahkan balok balok tersebut ke Bejana C dengan susunan yang berurut dari kecil ke besar. Tentukan dengan metode-metode algoritma yang ada dengan menjelaskan komponen di bawah ini:
- Himpunan kandidat
- Himpunan solusi
- Fungsi seleksi
- Fungsi kelayakan
- Fungsi Objektif
|
Gambar 1. Permasalahan |
1. Himpunan Kandidat
Himpunan yang berisi elemen pembentuk solusi. Pada kasus ini himpunan kandidatnya adalah
|
Gambar 2. Himpunan Kandidat |
2. Himpunan Solusi
Himpunan yang terpilih sebagai solusi persoalan. pada kasus ini himpunan solusi sama dengan himpunan kandidat, jadi elemen-elemennya sama seperti balok-balok pada bejana C. yaitu
|
Gambar 3. Himpunan Solusi |
3. Fungsi Seleksi
Fungsi yang memilih kandidat yang paling mungkin untuk mencapai solusi optimal.
4. Fungsi Kelayakan
Fungsi yang memeriksa apakah suatu kandidat yang dipilih dapat memberikan solusi yang layak. Maksudnya yaitu apakah kandidat tersebut bersama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala yang ada. Pada Kasus ini fungsi kelayakannya salah satunya yaitu :
1. Bandingkan balok paling atas dari bejana A dengan balok paling atas di Bejana C,
|
Gambar 4. Membandingkan Balok di A dengan Balok di C |
2. Jika balok di bejana A lebih besar dari balok di C maka pindahkan Balok C (jika bejana C tidak kosong) ke bejana B dan pindahkan balok A paling atas itu ke Bejana C.
|
Gambar 5. Memindahkan Balok [1] dari A ke C |
3. Jika pada saat dibandingkan ternyata Balok dari bejana A lebih kecil dari balok paling atas dari bejana C, maka pindahkan balok A itu ke bejana B.
|
Gambar 6. Memindahkan Balok [1] dari C ke B dan Balok [4] dari A ke C |
|
Gambar 7. Memindahkan Balok [2] dari A ke B |
|
Gambar 8. Memindahkan Balok [3] dari A ke B |
|
Gambar 9. Memindahkan Balok [4] dari C ke B dan Balok [5] dari A ke C |
|
Gambar 10. Memindahkan Balok [5] dari C ke B dan Balok [6] dari A ke C |
|
Gambar 11. Memindahkan Balok [3] dari A ke B |
4. Lakukan sampai Bejana A kosong.
|
Gambar 12. Bejana A Kosong |
5. Jika sudah kosong, Bandingkan Balok paling atas di Bejana B dengan Balok paling atas di Bejana C.
6. Jika Balok di Bejana B lebih kecil dari pada Balok di C maka pindahkan balok di B ke bejana C.
|
Gambar 13. Memindahkan Balok [3] dari B ke C |
7. Jika Balok di Bejana B lebih besar dari pada balok di C, maka pindahkan Balok paling atas di bejana C ke bejana A.
|
Gambar 14. Memindahkan Balok [3] dari C ke A dan Balok [5] dari B ke C |
8. Jika Bejana A tidak kosong, maka Balok di bejana B dibandingkan dengan balok di A.
9. Jika Balok di B lebih besar maka bandingkan dengan balok di C jika lebih kecil maka pindahkan balok tersebut ke Bejana C.
|
Gambar 15. Memindahkan Balok [4] dari B ke C |
|
Gambar 16. Memindahkan Balok [3] dari B ke C |
10. Jika pada saat balok di B dibandingkan dengan balok di bejana A ternyata Balok di B lebih kecil daripada balok di A maka pindahkan Balok Di A ke bejana C.
|
Gambar 17. Memindahkan Balok [3] dari A ke C |
11. Jika Balok A kosong, maka lakukan cara ke 5 sampai balok di bejana B kosong.
|
Gambar 18. Memindahkan Balok [2] dari B ke C |
|
Gambar 19. Memindahkan Balok [1] dari B ke C |
|
Gambar 20. Hasil
|
5. Fungsi Objektif
Fungsi yang mengembalikan nilai boolean. True jika himpunan solusi yang sudah tebentuk merupakan solusi yang lengkap; False jika himpunan solusi belum lengkap.Pada kasus ini fungsi objektifnya :
|
Gambar 21. Fungsi Objektif |
Nice... mungkin perlu juga dilakukan pengetesan untuk beberapa kasus lainnya, baik yang berbeda susunan maupun jumlah stack-nya. Apakah algoritma tersebut sudah cukup generik atau tidak. Good job!!
BalasHapusTerma kasih pak. :D
BalasHapus