Рішення лінійного програмування за один прохід із впорядкованими змінними


9

У мене є сім'я проблем лінійного програмування: максимізувати відповідно до ,cxAxbx0. ЕлементиA, b, і c - це неотримані цілі числа, cсуворо позитивний. (x також має бути цілісним, але я буду хвилюватися про це пізніше.)

У моїй заяві часто буває, що коефіцієнти A і c такі, що спрощений однопрохідний алгоритм дає оптимальне рішення для кожного вибору b: алгоритм однопрохідного визначення елементів х1,,хн послідовно, вибираючи кожен хj бути максимально можливим значенням, що відповідає вже визначеним значенням х1,,хj-1. У простому мові послідовність введення змінних справедливах1 до хн, і він припиняється після нкроки. Це економить багато часу порівняно з симплекс-набором.

Цей алгоритм працює, коли стовпці А та елементи cбули відсортовані від "дешевого" до "дорогого". Змінна "дешева" - це стовпецьА із загалом малими значеннями, для яких відповідний елемент c великий: для цього елемента х ви отримуєте велику кількість продукції з не надто великим попитом на обмеження б. Тож алгоритм просто говорить: "Зробіть спочатку легкі речі".

Моє запитання: яка властивість А і c запевнив би нас, що цей спрощений алгоритм працює для всіх б? Моя початкова думка полягала в тому, що ненульові елементиА повинно збільшуватися в кожному ряду, але це не правильно.

Ось декілька прикладів, все з c=(1,1,1): А1=(111123320), А2=(001302032), А3=(111100101), А4=(101010011). Для всіх цих ситуацій послідовний алгоритм дає оптимальне рішення для всіх значеньб (шляхом чисельного експерименту). А3 є єдиним, для якого також працюють усі перестановки стовпців. А1 і А3 особливо збиваючі, оскільки (1,1,3) виглядає дорожче, ніж (1,3,0) і (1,1,1) дорожче, ніж (1,0,0).

Я був би вдячний за будь-які вказівки до літератури, за будь-які подібні проблеми чи взагалі будь-які пропозиції. Мабуть, були й інші випадки, коли деякі змінні можна визначити «дешевшими», ніж інші, і їх можна спокійно зробити першими. Зважаючи на всю роботу, яку робили над лінійним програмуванням протягом багатьох років, схоже, що щось подібне, мабуть, вийшло, але я не зміг його знайти.

Відповіді:


4

Напевно, найвідоміший випадок, коли відомий жадібний алгоритм для вирішення LP - це особливий випадок транспортної проблеми. Гоффман ("Про прості лінійні програми", у Convexity , т. 7 Звіту симпозіумів з чистої математики , стор. 317-327, 1963) довів, що якщо матриця витрат на проблему транспортування (максимізації) задовольняє властивість Монжа (cij+cklcil+ckj коли 1i<kn, 1j<ln) тоді оптимальне рішення можна знайти в жадібному вигляді, як описане вами.

У Гофмана також є оглядовий документ (« Про жадібні алгоритми, які досягають успіху ") 1985 року, в якому він обговорює відомі випадки, коли жадібний алгоритм дає оптимальне рішення для LP. Крім цитованої вище роботи (про яку він говорить, "більшість проблем лінійного програмування, відомих [до 1963 р.], Що сприйнятливі до жадного алгоритму, були особливими випадками ідеї Монжа"), він згадує лінійну інтерпретацію програмування Едмонда узагальнення матроїдів та обговорення випадку, колиA є негативним, серед іншого.

Я думаю, є останні результати, але, сподіваємось, це хоча б частково відповідає на ваше запитання і дає вам кілька ідей, де ще шукати.


2
Я хотів би подякувати проф. Співі за його пропозицію. Щоб переслідувати посилання, мені знадобився певний час, але я надам більш повний опис як відповідь.
Роберт Альмгрен

3

Завдяки пропозиції професора Співі я нарешті виявив те, що, на мою думку, є сучасним: Ульріх Фейгл, Алан Дж. Гоффман та Уолтер Керн, "Характеристика негативних коробкових жадних матриць", SIAM J. Disc. Математика. 9 (1996) С. 1-6. Матриця є "жадібною", якщо алгоритм, який я описав вище, дає оптимальне рішення для всіхb. Матриця "полегшена", якщо жадібний алгоритм дає оптимальне рішення з додатковою умовоюxd для усіх b і все d0. Ясна річ, що жадібний - це сильніший стан, ніж жадібний.

Завжди вважайте це c1cн>0. Фейгл, Гофман та Керн це доводятьА поле жадібне, якщо і тільки якщо його немає к×(к+1) (для будь-якого к) підматриця форми (r1с1r2с2rкск) з кожним rj>0 і i:сi>0riсi>1. Витягуючи підматриці, дозволені довільні перестановки рядків, але не стовпці, і довільне підмноження рядків і стовпців допускається. Таким чином, зокрема, ск=1, ненульові елементи в кожному рядку А повинні бути не зменшуючими.

На жаль, виявляється, що в моїй проблемі матриці не є жадібними, хоча я все ще вважаю, що вони жадібні. Наприклад, у моїхА1вище умова порушена, і ця матриця не є коробкою, хоча вона жадібна. Наскільки мені відомо, результатів щодо виявлення жадібних матриць немає.


Я радий, що моя відповідь допомогла вам знайти це!
Майк Співі

3

Найпростішим прикладом для подібного може бути проблема дробового загину, коли предмети дозволяються дробити. цю проблему (та її lp-подвійну) можна вирішити, сортуючи предмети за вагою за вагою, вибираючи найдовшу послідовність у цьому порядку, яка є можливою та фракціонізує останній елемент.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.