0% found this document useful (0 votes)
92 views2 pages

TP Oc2 S2 2022

This document provides code for solving the 0-1 Knapsack Problem (KSP) using dynamic programming. The code takes in sample input values and weights, builds a 2D table K[][] using a recursive formula to find the optimal solution, and prints the selected items and optimum value. Students are tasked with recalling the KSP formulation, writing the recursive formula, running and modifying the code, and designing an interface to solve KSP using local search methods.

Uploaded by

Mohamed Hamrit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
92 views2 pages

TP Oc2 S2 2022

This document provides code for solving the 0-1 Knapsack Problem (KSP) using dynamic programming. The code takes in sample input values and weights, builds a 2D table K[][] using a recursive formula to find the optimal solution, and prints the selected items and optimum value. Students are tasked with recalling the KSP formulation, writing the recursive formula, running and modifying the code, and designing an interface to solve KSP using local search methods.

Uploaded by

Mohamed Hamrit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Mohamed Boudiaf university of M’sila

Faculty of MI
Department of informatics
Master 1 IDO
Combinatorial optimization 2 2022
Practice work: solving KSP using exact methods and local search

Create a new folder called PW CO2 2022, then, in NetBeans IDE, create a new project as java
application called PWOC2. Rename the main class as KSP.
In order to prepare local search implementation and efficiency measure, we use the following program
that allow solving 0-1 KSP by dynamic programming method.
public class KSP {
// maximum of two integers
static int max(int a, int b) { return (a > b) ? a : b; }
// main
public static void main(String args[])
{
// input
int n = 5;
int val[] = new int[] { 60, 100, 120, 50 , 250 };
int wt[] = new int[] { 10, 20, 30, 41,65 };
int sumwt = 0;
for(int i=0; i<n;i++) sumwt+= wt[i];
double ratio =0.5;
int W = (int) ((int) sumwt*ratio);
// variables
int i, w;
int K[][] = new int[n + 1][W + 1];
// Building table K[][] in bottom up manner
for (i = 0; i<= n; i++) {
for (w = 0; w<= W; w++) {
if (i == 0 || w == 0)
K[i][w] = 0;
else if (wt[i - 1]<= w)
K[i][w] = max(val[i - 1] + K[i - 1][w - wt[i - 1]], K[i - 1][w]);
else
K[i][w] = K[i - 1][w];
}
}
System.out.println("The optimum of this instance is : " + K[n][W]);
// look for selected items
System.out.println("Selected Items : " );
while (n != 0) {
if (K[n][W] != K[n - 1][W]) {
System.out.println("\tItem " + n + " with Weight = " + wt[n - 1] + " and Value = " + val[n - 1]);
W = W - wt[n-1];
}
n--;
}
}
}

1. Recall the KSP statement and mathematical formulation.


2. Write the recursive formula of DP for solving KSP.
3. Type then run the above code.
4. Run this code using your own input with different instances.
5. Modify this code to enter random values and weights.
6. Add necessary code to make your results in text file called KSP_DP_RESULTS.TXT.
7. In order to solve this problem using local search methods seen in our course, design and complete
the interface below :
Dr. A. HEMMAK 2020 page 1/1
Dr. A. HEMMAK 2020 page 1/1

You might also like