Trouver la n-ième permutation sans calculer les autres

Donné un tableau de N éléments représentant la permutation des atomes, est-il un algorithme comme ça:

function getNthPermutation( $atoms, $permutation_index, $size )

$atoms est le tableau des éléments, $permutation_index est l'indice de la permutation et de la $size est la taille de la permutation.

Par exemple:

$atoms = array( 'A', 'B', 'C' );
//getting third permutation of 2 elements
$perm = getNthPermutation( $atoms, 3, 2 );

echo implode( ', ', $perm )."\n";

Serait d'impression:

B, A

Sans calcul chaque permutation jusqu'à $permutation_index ?

J'ai entendu quelque chose à propos de factoradic permutations, mais à chaque application que j'ai trouvé donne comme résultat une permutation avec la même taille de V, qui n'est pas mon cas.

Grâce.

  • qu'entendez-vous l'indice de la permutation?
  • imaginez que vous imprimez chaque permutation de N éléments avec ses itération compteur (permutation de 0, la permutation de 1, de permutation 2, ... ) ... je veux de la n-ème de la permutation.
  • mais qu'est ce qui détermine l'ordre de la permutation? je veux dire, permutation avec l'index 0 peut être l'une des formes
  • je n'ai pas de soins sur le tri des permutations, tout fera l'affaire 🙂
  • si vous n'avez pas de soins sur la commande, vous pouvez simplement choisir n'IMPORTE quelle permutation de taille $taille qui vous comme. vous souhaitez faire appel de cette fonction à plusieurs reprises, chaque fois avec un indice différent?