Si tu fais une recherche "algorithme de permutation" sur internet, tu trouveras des explications sur ce que c'est et sur la façon de l'implémenter.
Voici une explication rapide :
Soit une liste de n éléments dont on veut trouver toutes les permutations possibles : 1-2-3- ... - n. Il y a n! (n factoriel) permutations possibles.
Pour trouver toutes les permutations possibles on suit les étapes suivantes :
- on fixe le premier élément :1- 2-3-...-n
- on trouve toutes les permutations de n-1 éléments à droite du premier élément --> il y en a (n-1)!
- on fixe un autre élément en premier élément : 2- 1-3-...-n
- on trouve les permutations des n-1 éléments à droite de ce nouveau premier élément --> il y en a (n-1)!
- on fixe un autre élément en premier élément : 3- 1-2-...-n
- on trouve les permutations des n-1 éléments à droite de ce nouveau premier élément --> il y en a (n-1)!
- etc...
On fait cela n fois, donc on trouve bien n fois (n-1)! permutations, soit n! permutations.
Maintenant, me diras-tu : comment fais-t-on pour trouver les (n-1)! permutations quand on a fixé le premier élément? Ben..on fait la même chose avec les n-1 éléments. On fixe une élément, on trouve les (n-2)! permutations des autres éléments etc ...
Ceci est donc un algorithme
récursif, càd qu'on va faire appel à l'algorithme qu'on écrit dans l'algorithme même : attention à bien mettre une condition d'arrêt (un cas où on passera dans tous les cas et où l'on ne fait pas appel à l'algorithme lui-même). Ici, ce sera, si le nombre d'élément est égal à 1, alors la fonction retournera l'élément lui-même.
Vu qu'on a parlé de factoriel (n!), on n'est pas trop trop étonné qu'on a affaire à un algorithme récursif. En effet, un exemple "simple" d'algo récursif est le calcul du factoriel.
Partager