Кстати, обычная задача ЛП полиномиально разрешима. А условие целочисленности сильно усложняет задачу: - она теряет свойства выпуклости и непрерывности. И в худшем случае приходится перебирать все варианты.
Условие целочисленности решения задачи ЛП.
Для того, чтобы x было целочисленным можно потребовать, чтобы все были целыми. Для этого достаточно, чтобы был равен ±1. - это n равенств, которые выбираются способами из m неравенств.
Квадратная целочисленная матрица A называется унимодулярной, если ее определитель равен ±1 или 0. Матрица размера , где называется вполне унимодулярной, если все ее определители n-го порядка равны ±1 или 0.
Критерий полной унимодулярности.
Матрица размерности m×n, m≥n, состоящая из элементов 0, 1, -1, является вполне унимодулярной, если в каждом столбце содержится не более 2-х ненулевых элементов, а строки можно так разбить на 2 подмножества, что для каждого столбца с двумя ненулевыми элементами оба элемента лежат в одном подмножестве тогда и только тогда, когда эти элементы имеют разные знаки.
Доказательство проводится индукцией по размерности матриц.
Пусть для некоторого k критерий выполняется. Проверим его для k+1.
1) Существует столбец из нулевых элементов Þ определитель = 0.
2) Существует столбец с одним ненулевым элементом Þ определитель k+1-го порядка = ±1 (-1)*(определитель k-го порядка)= ±1.
3) Столбец имеет два ненулевых элемента. ???
Линейная комбинация строк равна 0 Þ определитель = 0. ■
Задача о назначениях.
Есть n работников и n работ. Если i-й работник будет выполнять j-ю работу, то будет достигнута некоторая полезность cij. Как назначить работников на работы, чтобы суммарная полезность была максимальной? Пусть =1, если i-й работник выполняет j-ю работу, и 0, если нет. При этом: и
1) Каждый работник может выполнять только одну работу, т.е. "i .
2) Каждая работа выполнялась только одним работником, т.е. "j .
Снимем условие целочисленности и запишем ограничения 1-2 в виде::
x11+x21+…+xn1 =1 x11+x12+…+x1n =1
… и … ,
x1n+x2n+…+xnn =1 xn1+xn2+…+xnn =1
В матричной форме Ax = 1, где (x11 … x1n x21 … x2n ... xn1 ... xnn), а матрица A имеет вид:
1 |
… |
0 |
1 |
… |
0 |
… |
1 |
… |
0 |
0 |
E |
0 |
0 |
E |
0 |
… |
0 |
E |
0 |
0 |
… |
1 |
0 |
… |
1 |
… |
0 |
… |
1 |
1 |
… |
1 |
0 |
… |
0 |
… |
0 |
… |
0 |
0 |
… |
0 |
1 |
… |
1 |
… |
0 |
… |
0 |
0 |
… |
0 |
0 |
… |
0 |
… |
1 |
… |
1 |
В этой матрице в каждом столбце ровно два ненулевых элемента Þ матрица вполне унимодулярна и " квадратная подматрица имеет определитель 0, -1 или 1. Þ Решение ЛП с такой матрицей будет заведомо целочисленным Þ ЗН – полиномиально разрешима. Заметим, что более эффективным для ЗН является венгерский алгоритм, имеющий трудоемкость O(n3).
Задача коммивояжера.
Есть матрица расстояний между городами. Нужно
объехать все города, побывав в каждом ровно один раз, и вернуться в исходный
пункт. Пусть X = {xij}, где xij =1, если из i-го города едем в j-й,
иначе xij =0.
Цель: при условии, что матрица X
удовлетворяет ограничениям:
(1) т.е. из каждого города можно выехать только в один город, (2) т.е. в каждый город можно въехать только из одного города.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.