7.4: Лінійне програмування
Розглянемо тепер випадок, що вартість - це лінійна функціяn параметрів. Очевидно, що рішення не існує, якщо простір параметрів не обмежений, і дійсно рішення гарантовано знаходиться на кордоні. Ситуація добре проілюстрована в двох вимірах(n=2), приклад яких наведено нижче. Тут показано п'ять лінійних кордонів нерівності; неx допускаються поза можливою областю. У загальному випадку можуть бути присутніми як обмеження рівності, так і нерівності.
.png)
Характер проблеми - все лінійне, і включає нерівність і, можливо, обмеження рівності - допускає спеціальні і потужні алгоритми, які ефективні навіть у дуже великих вимірах, наприклад, в тисячах. У нижчих вимірах ми можемо звернутися до інтуїції, отриманої з фігури, щоб побудувати простіший метод для малих систем, скажімо, до десяти невідомих.
Перш за все, з малюнка видно, що рішення повинно лежати на одній з кордонів. Рішення фактично лежить у вершиніn гіперповерхонь розмірностіn−1. Така гіперповерхня являє собою лінію в двовимірному просторі, площину в тривимірному просторі і так далі. Ми скажемо, що лінія в трипросторі - це перетин двох площин, а значить, еквівалентна двом гіперповерхням розмірності два. Можна перевірити, що гіперповерхня розмірностіn−1 визначається одним рівнянням.
Якщо обмежень рівності немає, то ціn гіперповерхні, що утворюють вершину розв'язку, є підмножиною обмеженьI нерівності. У нас взагалі будеI>n. Якщо існують також обмеженняE<n рівності, то рішення лежить на перетині цих гіперповерхоньE рівності таn−E інших гіперповерхонь, взятих з обмеженьI нерівності. Звичайно, якщоE=n, то у нас є тільки лінійна система для вирішення. Таким чином, ми маємо комбінаторичну задачу; розглянемо лише випадок нерівностей, а потім змішаний випадок.
- Iнерівності, відсутні рівності. nнерівностей визначить вершину розв'язку. Кількість комбінацій рівняньn обмежень середI варіантів єI!/(I−n)!n!. Алгоритм: Для кожної комбінації (індексованоїk, скажімо) по черзі вирішуйте лінійну систему рівнянь, щоб знайти рішенняxk. Переконайтеся, що рішення не порушує жодного з інших обмеженьI−n нерівності. З усіх рішень, які є здійсненними (тобто вони не порушують ніяких обмежень), підберіть оптимальний - він оптимальний.
- Iнерівності,E рівності. Рішення включає всі рівності та обмеженняn−E нерівності. Кількість комбінацій рівняньn−E обмежень середI варіантів єI!/(I−n+E)!(n−E)!. Алгоритм: Для кожної комбінації (індексованої зk) по черзі вирішуйте лінійний набір рівнянь, щоб дати кандидатське рішенняxk. Переконайтеся, що рішення не порушує жодного з інших обмеженьI−n+E нерівності. З усіх посильних рішень підберіть оптимальний - він оптимальний.
Наведений вище приблизний рецепт передбачає, що жодна з гіперповерхонь не паралельна; паралельні обмеження не перетинаються і не існує розв'язку лінійного набору рівнянь. На щастя, такі випадки можуть бути легко виявлені (наприклад, шляхом перевірки на сингулярність матриці) і класифікуються як нездійсненні. На наведеному вище малюнку,I=5 іn=2. Звідси є5!/(5−2)!2!=10 комбінації, щоб спробувати: AB, AC, AD, AE, BC, BD, BE, CD, CE, DE. Лише п'ять очевидні, оскільки деякі перехрестя знаходяться за межами зазначеної області (Чи можете ви знайти їх усі?).
Підхід лінійного програмування є надзвичайно цінним у багатьох сферах політики та фінансів, де витрати масштабуються лінійно з кількістю, а нерівності є звичайним явищем. Існує також безліч інженерних додатків, через поширеність лінійного аналізу.