Tugas 3 Algoritma – Kasus Knapsack dengan Algoritma Greedy

 

Cerita Kasus

Bayangkan saya memiliki sebuah tas dengan kapasitas 10 kg. Ada 5 barang di depan saya, masing-masing dengan berat dan nilai yang berbeda. Saya ingin membawa barang dengan total nilai terbesar, tetapi beratnya tidak boleh lebih dari kapasitas tas.

Data barang yang tersedia adalah:

  • Barang 1: (6 kg, 30)

  • Barang 2: (3 kg, 14)

  • Barang 3: (4 kg, 16)

  • Barang 4: (2 kg, 9)

  • Barang 5: (5 kg, 20)


Kode Program 

import java.util.*;

class Item {
    int weight;
    int value;
    double ratio;

    Item(int w, int v) {
        weight = w;
        value = v;
        ratio = (double) v / w;
    }
}

public class KnapsackGreedy {
    public static void main(String[] args) {
        int capacity = 10;

        Item[] items = {
            new Item(6, 30), 
            new Item(3, 14), 
            new Item(4, 16), 
            new Item(2, 9), 
            new Item(5, 20)  
        };

        Arrays.sort(items, (a, b) -> Double.compare(b.ratio, a.ratio));

        int totalWeight = 0;
        int totalValue = 0;
        List<Item> chosen = new ArrayList<>();

        for (Item item : items) {
            if (totalWeight + item.weight <= capacity) {
                chosen.add(item);
                totalWeight += item.weight;
                totalValue += item.value;
            }
        }

        System.out.println("Barang yang dipilih (berat, nilai):");
        for (Item item : chosen) {
            System.out.println("- (" + item.weight + " kg, " + item.value + ")");
        }

        System.out.println("Total berat = " + totalWeight + " kg");
        System.out.println("Total nilai = " + totalValue);
    }
}



Komentar

Postingan populer dari blog ini

Kasus Pemilihan Buku dengan Algoritma Knapsack

Penerapan Algoritma DFS dalam Kasus Knapsack (Pemilihan Barang ke Tas)

TUGAS 1 INTERAKSI MANUSIA KOMPUTER