Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.53 KB | None | 0 0
  1. void Salesman::Brute_force()
  2. {
  3.     int *size_tab = new int[nodesAmount];
  4.     int temp =0 ;
  5.     int suma;
  6.  
  7.     int counter=0;
  8.     int min_permutation = INT32_MAX;
  9.    
  10.     for (int i = 0; i < nodesAmount; i++)
  11.         size_tab[i]=i;
  12.    
  13.     int min_sum = INT32_MAX;
  14.     int min_sumD = INT32_MAX;
  15.    
  16.  
  17.     do {
  18.         suma = 0;
  19.        
  20.         if (size_tab[0] != 0)
  21.             break;
  22.  
  23.         for (int i = 1; i < nodesAmount; i++)
  24.         {
  25.             //cout << temp <<" -> "<< size_tab[i] << "   ";
  26.             suma += matrixOfValue[temp][size_tab[i]];
  27.             temp = size_tab[i];
  28.         }
  29.        
  30.         suma += matrixOfValue[temp][0];
  31.         //cout << "suma tej permutacji = " << suma << endl<<endl;
  32.         temp = 0;
  33.        
  34.         if(suma < min_sum)
  35.         {
  36.             min_sum = suma;
  37.             //min_permutation = counter;
  38.         }
  39.  
  40.         counter++;
  41.  
  42.     } while (std::next_permutation( size_tab, size_tab + nodesAmount  ));
  43.  
  44.  
  45. }
  46.  
  47. void Salesman::Display()
  48. {
  49.  
  50.     int *size_tab = new int[nodesAmount];
  51.     int temp = 0;
  52.     int suma;
  53.     int sumaD;
  54.     int counter = 0;
  55.     int min_permutation = INT32_MAX;
  56.  
  57.     for (int i = 0; i < nodesAmount; i++)
  58.         size_tab[i] = i;
  59.  
  60.     int min_sum = INT32_MAX;
  61.     int min_sumD = INT32_MAX;
  62.  
  63.  
  64.     do {
  65.         suma = 0;
  66.  
  67.         if (size_tab[0] != 0)
  68.             break;
  69.  
  70.         for (int i = 1; i < nodesAmount; i++)
  71.         {
  72.             //cout << temp <<" -> "<< size_tab[i] << "   ";
  73.             suma += matrixOfValue[temp][size_tab[i]];
  74.             temp = size_tab[i];
  75.         }
  76.  
  77.         suma += matrixOfValue[temp][0];
  78.         //cout << "suma tej permutacji = " << suma << endl<<endl;
  79.         temp = 0;
  80.  
  81.         if (suma < min_sum)
  82.         {
  83.             min_sum = suma;
  84.             min_permutation = counter;
  85.         }
  86.  
  87.         counter++;
  88.  
  89.     } while (std::next_permutation(size_tab, size_tab + nodesAmount));
  90.  
  91.     counter = 0;
  92.     for (int i = 0; i < nodesAmount; i++)
  93.         size_tab[i] = i;
  94.     do {
  95.  
  96.         sumaD = 0;
  97.         //cout << counter << ". ";
  98.         if (size_tab[0] != 0)
  99.             break;
  100.  
  101.         for (int i = 1; i < nodesAmount; i++)
  102.         {
  103.             //cout << temp << " -> " << size_tab[i] << "   ";
  104.             sumaD += matrixOfValue[temp][size_tab[i]];
  105.             temp = size_tab[i];
  106.         }
  107.  
  108.         sumaD += matrixOfValue[temp][0];
  109.         //cout << "suma tej permutacji = " << suma << endl << endl;
  110.         temp = 0;
  111.  
  112.         if (sumaD == min_sum)
  113.         {
  114.             for (int i = 1; i < nodesAmount; i++)
  115.             {
  116.                 cout << temp << " -> " << size_tab[i] << "   ";
  117.                 temp = size_tab[i];
  118.             }
  119.             cout << temp << " -> " << size_tab[0] << "   ";
  120.             cout << "\nmin sum = " << sumaD << endl << endl;
  121.         }
  122.  
  123.         if (sumaD < min_sumD)
  124.         {
  125.             min_sumD = sumaD;
  126.             min_permutation = counter;
  127.         }
  128.         counter++;
  129.  
  130.  
  131.     } while (std::next_permutation(size_tab, size_tab + nodesAmount));
  132.     cout << "liczba permutacji " << counter << endl;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement