Nombre minimum de transpositions pour trier une liste

15

En essayant de concevoir mon propre algorithme de tri, je cherche le benchmark optimal auquel je peux le comparer. Pour un ordre non trié des éléments A et un ordre trié B , quel est un moyen efficace de calculer le nombre optimal de transpositions pour passer de A à B ?

Une transposition est définie comme la commutation de la position de 2 éléments dans la liste, donc par exemple

1 2 4 3

a une transposition (transposition 4 et 3) pour le rendre

1 2 3 4

Quelque chose comme

1 7 2 5 9 6

nécessite 4 transpositions (7, 2), (7, 6), (6,5), (9, 7)

Mise à jour (9/7/11): question modifiée pour utiliser la "transposition" au lieu de "swaps" pour faire référence aux échanges non adjacents.

sova
la source
Et si vous pouviez simplement échanger des voisins? comment puis-je déterminer le nombre minimum de swaps?

Réponses:

23

Si vous ne traitez qu'avec des permutations de éléments, alors vous aurez besoin exactement de n - c ( π ) swaps, où c ( π ) est le nombre de cycles dans la décomposition en cycle disjoint de π . Comme cette distance est bi-invariante, la transformation de π en σ (ou A en B , ou inversement) nécessite n - c ( σ - 1π ) de tels mouvements.nnc(π)c(π)ππσABnc(σ1π)

Anthony Labarre
la source
Bien qu'il ait voté pour cela il y a longtemps, il a juste cliqué aujourd'hui. Comme un Rubik's cube, non: D?
sova
11

La distance de permutation peut également être intégrée isométriquement dans l'espace euclidien. Pour chaque chaîne s, construisez une matrice M i j = 1 si i se produit avant j et vaut zéro sinon. Alors la distance de Frobenius M ( s ) - M ( s ) 2 est la distance d'échange . (à partir des diapositives de Graham Cormode ). Pas aussi élégant que la réponse d'Anthony, mais assez facile à calculer.M(s)Mij=1ijM(s)M(s)2d(s,s)

Mise à jour: veuillez consulter les commentaires d'Oleksandr

Suresh Venkat
la source
Il me semble que dans la présentation de Graham, ils signifient la norme spectrale ( ) et non la norme Frobenius ( ). A FA2AF
Oleksandr Bondarenko
même si tout ce que vous voulez faire est de compter les différences, alors le carré de la norme frobenius devrait fonctionner correctement?
Suresh Venkat
qui est bien sûr la distance de Hamming pour les matrices 0-1
Suresh Venkat
Vous avez raison sur l'égalité entre le carré de la norme de Frobenius et la distance de Hamming. Je voudrais ajouter que la distance de Hamming divisée par est égale à la distance d'échange. Mais la question portait sur la distance de transposition ("Un swap est défini comme la commutation de la position de 2 éléments dans la liste") et non sur la distance de swap. Ce qui concerne la norme spectrale c'est son carré égal à la distance de swap. 2
Oleksandr Bondarenko
Oleksandr: Donc je suppose que vous interprétez le "swapping" comme "l'échange de deux éléments adjacents"?
Anthony Labarre