L'algo donne une des solutions optimales.
Si on calcule le nombre d'échange effectué en fonction des cycles présents dans la permutation :
- Pour les cycles de longueur 1, il fait 0 échange.
- Pour les cycles de longueur 2, il fait 1 échange.
- Pour les cycles de longueur k, il fait k-1 échanges. (*)
(*) car un échange transforme un cycle de longueur k en cycle de longueur k-1.
Si on pose N la taille de la permutation, et P le nombre d'échange effectué, alors :
N = 1*NbCycle1 + 2*NbCycle2 + 3*NbCycle3 + ... + N*NbCycleN
P = 0*NbCycle1 + 1*NbCycle2 + 2*NbCycle3 + ... + (N-1)*NbCycleN
avec NbCyclek = le nombre de cycle de taille k présent dans la permutation.
De là, on trouve
N-P = NbCycle1 + NbCycle2 + NbCycle3 + ... + NbCycleN
c'et à dire
P = N - le nombre de cycles dans N
C'est à dire le décrément de la permutation, qui se trouve être le nombre minimum de transposition.
Partager