Минимальное количество транспозиций для сортировки списка

15

Пытаясь разработать собственный алгоритм сортировки, я ищу оптимальный эталон, с которым я могу его сравнить. Для несортированного порядка элементов A и отсортированного порядка B , какой эффективный способ вычислить оптимальное количество транспозиций, чтобы добраться от A до B ?

Транспонирование определяется как переключение положения двух элементов в списке, например,

1 2 4 3

имеет одну транспозицию (транспозиция 4 и 3), чтобы сделать его

1 2 3 4

Что-то вроде

1 7 2 5 9 6

требуется 4 транспонирования (7, 2), (7, 6), (6,5), (9, 7)

Обновление (9/7/11): вопрос изменен на использование «транспонирования» вместо «свопов» для обозначения несмежных обменов.

Шова
источник
Что делать, если вы можете просто обменять соседей? Как я могу определить минимальное количество свопов?

Ответы:

23

nnc(π)c(π)ππσABnc(σ1π)

Энтони Лабарре
источник
Несмотря на то, что голосовали за это давным-давно, сегодня просто щелкнули. Как кубик Рубика, верно: D?
Сова
11

M(s)Mij=1ijM(s)M(s)2d(s,s)

Обновление: пожалуйста, смотрите комментарии Александра

Суреш Венкат
источник
A2AF
хотя, если все, что вы хотите сделать, это посчитать разницу, то квадрат нормы Фробениуса должен работать правильно?
Суреш Венкат
что, конечно, расстояние Хемминга для матриц 0-1
Суреш Венкат
2
Александр: Итак, я полагаю, что вы понимаете "обмен" как "обмен двух смежных элементов"?
Энтони Лабарре