Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.73 KB | None | 0 0
  1. import java.util.HashSet;
  2. import java.util.Iterator;
  3. import java.util.Random;
  4. import java.util.Map;
  5. import java.util.Set;
  6. public class ASSP {
  7.  
  8.     public final static int INFINITY=10000;
  9.     public final static int EXPERIMENT=10;
  10.     public static void union(int P[][],int x,int y)
  11.     {
  12.         link(P,findset(P,x),findset(P,y));
  13.     }
  14.     public static int min(int a,int b)
  15.     {
  16.         if(a<b) return a;
  17.         else return b;
  18.     }
  19.     public static void link(int A[][],int indexA,int indexB)
  20.     {
  21.         if (indexA != indexB)
  22.         {  
  23.         int oldParent,newParent;
  24.         if(A[indexA][1] > A[indexB][1])
  25.         {
  26.             oldParent=A[indexB][0];
  27.             A[indexA][1]=A[indexA][1]+A[indexB][1];
  28.             A[indexB][0]=A[indexA][0];
  29.             newParent=A[indexB][0];
  30.             for(int i=0;i<A.length;i++)
  31.             {
  32.             if(A[i][0]==oldParent)
  33.             {
  34.                 A[i][0] = newParent;
  35.             }
  36.            
  37.         }
  38.            
  39.        
  40.     }
  41.     else if(A[indexB][1] >A[indexA][1] )
  42.     {
  43.         oldParent=A[indexA][0];
  44.         A[indexB][1]=A[indexB][1]+A[indexA][1];
  45.         A[indexA][0]=A[indexB][0];
  46.         newParent=A[indexA][0];
  47.         for(int i=0;i<A.length;i++)
  48.         {
  49.             if(A[i][0]==oldParent)
  50.             {
  51.                 A[i][0] = newParent;
  52.             }
  53.            
  54.         }
  55.     }
  56.     else
  57.     {
  58.         oldParent=A[indexB][0];
  59.         A[indexA][1]=A[indexA][1]+A[indexB][1];
  60.         A[indexB][0]=A[indexA][0];
  61.         newParent=A[indexB][0];
  62.         for(int i=0;i<A.length;i++)
  63.         {
  64.             if(A[i][0]==oldParent)
  65.             {
  66.                 A[i][0] = newParent;
  67.             }
  68.            
  69.         }
  70.     }
  71.         }
  72. }
  73. public static int findset(int A[][],int i)
  74. {
  75.     if(A[i][0] == i)
  76.     {  
  77.         return i;
  78.     }
  79.     else
  80.     {
  81.         A[i][0]=findset(A,A[i][0]);
  82.         return A[i][0];
  83.     }
  84. }
  85.     public static int searchArray(int D[][],int x,int y)
  86.     {
  87.         int flag =0;
  88.         if (D[x][y] == 1 || x == y)
  89.         {  
  90.           flag =1;
  91.         }
  92.         return flag;
  93.     }
  94.     public static int totalsets(int A[][])
  95.     {
  96.         Set set1 = new HashSet();
  97.         for(int i=0;i<A.length;i++)
  98.         {
  99.             set1.add(A[i][0]);
  100.            
  101.         }
  102.         Iterator itr = set1.iterator();
  103.  
  104.         int sum=0;
  105.         while(itr.hasNext()) {
  106.           itr.next();
  107.           sum=sum+1;
  108.          
  109.         }
  110.         return sum;
  111.     }
  112.     public static void main(String[] args) {
  113.         Random randomGenerator=new Random();
  114.         int m=0;
  115.         int MAX[]=new int[EXPERIMENT];
  116.         for (m=0;m<EXPERIMENT;m++)
  117.         {
  118.            
  119.         int n=100;//Points
  120.         int E=4950;//Edges
  121.         int a=0;
  122.        
  123.        
  124.             int P[][]=new int[n][2];//Point Matrix
  125.  
  126.             for(int i=0;i<P.length;i++)
  127.             {
  128.             P[i][0]=i;//Parent
  129.             P[i][1]=1;//Rank
  130.            
  131.             }
  132.             int D[][]=new int[n][n];//Distance Matrix
  133.             for(int i=0;i<n;i++)
  134.             {
  135.                 for(int j=0;j<n;j++)
  136.                 {
  137.                     if (i == j)
  138.                     {
  139.                         D[i][j]=0;
  140.                     }
  141.                     else
  142.                     {
  143.                         D[i][j]=INFINITY;//Big Value or Infinity
  144.                     }  
  145.                 }
  146.             }
  147.         do{
  148.        
  149.          int x=randomGenerator.nextInt(n);//Find points
  150.          int y=randomGenerator.nextInt(n);//Find points
  151.          int flag=searchArray(D,x,y);
  152.          if (flag == 0)
  153.          {
  154.              D[x][y]=1;
  155.              D[y][x]=1;
  156.              //System.out.println("x="+x+",y="+y);
  157.              union(P,x,y);
  158.              a++;
  159.              
  160.          }
  161.         }
  162.         while(a<E);
  163.          //if
  164. //      for(int i=0;i<P.length;i++)
  165. //      {
  166. //         
  167. //          System.out.println("Node"+i+", Parent"+P[i][0]+",Rank"+P[i][1]);//Rank
  168. //         
  169. //         
  170. //      }
  171. //      ////////////////////////////////
  172.         int max=0;
  173.         for(int k=0;k<n;k++)
  174.         {
  175.             for(int i=0;i<n;i++)
  176.             {
  177.                 for(int j=0;j<n;j++)
  178.                 {
  179.                     D[i][j]=min(D[i][j],(D[i][k]+D[k][j]));
  180.                    
  181.                     if(D[i][j] !=INFINITY)
  182.                     {
  183.                         if (D[i][j] >max)
  184.                         {
  185.                            
  186.                             max=D[i][j];
  187.                         }
  188.                     }
  189.                    
  190.                 }
  191.             }
  192.            
  193.         }
  194.         MAX[m]=max;
  195. //      int total;
  196. //      total=totalsets(P);
  197. //      System.out.println(total);
  198. /*      for(int i=0;i<n;i++)
  199.         {
  200.             System.out.println();
  201.             for(int j=0;j<n;j++)
  202.             {
  203.                 System.out.print(D[i][j]+" ");
  204.             }
  205.         }*/
  206.         }//Experiment End
  207.         System.out.println("Experiment  Diameter");
  208.         for(m=0; m<EXPERIMENT; m++)
  209.         {
  210.             System.out.println(m+" "+MAX[m]);
  211.         }
  212.        
  213.     } // main
  214.  
  215. } // ASSP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement