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 , b và c 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.)
Nó thường xảy ra trong ứng dụng của tôi rằng các hệ số và 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 nvà 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 đủ.
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."
Câu hỏi của tôi là: tính chất nào của và 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.
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 4 . Đố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 và A 3 đặc biệt khó hiểu, vì ( 1 , 1 , 3 ) trông đắt hơn ( 1 , 3 , 0 ) và ( 1 , đắt hơn ( 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ó.