- •1.3.1 Правила и особенности перехода к двойственной задаче.
- •2.6. Использование искусственной переменной в программировании симплекс-методом.
- •2.7.3.Алгоритм модифицированного симплекс-метода.
- •4.2.3. Пример решения задачи о назначении венгерским методом.
- •4.3.2.1. Пример решения задачи о назначении венгерским методом.
- •4.4.1. Алгоритм метода Мака
- •4.4.2. Пример решения задачи о назначении методом Мака.
4.3.2.1. Пример решения задачи о назначении венгерским методом.
Пример 2. Исходная матрица:
При решении задачи используем следующие обозначения:
Знак выделения “+”, подлежащий уничтожению, обводим кружком; цепочку, как и ранее, указываем стрелками.
Предварительный этап. Отыскиваем максимальный элемент первого столбца – 60. Вычитаем из него все элементы этого столбца. Аналогично для получения второго, третьего, четвертого и пятого столбцов новой матрицы вычитаем все элементы этих столбцов от 60, 65, 67, 61 соответственно. Получим матрицу С'(C'~C).
Отыскиваем минимальный элемент первой строки – 0. Вычитаем его из всех элементов строки. Повторяем аналогичную процедуру со всеми строками, вычитая из элементов каждой строки 0, 0, 7, 6 соответсвенно.
Так как в каждой строке матрицы есть нуль, то процесс приведения матрицы заканчивается. Далее ищем и отмечаем знаком “*” независимые нули в С0, начиная с первой строки.
|
+ |
+ |
+ |
|
+ |
|
0 |
0* |
4 |
4 |
1 |
|
1 |
1 |
5 |
7 |
0* |
|
1 |
4 |
0* |
0 |
1 |
|
0* |
7 |
14 |
14 |
5 |
|
0 |
7 |
15 |
17 |
32 |
Первая итерация. 1-й этап:
+ |
+ |
+
|
|
+ |
|
|
0 |
0* |
4 |
4 |
1 |
|
|
1 |
1 |
5 |
7 |
0* |
|
|
1 |
4 |
0* |
0' |
1 |
+ |
|
0* |
7 |
14 |
14 |
5 |
|
|
0 |
7 |
15 |
17 |
32 |
|
Выделяем знаком “+” первый, второй, третий и четвертый столбцы матрицы С0, которые содержат 0*.
Просматриваем невыделенный четвертый столбец, находим в нем невыделенный нуль С34 = 0, отмечаем его штрихом и выделяем знаком “+” третью строку. Просматриваем эту строку, находим в ней элемент С33 = 0* и уничтожаем знак выделения третьего столбца, содержащего 0*. Затем просматриваем третий столбец – в нем нет невыделенных элементов. Переходим к третьему этапу.
3-й этап:
0 |
0* |
0 |
0 |
1 |
1 |
1 |
1 |
3 |
0* |
5 |
9 |
0* |
0 |
5 |
0* |
7 |
10 |
10 |
5 |
0 |
7 |
11 |
13 |
32 |
Находим минимальный элемент в невыделенной части матрицы С0 (т.е. элементы, которые лежат в столбцах и строках, не отмеченных знаком “+”). Он равен h = 4.
Вычтем h = 4 из всех элементов невыделенных строк (т.е. всех, кроме третьей) и прибавим ко всем элементам выделенных столбцов (первого, второго и пятого). Получим матрицу С'1 и перейдем к первому этапу.
Далее поступаем аналогично, пока в строке, где находится невыделенный нуль, не окажется нуля со звездочкой. Отметив этот 0 штрихом, переходим ко второму этапу. В данном случае это С51 = 0.
1-й этап |
|
|
|
|
|
|||||
|
+ |
+
|
+
|
|
+ |
|
||||
|
0 |
0* |
0' |
0 |
1 |
+ |
||||
|
1 |
1 |
1 |
3 |
0* |
|
||||
|
5 |
9 |
0* |
0' |
5 |
+ |
||||
|
0* |
7 |
10 |
10 |
5 |
|
||||
|
0 |
7 |
11 |
13 |
32 |
|
3-й этап |
|
|
|
|
|||
|
1 |
0* |
0 |
0 |
2 |
||
|
1 |
0 |
0 |
2 |
0* |
||
|
6 |
9 |
0* |
0 |
6 |
||
|
0* |
6 |
9 |
9 |
5 |
||
|
0 |
6 |
10 |
12 |
32 |
1-й этап |
+
|
+
|
|
+
|
|
|
|
+ |
|
|
|
|
|
|
1 |
0* |
0' |
0 |
2 |
+ |
|
1 |
0' |
0' |
2 |
0* |
+ |
|
6 |
9 |
0* |
0' |
6 |
+ |
|
0* |
6 |
9 |
9 |
5 |
|
|
0 |
6 |
10 |
12 |
32 |
|
|
|
|
|
|
|
|
3-й этап |
|
|
|
|
||
|
6 |
0* |
0 |
0 |
2 |
|
|
6 |
0 |
0 |
2 |
0* |
|
|
11 |
9 |
0* |
0 |
6 |
|
|
0* |
1 |
4 |
4 |
0 |
|
|
0 |
1 |
5 |
7 |
27 |
+ 1-й этап |
+
|
+
|
|
+
|
|
||||
|
|
|
|
|
|
|
|||
|
6 |
0* |
0' |
0 |
2 |
+ |
|||
|
6 |
0' |
0' |
2 |
0* |
+ |
|||
|
11 |
9 |
0* |
0' |
6 |
+ |
|||
|
0* |
1 |
4 |
4 |
0' |
+ |
|||
|
0' |
1 |
5 |
7 |
27 |
+ |
2-й этап
6 |
0* |
0' |
0 |
2 |
6 |
0' |
0' |
2 |
0* |
11 |
9 |
0* |
0' |
6 |
0* |
1 |
4 |
4 |
0' |
0' |
1 |
5 |
7 |
27 |
Второй этап. Начиная с элемента С51 = 0’, строим цепочку, двигаясь от него по столбцу. Находим нуль со звездочкой С41 = 0*, далее от него движемся вдоль четвертой строки и находим 0’(С45), от этого элемента движемся вдоль пятого столбца к С25 = 0*, далее от него движемся вдоль второй строки и находим 0’(С23), от него движемся по третьему столбцу и находим 0*(С33), последним элементом цепочки является элемент 0’(С34),. Таким образом, цепочка построена: 0’51 - 0*41 - 0’45 - 0*25 - 0’23 - 0*33 - 0’34. Заменяем штрих на звездочку и уничтожаем звездочки над четными элементами цепочки, а также все знаки выделения столбцов и строк. На этом первая итерация заканчивается. В результате число независимых нулей увеличилось на единицу. В данном примере уже после первой итерации количество независимых нулей (0*) стало равно 5 (размерности матрицы С), и поэтому алгоритм заканчивает работу. Искомые элементы назначения соответствуют позициям независимых нулей матрицы С3 (т.е. 0*).
Соответствующее значение целевой функции: f = 54 + 60 + 60 + 67 + 49 = 290