Advertisement
koushik105

dp1

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