Линейное программирования и симплекс метод (6 октября 2016)
- [10 минут] LP и ILP
- Задача линейного программирования (LP) в общем виде
- Задача целочисленного линейного программирования (ILP) в общем виде
- NP-полнота ILP
- LP решается за полином: метод Эллипсоидов, метод внутренней точки, симплекс-метод
- [15 минут] Примеры задач
- LP : Кратчайшее расстояние; Поиск потенциалов.
- LP : Максимальный поток; Поток минимальной стоимости.
- LP : Многопродуктовый поток (задача про два непересекающихся потока s1 → размера f1; s2 → t2 размера f2).
В отличии от предыдущих задач не решается иначе как "свести к LP, запустить симплекс".
- ILP : Паросочетание в произвольном графе минимального веса. На самом деле решится за полином.
- ILP : Задача про два непересекающихся пути. NP-трудна. Почему не следует из предыдущей?
- ILP : Взвешенное вершинное покрытие
- LP : Паросочетание в двудольном графе минимального веса. Казалось бы ILP, но решение, найденное симплекс методом обязательно будет целым.
- [15 минут] Канонический вид и сведения
- Канонический вид: Ax = b, x ≥ 0
- Сведение неравенства к равенству
- Сведение знаковой переменной к беззнаковой
- Канонический базисный вид: A = (E|C). n уравнений, m переменных, m ≥ n, x1..n = linear(xn+1, ..., xm)
- Приведение к каноническому базисному виду: Гаусс. Вообще LP не проще Гаусса
;-)
− Перерыв −
- [45 минут] Симплекс метод
- [Сведение к базисному каноническому виду] + [Поиск начального решения] + [Поиск улучшения начального решения до оптимального]
- Поиск начального решения: решим LP, A(x-y) = b, x ≥ 0, y ≥ 0, ∑y → min, у этой LP уже есть начальное решение Гауссом.
- Lm: Пусть A − матрица n линейно независимых уравнений над m переменными (m ≥ n) ⇒ ∃ решение задачи LP с не более чем n ненулевыми компонентами.
- Док-во: пусть есть хотя бы n+1 ненулевой x; найдём вектор dx : A * dx = 0 and dx != 0; найдём вещественное t : x + dx*t >= 0, и один из x занулился
- Будем поддерживать инвариант "ненулевые x-ы соответствуют только столбцам E" и постепенно улучшать решение. Начальное решение удовлетворяет инварианту.
- Фаза улучшения: попытаться одну нулевую переменную сделать не нулевой, при этом одна ненулевая занулится.
- Псевдокод
- Решение за C(m,n)n3 перебором базисных планов.