Giải pháp lập trình tuyến tính trong một lần với các biến được sắp xếp


9

Tôi có một gia đình của các vấn đề quy hoạch tuyến tính: Tối đa hóa chịu Một x b , x 0 . Các phần tử của A , bc là các số nguyên không âm, c hoàn toàn dương. ( x cũng không thể tách rời nhưng tôi sẽ lo lắng về điều đó sau.)cxAxbx0Abccx

Nó thường xảy ra trong ứng dụng của tôi rằng các hệ số c là như vậy mà một đơn giản hóa thuật toán một đường chuyền cho các giải pháp tối ưu cho mọi sự lựa chọn của b : các thuật toán một đường chuyền quyết định các yếu tố x 1 , ... , x n theo thứ tự, chọn mỗi x j là giá trị lớn nhất có thể phù hợp với các giá trị đã được xác định x 1 , ... , x j - 1 . Trong ngôn ngữ đơn giản, chuỗi nhập biến chỉ là x 1 đến x nAcbx1,,xnxjx1,,xj1x1xnvà nó chấm dứt sau bước. Điều này tiết kiệm rất nhiều thời gian so với đơn giản đầy đủ.n

Thuật toán này hoạt động khi các cột của và các phần tử của c đã được sắp xếp từ "rẻ" đến "đắt". Biến "giá rẻ" là một cột của A với các giá trị thường nhỏ, trong đó phần tử tương ứng của c là lớn: với phần tử đó của x, bạn nhận được rất nhiều đầu ra với không nhiều yêu cầu về ràng buộc b . Vì vậy, thuật toán chỉ nói "làm những thứ dễ dàng đầu tiên."AcAcxb

Câu hỏi của tôi là: tính chất nào của c sẽ đảm bảo với chúng ta rằng thuật toán đơn giản này hoạt động cho tất cả b ? Phỏng đoán ban đầu của tôi là các phần tử khác không của A sẽ tăng lên trong mỗi hàng, nhưng điều đó không chính xác.AcbA

