Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритм розв’язування задачі про призначення Угорським методом

Якщо після першого етапу виділено менше ніж n нулів, виконується другий етап, який являє собою ітераційну процедуру збільшення кількості виділення нулів. Для поданої приведеної матриці збільшити кількість виділених нулів можна за рахунох вибору іншої сукупності виділених нулів. У основі методу пошуку такої сукупності покладено ідею побудови почергових ланцюжків, яку можна пояснити на прикладі. Припустимо у вихідній приведеній матриці виділено перший нуль таким чином

Збільшення кількості виділених нулів

0* 0

0 1

Тоді неможливо додати до виділеного нуля жоден нуль. В той же час, якщо врахувати, що у першому рядку є ще один нуль-претендет на виділення, і у першому стовпчику також є такий нуль, то можна побудувати почерговий ланцюжок “від невиділеного нуля за стовпчиком до виділеного, і далі від виділеного нуля за рядком до невиділеного”. Будемо надалі позначати невиділені нулі-претенденти як 0.

0* 0

0 1

Тепер, якщо у побудованому почерговому ланцюжку зняти мітку у нуля з зірочкою, а у нулів із штрихом замінити штрих на зірочку, то можна отримати більшу кількість виділених нулів

0 0*

0* 1

Зрозуміло, що кількість нулів у почерговому ланцюжку може бути і більшою. Головне, щоб ланцюжок починався і закінчувався нулем із штрихом.

У тому разі, коли у приведеній матриці не існує жодного почергового ланцюжка, а кількість виділених нулів менше n, переходять до еквівалентної матриці з більшою кількістю нулів-претендентів. При цьому так перетворюється матриця, щоб виділені нулі зберігли своє значення.

Перед описом алгоритму наведемо декілька означень. Будемо використовувати термін зайнятий для деяких стовпців, що містять 0*. Інші стовпці будемо вважати вільними. Рядки, що містять 0, будемо завжди вважати зайнятими, а рядки, що не містять 0, - вільними. Елемент, не маючий ніяких позначень і розташований на перетинанні вільного рядка та вільного стовпця, будемо називати вільним.

1. Починаючи з першого рядка, послідовно у кожному рядку (якщо це можливо) виділити один нуль (0*), що не стоїть у стовпчику з вже виділеним нулем. Помітити усі стовпці з 0* як зайняті.

2. Якщо кількість 0* дорівнює n, кінець алгоритму.

3. Якщо матриця не містить вільних нулів, перейти до кроку 7.

4. Проглядаючи послідовно рядки зліва направо, вибрати перший вільний нуль, помітити його як 0 і помітити рядок з цим нулем як зайнятий. Якщо у рядку з цим нулем міститься 0*, зняти мітку зайнятості зі стовпця, утримуючого поданий 0*, і перейти до кроку 3.

5. Починаючи з останнього отриманого 0, побудувати почерговий ланцюжок з нулів: від цього 0 за стовпцем до 0*, від нього за рядком до 0, і так далі, доки це можливо. Ланцюжок завжди закінчується деяким 0.

6. У побудованому ланцюжку зняти зірочки у нулів і потім штрихи у нулів замінити на зірочки. Зняти усі мітки, крім зірочок; усі стовпці з 0* помітити як зайняті, і перейти до кроку 2.

7. Відняти мінімальний вільний елемент від усіх незайнятих рядків і потім додати його до усіх зайнятих стовпців. Перейти до кроку 4.

<== предыдущая лекция | следующая лекция ==>
Властивості задачі про призначення | Продовження прикладу розв’язування задачі про призначення
Поделиться с друзьями:


Дата добавления: 2014-01-13; Просмотров: 895; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.