Số lượng chuyển vị tối thiểu để sắp xếp danh sách


15

Khi cố gắng đưa ra thuật toán sắp xếp của riêng tôi, tôi đang tìm kiếm điểm chuẩn tối ưu để tôi có thể so sánh nó. Đối với một thứ tự chưa được sắp xếp của các phần tử A và một thứ tự B được sắp xếp , cách hiệu quả để tính số lần chuyển vị tối ưu để có được từ A đến B là gì?

Một hoán vị được định nghĩa là chuyển đổi vị trí của 2 phần tử trong danh sách, ví dụ như vậy

1 2 4 3

có một chuyển vị (hoán vị 4 và 3) để thực hiện

1 2 3 4

Cái gì đó như

1 7 2 5 9 6

yêu cầu 4 lần chuyển vị (7, 2), (7, 6), (6,5), (9, 7)

Cập nhật (9/7/11): câu hỏi đã thay đổi để sử dụng "chuyển vị" thay vì "hoán đổi" để chỉ các trao đổi không liền kề.


Điều gì nếu bạn chỉ có thể trao đổi hàng xóm? Làm thế nào tôi có thể tìm ra số lượng giao dịch hoán đổi tối thiểu?

Câu trả lời:


23

Nếu bạn chỉ xử lý hoán vị của phần tử, thì bạn sẽ cần chính xác các hoán đổi n - c ( π ) , trong đó c ( π ) là số chu kỳ trong phân tách chu kỳ rời rạc của π . Vì khoảng cách này là bất biến hai chiều, nên việc chuyển đổi π thành σ (hoặc A thành B hoặc ngược lại) đòi hỏi n - c ( σ - 1nn-c(π)c(π)ππσMộtB di chuyển như vậy.n-c(σ-1π)


Mặc dù đã bỏ phiếu cho điều này từ lâu, nhưng nó chỉ được nhấp vào ngày hôm nay. Giống như khối Rubik, phải không?
sova

11

Khoảng cách trao đổi cũng có thể được nhúng bằng phương pháp đo trong không gian Euclide. Đối với mỗi chuỗi s, xây dựng một ma trận trong đó M i j = 1 nếu i xảy ra trước j và khác 0. Sau đó, khoảng cách Frobenius M ( s ) - M ( s ' ) 2 là khoảng cách hoán đổi d ( s , s ' ) . (từ slide của Graham Cormode ). Không thanh lịch như câu trả lời của Anthony, nhưng khá dễ tính toán.M(S)MTôij= =1TôijM(S)-M(S')2d(S,S')

Cập nhật: vui lòng xem ý kiến ​​của Oleksandr


Dường như với tôi rằng trong bài trình bày của Graham họ có nghĩa là mức phổ ( ) và không Frobenius định mức ( Một F ). Một2MộtF
Oleksandr Bondarenko

mặc dù nếu tất cả những gì bạn muốn làm là đếm sự khác biệt, thì bình phương của tiêu chuẩn frobenius sẽ hoạt động đúng không?
Suresh Venkat

tất nhiên đó là khoảng cách Hamming cho ma trận 0-1
Suresh Venkat

Bạn nói đúng về sự bình đẳng giữa bình phương Frobenius và khoảng cách Hamming. Tôi muốn thêm khoảng cách Hamming chia cho bằng khoảng cách trao đổi. Nhưng câu hỏi là về khoảng cách chuyển vị ("Hoán đổi được định nghĩa là chuyển đổi vị trí của 2 phần tử trong danh sách") chứ không phải về khoảng cách hoán đổi. Điều liên quan đến định mức phổ nó là bình phương của nó bằng khoảng cách hoán đổi. 2
Oleksandr Bondarenko

Oleksandr: Vì vậy, tôi cho rằng bạn diễn giải "hoán đổi" là "trao đổi hai yếu tố liền kề"?
Anthony Labarre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.