Back to IF2211 Strategi Algoritma
Topic
Questions/Cues
- Persoalan Integer Knapsack
- Knapsack: Karakteristik & Rekurens
- Knapsack: Perhitungan Tabel Tahap 1
- Knapsack: Perhitungan Tabel Tahap 2
- Knapsack: Perhitungan Tabel Tahap 3
- Knapsack: Rekonstruksi Solusi
- Persoalan Capital Budgeting
- CB: Karakteristik & Rekurens
- CB: Perhitungan Tabel Tahap 1
- CB: Perhitungan Tabel Tahap 2
- CB: Perhitungan Tabel Tahap 3
- CB: Rekonstruksi Solusi Optimal
Persoalan 2: Integer Knapsack
- Deskripsi Persoalan:
- Diberikan sebuah tas (knapsack) dengan kapasitas M. Terdapat n buah objek, di mana setiap objek
imemiliki bobot dan keuntungan .- Tujuan: Memilih objek-objek untuk dimasukkan ke dalam tas sehingga total keuntungan maksimal, dengan syarat total bobot tidak melebihi kapasitas M.
- Langkah 1 & 2: Karakteristik dan Hubungan Rekursif
- Tahap (k): Proses mempertimbangkan objek ke-
k.- Status (y): Kapasitas knapsack yang tersisa, dengan
yberkisar dari 0 hingga M.- Keputusan (): Apakah objek ke-
kdimasukkan () atau tidak ().- Fungsi Tujuan: Misalkan adalah keuntungan maksimum yang bisa didapat dari
kobjek pertama dengan kapasitasy.- Hubungan Rekursif: Untuk setiap objek
kdan kapasitasy, kita punya dua pilihan:
- Tidak Masukkan Objek
k: Keuntungan sama dengan tahap sebelumnya: .- Masukkan Objek
k: (Hanya jika ). Keuntungan adalah ditambah keuntungan dari kapasitas sisa pada tahap sebelumnya: .- Formula:
- Basis: untuk semua
y(keuntungan nol jika tidak ada objek).- Langkah 3: Hitung Nilai Solusi Optimal (Contoh n=3, M=5)
- O1: (), O2: (), O3: ()
Tahap 1 (Objek 1: w=2, p=65):
y Keputusan () 0 0 -∞ 0 Tidak ambil 1 0 -∞ 0 Tidak ambil 2 0 65 65 Ambil 3 0 65 65 Ambil 4 0 65 65 Ambil 5 0 65 65 Ambil Tahap 2 (Objek 2: w=3, p=80):
y Keputusan () 0 0 -∞ 0 Tidak ambil 1 0 -∞ 0 Tidak ambil 2 65 -∞ 65 Tidak ambil 3 65 80 Ambil 4 65 80 Ambil 5 65 145 Ambil Tahap 3 (Objek 3: w=1, p=30):
y Keputusan () 0 0 -∞ 0 Tidak ambil 1 0 30 Ambil 2 65 65 Tidak ambil 3 80 95 Ambil 4 80 110 Ambil 5 145 145 Tidak ambil
- Langkah 4: Rekonstruksi Solusi Optimal
- Keuntungan maksimum untuk kapasitas M=5 adalah .
- Tahap 3 (y=5): Nilai 145 berasal dari , bukan dari . Artinya, Objek 3 tidak diambil (). Kita sekarang melihat status
y=5pada tahap sebelumnya.- Tahap 2 (y=5): Nilai 145 berasal dari , bukan dari . Artinya, Objek 2 diambil (). Kapasitas sisa yang perlu diperiksa di tahap sebelumnya adalah
y = 5 - w_2 = 5 - 3 = 2.- Tahap 1 (y=2): Nilai 65 berasal dari . Artinya, Objek 1 diambil ().
- Solusi Akhir: Objek yang diambil adalah {Objek 1, Objek 2}. Vektor solusi X = (1, 1, 0).
- Verifikasi: Total bobot = (sesuai M). Total keuntungan = .
Persoalan 3: Penganggaran Modal (Capital Budgeting)
- Deskripsi Persoalan:
- Sebuah perusahaan memiliki anggaran total M untuk diinvestasikan pada n buah pabrik. Setiap pabrik mengajukan beberapa proposal proyek, di mana setiap proposal memiliki biaya dan menghasilkan keuntungan .
- Tujuan: Memilih satu proposal dari setiap pabrik untuk memaksimalkan total keuntungan tanpa melebihi total anggaran M.
- Langkah 1 & 2: Karakteristik dan Hubungan Rekursif
- Tahap (k): Proses alokasi dana untuk Pabrik ke-
k.- Status (): Jumlah modal kumulatif yang telah dialokasikan dari tahap 1 hingga tahap
k.- Keputusan (): Proposal proyek yang dipilih untuk Pabrik ke-
k.- Hubungan Rekursif: Misalkan adalah keuntungan maksimum dari
kpabrik pertama dengan total alokasi modal sebesar .- Logika: Keuntungan maksimum di tahap
kdengan modal adalah hasil dari memilih proposal terbaik (yang biayanya tidak melebihi ) ditambah keuntungan maksimum yang bisa didapat dari sisa modal () untukk-1pabrik sebelumnya.- Langkah 3: Hitung Nilai Solusi Optimal (Contoh M=5, n=3)
Tahap 1 (Pabrik 1):
(Keuntungan Maks) (Proposal yg Dipilih) 0 0 1 1 5 2 2 6 3 3 6 3 4 6 3 5 6 3 Tahap 2 (Pabrik 2):
0 0 1 1 5 1 2 8 2 3 13 2 4 14 2 atau 3 5 17 4 Tahap 3 (Pabrik 3):
5 17 1 atau 2
- Langkah 4: Rekonstruksi Tiga Solusi Optimal
- Keuntungan maksimum total adalah milyar. Ini bisa dicapai melalui dua pilihan untuk Pabrik 3.
- Kasus 1: Pabrik 3 memilih (Biaya=0, Untung=0)
- Modal untuk tahap sebelumnya: .
- Di tabel Tahap 2, dicapai dengan (Biaya=4).
- Modal untuk tahap awal: .
- Di tabel Tahap 1, dicapai dengan (Biaya=1).
- Solusi #1: Proyek {2, 4, 1}. Biaya: 1+4+0=5. Keuntungan: 5+12+0=17.
- Kasus 2: Pabrik 3 memilih (Biaya=1, Untung=3)
- Modal untuk tahap sebelumnya: .
- Di tabel Tahap 2, dicapai dengan (Biaya=2) atau (Biaya=3).
- Sub-kasus 2a: Pabrik 2 memilih
- Modal untuk tahap awal: .
- Di tabel Tahap 1, dicapai dengan (Biaya=2).
- Solusi #2: Proyek {3, 2, 2}. Biaya: 2+2+1=5. Keuntungan: 6+8+3=17.
- Sub-kasus 2b: Pabrik 2 memilih
- Modal untuk tahap awal: .
- Di tabel Tahap 1, dicapai dengan (Biaya=1).
- Solusi #3: Proyek {2, 3, 2}. Biaya: 1+3+1=5. Keuntungan: 5+9+3=17.
Dynamic programming sangat efektif untuk masalah alokasi sumber daya terbatas. Baik pada persoalan Knapsack maupun Capital Budgeting, polanya serupa: mendefinisikan state sebagai jumlah sumber daya yang tersedia (kapasitas atau modal), lalu pada setiap tahap, membuat keputusan optimal (ambil/tidak, atau pilih proyek mana) dengan mempertimbangkan keuntungan saat ini dan keuntungan optimal yang bisa didapat dari sisa sumber daya. Metode tabulasi memastikan semua kombinasi yang relevan dievaluasi untuk menjamin solusi optimal global.
Additional Information (Optional)
Aspek Teknis Lanjutan:**
- Generalisasi Masalah Alokasi: Knapsack dan Capital Budgeting adalah contoh dari kelas masalah alokasi sumber daya. Pola pikir DP ini dapat diterapkan pada banyak skenario lain, seperti alokasi waktu untuk belajar berbagai mata pelajaran demi nilai maksimal, atau alokasi server untuk berbagai layanan demi latensi minimal. Kuncinya adalah adanya sumber daya yang terbatas dan “item” atau “tahapan” yang memberikan “nilai” dengan “biaya” tertentu.
- Knapsack: 0/1 vs. Unbounded: - 0/1 Knapsack (yang dibahas): Setiap objek hanya ada satu, bisa diambil atau tidak. - Unbounded Knapsack: Anda memiliki pasokan tak terbatas dari setiap jenis objek. Relasi rekursifnya sedikit berbeda dan lebih sederhana: . Perhatikan bahwa
fdi sisi kanan adalahf, bukanf_{k-1}, karena pada kapasitas yang sama kita bisa mempertimbangkan semua objek lagi.- Kompleksitas Pseudo-Polinomial: Kompleksitas DP untuk Knapsack adalah O(n * M). Ini disebut pseudo-polinomial karena efisiensinya tidak hanya bergantung pada jumlah item (
n), tetapi juga pada nilai numerik dari kapasitas (M). JikaMsangat besar (misal, ), algoritma ini menjadi tidak praktis dan kembali bersifat eksponensial.- Hubungan dengan Coin Change Problem: Masalah “Coin Change” (menemukan jumlah koin minimum untuk membentuk jumlah uang tertentu) adalah masalah DP klasik yang sangat mirip dengan Unbounded Knapsack. State-nya adalah jumlah uang yang harus dibentuk, dan keputusannya adalah koin mana yang akan digunakan selanjutnya.
Eksplorasi Mandiri:
- Modifikasi Soal: Coba selesaikan kembali soal Knapsack di atas, tetapi asumsikan ini adalah Unbounded Knapsack (Anda boleh mengambil Objek 1, 2, atau 3 berkali-kali). Apakah solusi optimalnya berubah?
- Implementasi Kode: Coba implementasikan solusi DP untuk 0/1 Knapsack dalam bentuk kode. Anda akan melihat bahwa membuat tabel 2D (
nxM) dan mengisinya secara iteratif (bottom-up) adalah pendekatan yang paling lugas.- Latihan Manual: Buat soal Capital Budgeting Anda sendiri dengan 2 pabrik dan total anggaran 4. Lakukan perhitungan tabel secara manual untuk melatih pemahaman Anda tentang alur kerja dan proses rekonstruksi.