combinatoire avec répétitions
Bonjour,
j'utilise cet algo pour générer des combinaisons de caractères avec répétition.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
int8 matrix[8] = {'a','a','a','a','a','a','a','a'};
int8 upperBound = 'z';
int8 lowerBound = 'a';
int8 width = 8;
int8 column = 0;
uint64 iterations = 3000;
matrix[0]--;
while(iterations != 0)
{
for(column = 0; column < width; column++)
{
if(matrix[column] < upperBound)
{
++matrix[column];
break;
}
matrix[column] = lowerBound;
}
--iterations;
} |
Ce dernier fonctionne correctement. Cependant le processeur sur lequel il tourne gère très mal la prédiction des branches logiques. Et donc, tel quel il ne peut pas dépasser les ~350'000'000 itérations / seconde.
Existe-il une version plus predictible de cet algo? Quel nom puis-je utiliser pour étayer mes recherches google (à part algorythme combinatoire / permutatif)? -je n'y connais rien en math :mrgreen:
Merci pour votre aide.