목록을 정렬하기위한 최소 조옮김 수


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

당신 만의 순열을 처리하는 경우 요소, 당신은 정확히해야합니다 N - C ( π ) 스왑, C ( π가 ) 에서 사이클의 수 분리 된 사이클 분해π를 . 이 거리는 이변 량 이므로 πσ로 (또는 AB 로 또는 반대로) 변환하려면 이러한 이동에 n - c ( σ - 1π )가 필요합니다.nnc(π)c(π)ππσABnc(σ1π)


오래 전에 투표를 했음에도 불구하고 오늘 클릭했습니다. 루빅스 큐브처럼, 오른쪽 : D?
sova

11

교환 거리는 또한 유클리드 공간에 등각 투영 될 수 있습니다. 각각의 스트링 (S)의 경우, 매트릭스 구조 여기서 M의 난의 J = 1 경우 전에 발생 J 그렇지 않으면 제로이다. 그러면 거리의 Frobenius M ( S ) - M ( S ' ) 2 스왑 거리 인 D ( S는 , s의 ' ) . ( Graham Cormode의 슬라이드에서 ). Anthony의 대답만큼 우아하지는 않지만 계산하기는 쉽습니다.M(s)Mij=1ijM(s)M(s)2d(s,s)

업데이트 : Oleksandr의 의견을 참조하십시오


Graham의 프레젠테이션에서 그것들은 Frobenius 규범 ( A F )이 아닌 스펙트럼 규범 ( ) 을 의미하는 것 같습니다 . A2AF
Oleksandr Bondarenko

당신이하고 싶은 모든 것이 차이를 세는 것이라면, frobenius 규범의 제곱이 올바르게 작동해야합니까?
Suresh Venkat

이것은 물론 0-1 행렬의 해밍 거리입니다.
Suresh Venkat

당신은 Frobenius 규범의 제곱과 해밍 거리 사이의 평등에 대해 옳습니다. 해밍 거리를 로 나눈 스왑 거리 를 추가하고 싶습니다 . 그러나 문제는 스왑 거리가 아니라 전위 거리 ( "스왑은 목록에서 두 요소의 위치를 ​​전환하는 것으로 정의")에 관한 것입니다. 스펙트럼 규범에 관한 것은 스왑 거리와 같습니다. 2
Oleksandr Bondarenko

Oleksandr : "스와핑"을 "두 개의 인접한 요소 교환"으로 해석한다고 가정합니다.
Anthony Labarre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.