Решение одной задачи линейного программирования над множествами
В.Г. Кумаров
Мурманский государственный педагогический университет, кафедра алгебры, геометрии и прикладной математики
Аннотация. В современной математике хорошо изучены методы решения задач линейного программирования над произвольными числовыми полями. В работе описан метод решения простейшей транспортной задачи над множествами и приведен пример ее экономического приложения.
Abstract. Methods of solving linear programming problems of numeric fields are well studied in the modern mathematics. This paper includes a method of solving of the elementary transport problem in Boolean and gives an example of its economic application.
1. Введение
В современной математике хорошо изучены методы решения задач линейного программирования над произвольными числовыми полями. При решении же практических задач часто приходится оперировать с такими математическими объектами, как множества. В статье (Lieby Paulette, 2000) приводится метод решения одной экстремальной задачи над конечными множествами с помощью аппарата антицепей.
Цель данной работы - сформулировать аналог транспортной задачи линейного программирования над множествами и привести метод решения этой задачи. Примером экономического применения таких задач может являться следующий.
Предположим, имеется m вузов Ль ..., Am с определенными множествами a1, ..., am видов специалистов, которые должны пройти стажировку в одном из n вузов Bb ..., Bn. Вузы Bb ..., Bn должны обеспечить стажировку определенного множества bb ..., bn видов специалистов. На каждого из специалистов, следующих из вуза Ai в вуз Bj и входящих в перечень Cj, министерством образования выделяется определенная сумма, равная 1 у.е. Необходимо таким образом распределить специалистов по вузам, чтобы общая сумма, выделяемая министерством, была наименьшей.
2. Постановка задачи
Пусть U - некоторое множество; m,neN; для любых i = 1, ..., m, j = 1, ..., n: ai, bj, c^U, множества ai, bj, Cj являются конечными.
Обозначим через Bul(U) частично упорядоченное множество всех подмножеств множества U, упорядоченное по отношению включения с. Это частично упорядоченное множество будем называть в дальнейшем булеаном.
Рассмотрим над булеаном Bul(U) задачу о нахождении среди (mxn)-MarpHU X = (xij) с вектором строчечных сумм (объединений) a = (a1, ..., am) и вектором столбцовых сумм b = (b1, ..., bn) той, которая доставляет минимум функционалу
m n
z = I I I cj П xj |. i=1 j=1
По аналогии с обычным линейным программированием (Нестеров, 1971; Полунин, 1975) назовем такую задачу транспортной. Очевидно, что критерием разрешимости транспортной задачи над булеаном является выполнение равенства aju...uam = bju...ubn.
Отметим некоторые особенности поставленной задачи, на основе которых будем строить ее решение.
1) При конечных a, bj, Cj множество решений S системы уравнений
Гхци...и х1п = а1
I хт1 ^ . • • ^ хтп ат \ (1) |хпи.и Хт1 = ¿1
1х1п^ ... ^ хтп Ьп
является конечным, и при выполнении равенства а1и...иат = Ь1и.иЬп максимальным элементом в этом множестве является вектор
(аП, ..., «1
где для любых i = 1, ..., т,р = 1, ..., п: ссц = aiп Ьj.
2) Оптимальное решение задачи (решение, доставляющее функционалу г минимум) следует искать среди минимальных элементов верхней полурешетки (5", с) (Биркгоф, 1984).
3) Любой минимальный элемент частично упорядоченного множества (5, с) может быть получен из вектора (2) исключением из некоторых его координат определенных элементов.
Для простоты дальнейших рассуждений вектор (х11, ..., х1п, х21, ..., х2п, ..., хт1, ..., хтп) будем задавать матрицей
Гх11 ... х1п^1 X = | х21 ... х2п I
. хт
а при решении транспортной задачи будем пользоваться таблицей вида
С11 х11 с1п х1 п
Ст1 хт1 Стп хтп
= а1
ат
(3)
Ь1
в которой объединены все ее данные.
п
3. Решение задачи
Далее сразу приведем алгоритм решения транспортной задачи над булеаном, обосновывая при необходимости его этапы по ходу изложения.
1) Выяснение разрешимости транспортной задачи путем проверки выполнения равенства а1и...иат = Ь1и.иЬп.
2) Внесение в транспортную таблицу максимального элемента частично упорядоченного множества (5, с): X = (хр) = (а^п Ь/)тхп.
3) Выделение в множествах хр элементов, которые нельзя отбросить, путем просматривания строк и столбцов транспортной таблицы. Элемент а множества хр будет выделен тогда и только тогда, когда он не содержится больше ни в каком другом множестве ^ой строки илир-го столбца матрицы X.
Примеры
С11 с12 с13 = {1 2 3}
{1} {2} {3} {1 2 3}
С21 С22 С23 = {4 5}
_^ {5} {4} {4, 5}
а) С31 С32 С33 = {1 4 6} {1}__^ {4} {1, 4 6}
С41 С42 С43 = {7}
{7} | {7} I 0 I {/}
| | | | | |
{1, 7} {2, 5, 7} {3, 4, 6}
Примеры
С11 {1} С12 {2} С13 {3}
С21 0 с22 {5} С23 {4}
С31 {1} С32 0 С33 {4}
С41 {7} С42 {7} С43 0
В этом примере все элементы оказываются выделенными. Это означает, что существует только одна матрица с заданными векторами строчечных и столбцовых сумм и именно она является оптимальным решением.
{1,3} {1} {2} {9} {3} {2,5} {3,5,7} {1,5}
{2,5,6} {1,7} {8,9} {4,8} {4} 0 {1,6} {1,8}
{6} {7} {7,8} {4,8,9} {7} {2} {2,5,8} {8}
{4} 0 {6} {9} {3} 0 {5} {6}
{1} {3,7} {5,8} {8} {7} {3,5} {2,6,7} {5,8}
= {1,2,5,9} = {1,4,7,8} = {2,4,7,8,9} = {6,9} = {3,5,7,8}
I I I I I I I I
{1,3,7} {4,8,9} {2,3,5} {1,5,6,8}
4) Если все элементы множеств Хр табл. 3 оказываются выделенными, то решение, построенное в таблице, является оптимальным. В противном случае переходим к следующему пункту алгоритма 5).
Докажем далее тот факт, что каждый невыделенный на третьем этапе элемент а располагается в таблице следующим образом:
а ...а ...а а ...а ...а
а .а...а
причем количество строк и столбцов в таком их расположении не меньше двух.
Пусть некоторый невыделенный элемент а встречается в к столбцах с номерами рь ..., ]к и I строках с номерами /ь ..., /¡.
Если хотя бы одно их чисел I или к равно 1, то а должен был бы быть выделенным, что противоречит его выбору. Таким образом, к, ¡>2.
При к,1>2 содержание в множествах хрд (р = ц, ..., ¡¡; д = _/ь ..., рк) элемента а следует из построения опорного решения. Так как к,1>2, то в каждой из строк /ь ..., и каждом из столбцоврь ...,рк элемент а содержится, по крайней мере, в двух множествах и поэтому оказывается невыделенным ни в одном из множеств хрд.
Проведенное доказательство позволяет для каждого невыделенного элемента а определить матрицу Б(а) = (йр1)ик, где ёрд = ^^п{а}!, р = /ь ..., /'¡; д = рь ...,рк. Отметим, что элементы матрицы Б(а) могут принимать лишь два значения: 0 или 1.
5) Оптимизация решения, построенного в табл. 3.
Для оптимизации решения необходимо выяснить, из каких множеств следует удалить невыделенные элементы, а в каких оставить, чтобы, во-первых, сохранить строчечные и столбцовые суммы, а, во-вторых, уменьшить насколько это возможно значение функционала г.
Договоримся у элемента ёрд матрицы Б(а) ставить знак "+", если в соответствующем множестве хрд мы решили оставить элемент а.
Так как для любых / = 1, ..., т,р = 1, ..., п:
I Ср П Хр I = X I Ср п{г}
(4)
то при ёрч = 0 оставление в соответствующем хрд элемента а не влияет на значение функционала. Если же ёрд = 1, то при оставлении в множестве хрд элемента а соответствующее слагаемое в правой части равенства (4) равно 1. Поэтому задача о рациональном удалении невыделенных элементов сводится к задаче о расстановке знаков "+" у элементов матрицы Б(а) таким образом, чтобы: 1) знак "+" был в каждой строке и каждом столбце; 2) со знаком "+" было минимальное число единиц.
Последняя задача решается довольно просто. Расставим знак "+" у всех нулевых элементов матрицы Б(а). Далее поступаем следующим образом:
1) Если во всех строках и столбцах матрицы Б(а) окажется хотя бы один знак "+", то задача о расстановке знаков у элементов этой матрицы решена.
^х
2) Если окажутся строки и столбцы, в которых не будет ни одного знака "+" (это означает, что в этих строках и столбцах стоят одни единицы), то очевидно, знак "+" следует поставить у элементов, стоящих на пересечении этих строк и столбцов.
3) Если без знака "+" окажутся только строки или только столбцы, то знак "+" ставим у одного из их элементов (все равно какого).
Примеры
Г0+ 1 Г1 1 1+ 1) Г0+ 0+ 1 1 D 11 1 0+ 1,11 0+ 1 0+ , 11 0+ 1+ 0+ 1 I. U 0+ 1) 11 1 1+ 1| 11 0+ 1 1 11 10+ 1 1 0+J 10 1 1 0+ 1+J
5.1) Для каждого невыделенного элемента а выписываем матрицу D(a) и расставляем в ней знаки по описанному выше алгоритму.
5.2) Для каждого невыделенного элемента а исключаем из множеств xpq элемента а, соответствующих элементам матрицы D(a) без знака "+". Переходим к пункту 4) алгоритма.
Из алгоритма решения транспортной задачи над булеаном следует, что если транспортная задача разрешима, то
min z = max [ |{i:aea,-n (n cij)}l,l{j:aebJn (n cy) }| ].
j'.aebj i:aeai
Пример. Найдем оптимальное решение, для таблицы б). Имеем,
(1 0+^1 (1 1+^1 (1 0+^1 D(1) = I I, D(5) = I I, D(1) = I 1+ 1 I.
1.0+ 1) 1.0+ 1) U 0+J
{1,3} 0 {2} {9} {3} {2} {3,5,7} {1,5}
{2,5,6} {1,7} {8,9} {4} {4} 0 {1,6} {8}
{6} {7} {7,8} {4,8,9} {7} {2} {2,5,8} 0
{4} 0 {6} {9} {3} 0 {5} {б}
{1} {З,7} {5,8} 0 {7} {3,5} {2,6,7} {8}
= {1,2,5,9} = {1,4,7,8} = {2,4,7,8,9} = {6,9} = {3,5,7,8}
{1,3,7} {4,8,9} {2,3,5} {1,5,6,8}
Таким образом, оптимальным решением является матрица
Г 0 {9} {2} {1,5}! X* = I {1,7} {4} 0 {8} I, I {7} {4,8,9} {2} 0 I 1{3,7} 0 {3,5} {8} ) а минимальное значение функционала, заданного таблицей б), равно 2.
4. Заключение
В работе описан метод решения простейшей транспортной задачи линейного программирования над множествами. По аналогии с ним можно сформулировать алгоритмы решения более сложных транспортных задач. Все эти задачи имеют естественное экономическое применение и позволяют оптимизировать многие экономические процессы.
Литература
Lieby Paulette. Extremal problems in finite sets. Bul. Austral. Math. Soc., N 1, p.175-176, 2000. Биркгоф Г. Теория решеток. M., Наука, 566 c., 1984.
Нестеров Е.П. Транспортная задача линейного программирования. М., Транспорт, 216 е., 1971. Полунин И.Ф. Курс математического программирования. Минск, Высшэйшая школа, 380 е., 1975.