Sắp xếp như một chương trình tuyến tính


24

Một số vấn đề đáng ngạc nhiên có sự giảm thiểu khá tự nhiên đối với lập trình tuyến tính (LP). Xem Chương 7 của [1] để biết các ví dụ như luồng mạng, kết hợp lưỡng cực, trò chơi tổng bằng không, đường dẫn ngắn nhất, một hình thức hồi quy tuyến tính và thậm chí đánh giá mạch!

Do việc đánh giá mạch giảm xuống lập trình tuyến tính, nên bất kỳ vấn đề nào trong P đều phải có công thức lập trình tuyến tính. Do đó, chúng tôi có một thuật toán sắp xếp "mới", thông qua việc rút gọn thành một chương trình tuyến tính. Vì vậy, câu hỏi của tôi là

  1. Chương trình tuyến tính sẽ sắp xếp một mảng gồm số thực là gì?n
  2. Thời gian chạy của thuật toán sắp xếp giảm-to-LP và giải quyết là gì?

  1. Các thuật toán của S. Dasgupta, C. Papadimitriou và U. Vazirani (2006)


3
Nếu bạn đã biết câu trả lời, tại sao bạn lại đặt câu hỏi?
Yuval Filmus

2
@Joe Bạn có thể đăng tài liệu thú vị ngay cả khi bạn biết câu trả lời. Cách thông thường để làm như vậy là trả lời câu hỏi của riêng bạn bằng một câu (công phu) (thay vì đăng một liên kết đến một số tài liệu, có thể bị hỏng).
Raphael

@Raphael Nếu không có ai khác viết câu trả lời, thì tôi sẽ làm khi tôi có thời gian.
Joe

@YuvalFilmus hỏi một câu hỏi mà bạn biết câu trả lời rõ ràng được khuyến khích trên trao đổi ngăn xếp .
Joe

Câu trả lời:


23

Câu trả lời sau đây về cơ bản tương đương với câu bạn đã biết, nhưng có vẻ hơi "ma thuật" hơn một chút. Mặt khác, nó mang tính kỹ thuật cao hơn, nhưng tôi tin rằng kỹ thuật chung "viết vấn đề của bạn như là một sự tối ưu hóa trên ma trận hoán vị và gọi Birkhoff-von Neumann" là một điều tuyệt vời cần biết.

Đối với hoán vị của { 1 , Trực , n } xác định ma trận hoán vị P σ là ma trận 0-1 sao cho P i j = 1 nếu j = σ ( i )P i j = 0 nếu không. Đây đơn giản là ma trận mà permutes tọa độ của một vectơ x theo σ : nếu y = P σ x sau đó y i = x σσ{1,Giáo dục,n}PσPtôij= =1j= =σ(tôi)Ptôij= =0xσy= =Pσx . Tôi sẽ biểu thịy= P σ xσ(x)từ bây giờ.ytôi= =xσ(tôi)y= =Pσxσ(x)

Một nét hơn: a không âm ma trận M là gấp đôi-ngẫu nhiên nếu mỗi người trong các hàng của nó và mỗi một trong các cột số tiền của mình cho 1.n×nM

Và một thực tế rất quan trọng trong tối ưu hóa tổ hợp - định lý Birkhoff-von Neumann:

Một ma trận là gấp đôi ngẫu nhiên khi và chỉ khi nó là sự kết hợp lồi của ma trận hoán vị, tức là nếu và chỉ nếu có tồn tại hoán vị σ 1 , ... , σ k và tập số thực dương alpha 1 , ... , α kM = Σ k i = 1 α i P σ iα i = 1 .Mσ1,Giáo dục,σkα1,Giáo dục,αkM= =Σtôi= =1kαtôiPσtôiΣαtôi= =1

Lưu ý rằng một ma trận ngẫu nhiên kép được xác định bởi các bất đẳng thức

j : n Σ i = 1 M i j = 1 i , j : M i j0

tôi:Σj= =1nMtôij= =1
j:Σtôi= =1nMtôij= =1
tôi,j:Mtôij0

Tất cả các bất đẳng thức được kết hợp với nhau xác định một đa giác và định lý Birkhoff-von Neumann nói rằng các điểm cực trị (đỉnh) của đa giác này đều là ma trận hoán vị. Từ lập trình tuyến tính cơ bản, chúng ta biết điều này ngụ ý rằng bất kỳ chương trình tuyến tính nào có bất đẳng thức trên là các ràng buộc của nó (và không có ràng buộc nào khác) sẽ có ma trận hoán vị là một giải pháp tối ưu.P

Vì vậy, được sắp xếp một đầu vào , chúng ta chỉ cần đưa ra một mục tiêu tuyến tính f a ( M ) mà:một= =(một1,Giáo dục,mộtn)fmột(M)

  • fmột(Pτ)<fmột(Pσ)σ(một)τ(một)

fmột(M)Pσσσ(một)σPσ

fmột(M)vTMmộtv= =(1,Giáo dục,n)

  • M
  • Pσfmột(Pσ)= =Σtôi= =1ntôimộtσ(tôi)
  • σσ(một)σ(một)

Và voila, bạn có một chương trình tuyến tính để sắp xếp. Có vẻ ngớ ngẩn để sắp xếp, nhưng thực tế đây là một phương pháp mạnh mẽ trong tối ưu hóa.


1
một

1
Khi có nhiều giải pháp tối ưu, một số có thể không phải là ma trận hoán vị (nhưng luôn luôn có một số giải pháp tối ưu sẽ là ma trận hoán vị). Nếu hàm mục tiêu là hằng số, thì tất cả các giải pháp khả thi là tối ưu.
Sasho Nikolov

1
@Turbo chương trình tuyến tính được viết hoàn toàn trong câu trả lời này. Rõ ràng nó không có ràng buộc tích hợp. Tôi sẽ không cố gắng trả lời câu hỏi thứ hai của bạn. Hãy ngồi xuống và cố gắng viết GI như tối ưu hóa một hàm tuyến tính trên các ma trận ngẫu nhiên gấp đôi, như cách tôi đã làm ở đây để sắp xếp. Xem cho chính mình nơi nó thất bại.
Sasho Nikolov

1
một

1
một
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.