Dưới đây là một số ví dụ, tất cả đều có : A 1 = ( 1 1 1 1 2 3 3 2 0 ) , A 2 = ( 0 0 1 3 0 2 0 3 2 ) , A 3 = ( 1 1 1 1 0 0 1 0 1 ) , A 4c=(1,1,1)A1=(111123320)A2=(001302032)A3=(111100101) . Đối với tất cả những điều này, thuật toán tuần tự đưa ra giải pháp tối ưu cho tất cả các giá trị của b (bằng thử nghiệm bằng số). A 3 là số duy nhất mà tất cả các hoán vị của cột cũng hoạt động. A 1 A 3 đặc biệt khó hiểu, vì ( 1 , 1 , 3 ) trông đắt hơn ( 1 , 3 , 0 ) ( 1 ,A4=(101010011)bA3A1A3(1,1,3)(1,3,0) đắt hơn ( 1 , 0 , 0 ) .(1,1,1)(1,0,0)

Tôi sẽ vô cùng biết ơn về bất kỳ gợi ý nào cho văn học, cho bất kỳ vấn đề nào như thế này, hoặc bất kỳ đề xuất nào cả. Phải có những trường hợp khác trong đó một số biến có thể được xác định là "rẻ hơn" so với những biến khác và có thể được thực hiện một cách an toàn trước tiên. Với tất cả các công việc đã được thực hiện về lập trình tuyến tính trong nhiều năm qua, có vẻ như một cái gì đó tương tự đã xuất hiện, nhưng tôi không thể tìm thấy nó.

Câu trả lời:


4

Có lẽ là trường hợp nổi tiếng nhất trong đó một thuật toán tham lam được biết để giải quyết LP là cho trường hợp đặc biệt của vấn đề vận chuyển. Hoffman ("Trên các chương trình tuyến tính đơn giản", trong Convexity , tập 7 của Kỷ yếu Hội thảo về Toán học thuần túy , trang 317-327, 1963) đã chứng minh rằng nếu ma trận chi phí cho một vấn đề vận chuyển (tối đa hóa) thỏa mãn tính chất Monge ( khi 1 i < k n , 1 jcij+cklcil+ckj1i<kn ) sau đó có thể tìm thấy một giải pháp tối ưu theo cách tham lam giống như giải pháp bạn mô tả. 1j<ln

Hoffman cũng có một bài khảo sát (" Về các thuật toán tham lam thành công ") từ năm 1985, trong đó ông thảo luận về các trường hợp đã biết trong đó một thuật toán tham lam đưa ra một giải pháp tối ưu cho LP. Bên cạnh công việc của mình được trích dẫn ở trên (về điều mà ông nói, "hầu hết các vấn đề lập trình tuyến tính được biết đến vào năm 1963] dễ bị thuật toán tham lam là những trường hợp đặc biệt của ý tưởng Monge"), ông đề cập đến cách giải thích lập trình tuyến tính của Edmonds về khái quát hóa matroids và một cuộc thảo luận về trường hợp khi là không âm, trong số những thứ khác.A

Tôi tưởng tượng có nhiều kết quả gần đây, nhưng hy vọng điều này ít nhất một phần trả lời câu hỏi của bạn và cung cấp cho bạn một số ý tưởng về nơi khác để tìm.


2
Tôi muốn cảm ơn Giáo sư Spivey về đề nghị của mình. Phải mất một thời gian để theo đuổi các tài liệu tham khảo nhưng tôi sẽ cung cấp một mô tả đầy đủ hơn như là một câu trả lời.
Robert Almgren

3

Nhờ lời đề nghị của Giáo sư Spivey, cuối cùng tôi đã tìm ra thứ mà tôi nghĩ là trạng thái của nghệ thuật: Ulrich Faigle, Alan J. Hoffman, và Walter Kern, "Một đặc tính của ma trận không tham lam hộp", SIAM J. Disc. Môn Toán. 9 (1996) Trang 1-6. Một ma trận là "tham lam" nếu thuật toán tôi mô tả ở trên đưa ra giải pháp tối ưu cho tất cả . Một ma trận là "hộp tham lam" nếu thuật toán tham lam đưa ra giải pháp tối ưu với điều kiện bổ sung x d cho tất cả b và tất cả d 0 . Rõ ràng, tham lam hộp là một điều kiện mạnh hơn tham lam.bxdbd0

Luôn cho rằng . Faigle, Hoffman và Kern chứng minh rằng A là hộp tham lam khi và chỉ khi nó không có hàm con k × ( k + 1 ) (với bất kỳ k ) nào có dạng ( r 1 s 1c1cn>0Ak×(k+1)kvới mỗirj>0i:si>0ri(r1s1r2s2rksk)rj>0. Trong việc trích xuất các mô hình con, các hoán vị tùy ý của các hàng được cho phép nhưng không được phép cho phép các cột và các tập hợp con của các hàng và cột tùy ý. Do đó, đặc biệt, vớik=1, các phần tử khác 0 trong mỗi hàng củaAphải không tăng.i:si>0risi>1k=1A

Thật không may, trong vấn đề của tôi, ma trận không phải là kẻ tham lam mặc dù tôi vẫn tin rằng họ tham lam. Ví dụ, trong của tôi ở trên, điều kiện bị vi phạm và ma trận này không phải là tham lam mặc dù nó là tham lam. Theo tôi biết, không có kết quả nào trong việc xác định ma trận tham lam.A1


Tôi rất vui vì câu trả lời của tôi đã giúp bạn tìm thấy điều này!
Mike Spivey

3

Ví dụ đơn giản nhất cho một cái gì đó như thế này có thể là vấn đề về chiếc ba lô phân đoạn trong đó các mặt hàng được phép phân đoạn. vấn đề này (và lp kép của nó) có thể được giải quyết bằng cách sắp xếp các mục theo lợi nhuận trên mỗi trọng lượng, chọn chuỗi dài nhất theo thứ tự này là khả thi và phân số hóa mục cuối cùng.

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.