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.


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π)


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.