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


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

Александр: Итак, я полагаю, что вы понимаете "обмен" как "обмен двух смежных элементов"?
Энтони Лабарре
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.