SI
sionpardosi/Knapsack-Algoritma-Backtracking
App Knapsack dengan Algoritma Backtracking
App Knapsack Problem with Backtracking
Tools:
Diberikan sejumlah item dengan berat dan nilai tertentu, serta sebuah ransel dengan kapasitas tertentu. Tugas Anda adalah memilih item-item untuk dimasukkan ke dalam ransel sehingga nilai total item-item yang dipilih maksimal, tanpa melebihi kapasitas ransel.
Batasan Tambahan:
- Setiap item memiliki jumlah maksimal yang dapat dipilih.
- Algoritma backtracking harus digunakan untuk menyelesaikan masalah ini. Tidak boleh menggunakan greedy algorithm.
- Setiap kombinasi item yang memungkinkan harus dieksplorasi menggunakan backtracking.
Input:
Sebuah daftar item, masing-masing item memiliki:
- Berat (๐ค๐): Berat item ke-i.
- Nilai (๐ฃ๐): Nilai item ke-i.
- Jumlah maksimal (๐๐): Jumlah maksimal item ke-i yang bisa dipilih.
- Kapasitas maksimal ransel (W).
Soal:
Diberikan daftar 8 item berikut:
Kapasitas ransel (W): 20 kg.
Tugas:
- Tentukan kombinasi item yang bisa dipilih sehingga nilai total item maksimal tanpa melebihi kapasitas ransel 20 kg.
- Tentukan berapa unit dari masing-masing item yang dipilih untuk mencapai nilai maksimal tersebut.
Output:
- Kombinasi item dan jumlah yang dipilih.
- Nilai maksimum yang bisa didapatkan.
Instruksi Penyelesaian Algoritma Backtracking:
- Eksplorasi semua kemungkinan kombinasi item. Untuk setiap item, pilih dari 0 hingga jumlah maksimal yang diperbolehkan.
- Setiap kali memilih suatu jumlah untuk item, periksa apakah kapasitas ransel melebihi batas. Jika melebihi, lakukan backtrack.
- Jika kapasitas tidak terlampaui, lanjutkan ke item berikutnya.
- Simpan solusi terbaik (nilai tertinggi) yang ditemukan selama proses eksplorasi.
Langkah-langkah:
- Mulai dengan ransel kosong dan kapasitas 20 kg.
- Untuk setiap item, pilih antara 0 hingga jumlah maksimal item tersebut, cek apakah masih memungkinkan berdasarkan kapasitas ransel.
- Jika memungkinkan, tambahkan nilai item ke dalam ransel, dan periksa apakah nilai total lebih baik dari solusi sebelumnya.
- Jika kapasitas ransel terlampaui, kembalikan (backtrack) dan coba opsi lain.
- Setelah semua kombinasi dicoba, kembalikan kombinasi item yang memberikan nilai maksimal.