Advertisement
koushik105

dp

Oct 5th, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.07 KB | None | 0 0
  1.  
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.util.ArrayList;
  5. import java.util.Scanner;
  6.  
  7.  
  8. class dpbmask{
  9.     int [][]dptable = null;
  10.     int tobecoveredsetsize;
  11.     int subsetNum;
  12.     ArrayList []subsets = null;
  13.     int weightarray[] = null;
  14.     ArrayList mask = null;
  15.    
  16.     int valChose;
  17.     int valNotChose;
  18.    
  19.     dpbmask(int psize, int sub, ArrayList []a, int []w, int []bmp) {
  20.         tobecoveredsetsize = psize;
  21.         subsetNum = sub;
  22.         int p = (int)Math.pow(2, (int)subsetNum);
  23.         dptable = new int[p][subsetNum];
  24.         for(int i=0; i<p; i++)
  25.         {
  26.             for(int j=0; j<subsetNum; j++)
  27.             {
  28.                 dptable[i][j] = -1;
  29.             }
  30.         }
  31.        
  32.         subsets = new ArrayList[sub];
  33.         for(int i=0; i<subsetNum; i++)
  34.         {
  35.             subsets[i] = new ArrayList();
  36.             //for(int j=0; j<subsets[i].size(); j++)
  37.             //{
  38.                 subsets[i].add(a[i]);
  39.             //}
  40.         }
  41.         weightarray = new int[subsetNum];
  42.         System.arraycopy(w, 0, weightarray, 0, subsetNum);
  43.        
  44.         mask = new ArrayList();
  45.         for(int i=0; i<bmp.length; i++)
  46.         {
  47.             mask.add(bmp[i]);
  48.         }
  49.     }
  50.    
  51.     public int setCover(int coveredBitMask,int nowConsiderIndex){      
  52.         if(nowConsiderIndex == subsetNum && coveredBitMask != ((1<<tobecoveredsetsize)-1))
  53.             return 1000;
  54.        
  55.         else if(nowConsiderIndex == subsetNum || coveredBitMask == ((1<<tobecoveredsetsize)-1))
  56.             return 0;
  57.         else if(dptable[coveredBitMask |(int) mask.get(nowConsiderIndex)][ nowConsiderIndex ] != -1)
  58.             return dptable[coveredBitMask | (int)mask.get(nowConsiderIndex)][ nowConsiderIndex ];
  59.         else{
  60.             valChose = setCover(coveredBitMask | (int) mask.get(nowConsiderIndex), nowConsiderIndex+1)+ weightarray[nowConsiderIndex];
  61.             System.out.println("Valu chosen: " + valChose);
  62.             valNotChose = setCover(coveredBitMask, nowConsiderIndex+1);
  63.             System.out.println("Valu Not chosen: " + valNotChose);
  64.             dptable[coveredBitMask][nowConsiderIndex] = Math.min(valChose, valNotChose);
  65.         }  
  66.        
  67.         System.out.println(".........");
  68.         System.out.println("Valu chosen: " + valChose);
  69.         System.out.println("Valu Not chosen: " + valNotChose);
  70.         showdptable();
  71.         System.out.println(".........");
  72.        
  73.         return dptable[coveredBitMask][nowConsiderIndex];
  74.     }
  75.    
  76.     public void show(){
  77.         System.out.println("printing from the class: ");
  78.         System.out.println("Parent Set Size: "+ tobecoveredsetsize);
  79.         System.out.println("Sub set Number: " + subsetNum);
  80.         System.out.println("Subsets: ");
  81.        
  82.         for(int i=0; i<subsetNum; i++)
  83.         {
  84.             //for(int j=0; j<subsets[i].size(); j++)
  85.             //{
  86.                 System.out.print(subsets[i]);
  87.             //}
  88.             System.out.println();
  89.         }
  90.        
  91.         System.out.println("bitmasks are: ");
  92.         for(int i=0; i< mask.size(); i++)
  93.             System.out.print(mask.get(i) + " ");
  94.         System.out.println();
  95.         System.out.println("Weights are: ");
  96.         for(int i=0; i<weightarray.length; i++)
  97.             System.out.print(weightarray[i] + " ");
  98.         System.out.println();
  99.        
  100.     }
  101.     public void showdptable()
  102.     {
  103.         for(int i=0; i<dptable.length; i++)
  104.         {
  105.             for(int j=0; j<dptable[i].length; j++)
  106.             {
  107.                 System.out.print(dptable[i][j] + " ");
  108.             }
  109.             System.out.println();
  110.         }
  111.     }
  112.    
  113. }
  114.  
  115. public class dpbitmask {
  116.  
  117.     public static void main(String[] args) throws FileNotFoundException {
  118.         // TODO code application logic here
  119.         Scanner fileScanner = new Scanner(new File("J:\\CSE 462 ALGORITHIM ENGINEERING SESSIONAL\\dpBitmask\\src\\input.txt"));
  120.         int parentsetsize = fileScanner.nextInt();
  121.         int noofsubset = fileScanner.nextInt();
  122.         System.out.println(parentsetsize + " " + noofsubset);
  123.         ArrayList []al = new ArrayList[noofsubset];
  124.         for(int i=0; i<noofsubset; i++)
  125.         {
  126.             int noofelem = fileScanner.nextInt();
  127.             al[i] = new ArrayList();
  128.             for(int j=0; j<noofelem; j++)
  129.             {
  130.                 al[i].add(fileScanner.nextInt());
  131.             }
  132.         }
  133.        
  134.         System.out.println("Subsets are: ");
  135.         for(int i=0; i<noofsubset; i++)
  136.         {
  137.             for(int j=0; j<al[i].size(); j++)
  138.             {
  139.                 System.out.print(al[i].get(j));
  140.             }
  141.             System.out.println();
  142.         }
  143.         System.out.println("bitmasks are: ");
  144.         int []bitmaskpattern = new int[noofsubset];
  145.         for(int i=0; i<bitmaskpattern.length; i++)
  146.         {
  147.             bitmaskpattern[i] = 0;
  148.         }
  149.        
  150.         for(int i=0; i<noofsubset; i++)
  151.         {
  152.             for(int j=0; j<al[i].size(); j++)
  153.             {
  154.                 bitmaskpattern[i] = bitmaskpattern[i] | (1 << (int) al[i].get(j));
  155.             }
  156.            
  157.         }
  158.        
  159.         for(int i=0; i<bitmaskpattern.length; i++)
  160.         {
  161.             System.out.println(bitmaskpattern[i]);
  162.         }
  163.         int []weight = new int[noofsubset];
  164.        
  165.         for(int i=0; i<noofsubset; i++)
  166.         {
  167.             weight[i] = fileScanner.nextInt();
  168.         }
  169.         System.out.println("Weights are: ");
  170.         for(int i=0; i<weight.length; i++)
  171.         {
  172.             System.out.print(weight[i] + " ");
  173.         }
  174.         System.out.println();
  175.         System.out.println("++++++++++++++++++++++");
  176.         dpbmask d = new dpbmask(parentsetsize, noofsubset, al, weight, bitmaskpattern);
  177.         d.show();
  178.         System.out.println("++++++++++++++++++++++");
  179.         //d.setCover(noofsubset, noofsubset)
  180.         //d.showdptable();
  181.         int set = d.setCover(0, 0);
  182.         System.out.println("++++++++++++++++");
  183.         System.out.println(set);
  184.         //d.showdptable();
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement