Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Examen.docx
Скачиваний:
13
Добавлен:
29.10.2018
Размер:
5.19 Mб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]