Tên của vấn đề sắp xếp lại / sắp xếp này?


10

Bạn được cung cấp một mảng có độ dài . Mỗi phần tử của mảng thuộc về một trong các lớp K. Bạn phải sắp xếp lại mảng bằng cách sử dụng số lượng hoạt động hoán đổi tối thiểu để tất cả các phần tử từ cùng một lớp luôn được nhóm lại với nhau, nghĩa là chúng tạo thành một phân đoạn liền kề. Ví dụ: nK
Ba thỏa thuận hợp lệ khác vẫn còn.

[2,1,3,3,2,2][2,2,2,1,3,3], or[2,1,3,3,2,2][1,2,2,2,3,3], or[2,1,3,3,2,2][3,3,2,2,2,1].

Vấn đề này được gọi là gì trong văn học? Có một thuật toán hiệu quả cho nó?


1
Tôi không chắc vấn đề này có tên, mặc dù chắc chắn là có thể. Không phải tất cả các vấn đề có thể hiểu được đều có tên.
Yuval Filmus

2
Trong thực tế, điều này sẽ được gọi là nhóm . Tôi không biết thuật ngữ trong thuật toán cổ điển. (Nó chắc chắn là một thú vị, và vấn đề có khả năng cứng Giảm thiểu số lượng các giao dịch hoán đổi có cảm giác "tìm ra hoán vị tốt nhất của nhóm", mà lần lượt cảm thấy NP-khó-ish!.)
Raphael

Vâng, cảm ơn bạn bây giờ. Tất nhiên tôi quan tâm đến giải pháp cho vấn đề, nhưng nghĩ rằng nó đã được nghiên cứu nên đã yêu cầu tham khảo.
Marko Bukal

Câu trả lời:


6

Lưu ý: Đây là một bằng chứng về độ cứng và tôi nghĩ có những thuật toán thực tế như lập trình số nguyên, v.v.

Cho một ví dụ BIN_PACKING nơi bạn muốn để đóng gói số n 1 , ... , n K vào L thùng kích thước m 1 , ... , m L , và nó được đảm bảo rằng Σ n i = Σ m j = N , sau đó chúng ta có thể thiết kế một ví dụ về vấn đề của bạn như sau:Kn1,,nKLm1,,mLni=mj=N

  • Có các ;K+(N+1)(L1)
  • Đầu tiên lớp có kích thước n 1 , ... , n K tương ứng, và mỗi người trong số các lớp còn lại có kích thước N + 1 ;;Kn1,,nKN+1
  • Mảng được phân chia thành các khe kích thước: nơi mỗi khe kích thước ( N + 1 ) 2 được đóng gói với các lớp N + 1 , được sắp xếp liên tục và phần còn lại được sắp xếp tùy ý.
    m1,(N+1)2,m2,(N+1)2,m3,,(N+1)2,mL
    (N+1)2N+1

(N+1)2N


Nm1,,mL(N+1)2(N+1)N+1đã hoán đổi, vì vậy chúng tôi không thể) hoặc "trượt" toàn bộ một vị trí sang trái hoặc phải (nhưng điều này đòi hỏi phải "trượt" mỗi ...
j_random_hacker

N+1N+1N

1

Tôi cũng nghi ngờ đây là NP-hard, nhưng trong trường hợp không có ý tưởng để chứng minh, đây là một vài giới hạn dưới có thể tính toán nhanh chóng có thể hữu ích để kiểm tra tính tối ưu của giải pháp heuristic hoặc cắt xén tìm kiếm theo chi nhánh .

iniijLiijinijLiiO(n)O(Kn)

  1. LiK=2K
  2. Li

Trong ví dụ của bạn, các giới hạn này đều cho 1 (0,5 có thể được làm tròn trong trường hợp sau), tất nhiên là lỏng lẻo.

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.