Knapsak
- Dapatkan link
- X
- Aplikasi Lainnya
Berikut saya tampilkan hasil praktikum pada hari selasa kemarin. O ya, ini adalah kodingan knapsak untuk pemrogaman java.
// if bi + B[i-1,w-wi] > B[i-1,w]
// B[i,w] = bi + B[i-1,w-wi]
// else
// B[i,w] = B[i-1,w]
B[i][w] = Math.max( profit[i] + B[i-1][w-weight[i]] , B[i-1][w] );
// else
// B[i,w] = B[i-1,w]
else
B[i][w] = B[i-1][w];
}
}
// cek
System.out.println("\n" + "MAP =");
for (int w = 0; w <= W; w++) {
if(w == 0)
System.out.print("i / w");
System.out.print("\t" + w);
}
System.out.println();
for (int i = 0; i <= N; i++) {
System.out.print(i);
for (int w = 0; w <= W; w++) {
System.out.print("\t" + B[i][w]);
}
System.out.println("");
}
// IV. determine which items to take
boolean[] take = new boolean[N+1]; // inisialisasi, default semuanya false
// Let i=N and k=W // Mulai dari Pojok Kanan Bawah
int i = N;
int k = W;
// While i > 0 and k > 0 // Lakukan perintah di bawah ini sampai selesai
while ( i > 0 && k > 0) {
// if B[i,k] ≠ B[i-1,k] then // Jika cell di atasnya BEDA nilainya, maka
// // Masukkan item ke dalam Tas
// k = k-wi // Geser cursor ke kiri sebanyak wi (ketukar)
// i = i-1 // Geser cursor ke atas (ketukar)
if (B[i][k] > B[i-1][k]) {
take[i] = true;
k = k - weight[i];
i--;
}
// else // TETAPI Jika SAMA nilainya, maka
// i = i-1 // Geser cursor ke atas
else
i--;
}
// print results
System.out.println("\n" + "RESULTS = " + "\n" + "item" + "\t"
+ "weight" + "\t" + "profit" + "\t" + "take");
for (int n = 1; n <= N; n++) {
System.out.println(n + "\t" + weight[n] + "\t" + profit[n]
+ "\t" + take[n]);
}
}
}
Silahkan di pelajari kalau ini bermanfaat.
Judul Spoiler:
// if bi + B[i-1,w-wi] > B[i-1,w]
// B[i,w] = bi + B[i-1,w-wi]
// else
// B[i,w] = B[i-1,w]
B[i][w] = Math.max( profit[i] + B[i-1][w-weight[i]] , B[i-1][w] );
// else
// B[i,w] = B[i-1,w]
else
B[i][w] = B[i-1][w];
}
}
// cek
System.out.println("\n" + "MAP =");
for (int w = 0; w <= W; w++) {
if(w == 0)
System.out.print("i / w");
System.out.print("\t" + w);
}
System.out.println();
for (int i = 0; i <= N; i++) {
System.out.print(i);
for (int w = 0; w <= W; w++) {
System.out.print("\t" + B[i][w]);
}
System.out.println("");
}
// IV. determine which items to take
boolean[] take = new boolean[N+1]; // inisialisasi, default semuanya false
// Let i=N and k=W // Mulai dari Pojok Kanan Bawah
int i = N;
int k = W;
// While i > 0 and k > 0 // Lakukan perintah di bawah ini sampai selesai
while ( i > 0 && k > 0) {
// if B[i,k] ≠ B[i-1,k] then // Jika cell di atasnya BEDA nilainya, maka
// // Masukkan item ke dalam Tas
// k = k-wi // Geser cursor ke kiri sebanyak wi (ketukar)
// i = i-1 // Geser cursor ke atas (ketukar)
if (B[i][k] > B[i-1][k]) {
take[i] = true;
k = k - weight[i];
i--;
}
// else // TETAPI Jika SAMA nilainya, maka
// i = i-1 // Geser cursor ke atas
else
i--;
}
// print results
System.out.println("\n" + "RESULTS = " + "\n" + "item" + "\t"
+ "weight" + "\t" + "profit" + "\t" + "take");
for (int n = 1; n <= N; n++) {
System.out.println(n + "\t" + weight[n] + "\t" + profit[n]
+ "\t" + take[n]);
}
}
}
Silahkan di pelajari kalau ini bermanfaat.
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar