![]() |
|
![]() ![]() ![]() |
|
Einwill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 21.8.2007 Репутация: нет Всего: нет |
Интересует алгоритм решения задачи о назначениях в случае, когда матрица цен содержит только нули или единицы.
Оригинальная Задача о назначениях (Assignment problem) формулируется так: Пусть у нас есть n рабочих и n задач, которые надо выполнить. Матрица nxn описывает наши потери, в случае назначения конкретного рабочего на конкретную задачу. Каждого рабочего можно назначить только на одну задачу, и все задачи должны быть "назначены" кому-либо. Цель -- минимизировать потери. Т.о. в данной матрице надо выбрать n элементов (по одному в каждом столбцу и в каждой строке) так, чтобы сумма выбранных элементов была минимальна. На математическом языке: Для матрицы A надо найти такую перестановку \pi, что \sum A(i,\pi(i)) -- минимальна. Эта задача решается Венгерским алгоритмом (Алгоритмом Куна-Мункера). Это строго-полиномиальный алгоритм, со сложностью O(n^3). Так вот, меня интересует наиболее быстрый алгоритм решения этой задачи для случая, когда матрица состоит только из 0 и 1. Буду благодарен за любые ссылки и подсказки ![]() |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: нет Всего: 11 |
если не ошибаюсь Метод ветвей и границ....
|
|||
|
||||
Einwill |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 21.8.2007 Репутация: нет Всего: нет |
Ну, метод ветвей и границ тут, очевидно, проиграет Венгерскому алгоритму.
Ладно, сам спросил, сам отвечу ![]() Матрицу цен в данном случае можно рассматривать, как двудольный граф (n и n вершин). И тогда мы получаем хорошо изученную задачу паросочетания невзвешенного двудольного графа (Bipartite matching problem). наилучший из известных алгоритмов решает задачу за время O(n^{1/2}*log(n^3/m)), где m -- кол-во ребер в двудольном графе (кол-во единиц в матрице). Таки это быстрее, чем O(n^3) Венгерского алгоритма ![]() Рекомендуются к изучению ссылки, упомянутые тут: http://www.cs.sunysb.edu/~algorith/files/matching.shtml В оссобенности: http://www.avglab.com/andrew/soft.html http://www.cs.sunysb.edu/~algorith/impleme...implement.shtml (Ссылки содержат реализацию на Pascal, C/C++, Modula) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |