Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Salesman::Brute_force()
- {
- int *size_tab = new int[nodesAmount];
- int temp =0 ;
- int suma;
- int counter=0;
- int min_permutation = INT32_MAX;
- for (int i = 0; i < nodesAmount; i++)
- size_tab[i]=i;
- int min_sum = INT32_MAX;
- int min_sumD = INT32_MAX;
- do {
- suma = 0;
- if (size_tab[0] != 0)
- break;
- for (int i = 1; i < nodesAmount; i++)
- {
- //cout << temp <<" -> "<< size_tab[i] << " ";
- suma += matrixOfValue[temp][size_tab[i]];
- temp = size_tab[i];
- }
- suma += matrixOfValue[temp][0];
- //cout << "suma tej permutacji = " << suma << endl<<endl;
- temp = 0;
- if(suma < min_sum)
- {
- min_sum = suma;
- //min_permutation = counter;
- }
- counter++;
- } while (std::next_permutation( size_tab, size_tab + nodesAmount ));
- }
- void Salesman::Display()
- {
- int *size_tab = new int[nodesAmount];
- int temp = 0;
- int suma;
- int sumaD;
- int counter = 0;
- int min_permutation = INT32_MAX;
- for (int i = 0; i < nodesAmount; i++)
- size_tab[i] = i;
- int min_sum = INT32_MAX;
- int min_sumD = INT32_MAX;
- do {
- suma = 0;
- if (size_tab[0] != 0)
- break;
- for (int i = 1; i < nodesAmount; i++)
- {
- //cout << temp <<" -> "<< size_tab[i] << " ";
- suma += matrixOfValue[temp][size_tab[i]];
- temp = size_tab[i];
- }
- suma += matrixOfValue[temp][0];
- //cout << "suma tej permutacji = " << suma << endl<<endl;
- temp = 0;
- if (suma < min_sum)
- {
- min_sum = suma;
- min_permutation = counter;
- }
- counter++;
- } while (std::next_permutation(size_tab, size_tab + nodesAmount));
- counter = 0;
- for (int i = 0; i < nodesAmount; i++)
- size_tab[i] = i;
- do {
- sumaD = 0;
- //cout << counter << ". ";
- if (size_tab[0] != 0)
- break;
- for (int i = 1; i < nodesAmount; i++)
- {
- //cout << temp << " -> " << size_tab[i] << " ";
- sumaD += matrixOfValue[temp][size_tab[i]];
- temp = size_tab[i];
- }
- sumaD += matrixOfValue[temp][0];
- //cout << "suma tej permutacji = " << suma << endl << endl;
- temp = 0;
- if (sumaD == min_sum)
- {
- for (int i = 1; i < nodesAmount; i++)
- {
- cout << temp << " -> " << size_tab[i] << " ";
- temp = size_tab[i];
- }
- cout << temp << " -> " << size_tab[0] << " ";
- cout << "\nmin sum = " << sumaD << endl << endl;
- }
- if (sumaD < min_sumD)
- {
- min_sumD = sumaD;
- min_permutation = counter;
- }
- counter++;
- } while (std::next_permutation(size_tab, size_tab + nodesAmount));
- cout << "liczba permutacji " << counter << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement