Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача о назначениях для матрицы из 0 и 1, Случай, когда эл-ты матрицы только 0 и 1 
:(
    Опции темы
Einwill
  Дата 21.8.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.8.2007

Репутация: нет
Всего: нет



Интересует алгоритм решения задачи о назначениях в случае, когда матрица цен содержит только нули или единицы.

Оригинальная Задача о назначениях (Assignment problem) формулируется так: 
Пусть у нас есть n рабочих и n задач, которые надо выполнить. Матрица nxn описывает наши потери, в случае назначения конкретного рабочего на конкретную задачу. Каждого рабочего можно назначить только на одну задачу, и все задачи должны быть "назначены" кому-либо. Цель -- минимизировать потери.

Т.о. в данной матрице надо выбрать n элементов (по одному в каждом столбцу и в каждой строке) так, чтобы сумма выбранных элементов была минимальна. На математическом языке: Для матрицы A надо найти такую перестановку \pi, что \sum A(i,\pi(i)) -- минимальна.

Эта задача решается Венгерским алгоритмом (Алгоритмом Куна-Мункера). Это строго-полиномиальный алгоритм, со сложностью O(n^3).

Так вот, меня интересует наиболее быстрый алгоритм решения этой задачи для случая, когда матрица состоит только из 0 и 1. Буду благодарен за любые ссылки и подсказки smile Реализации на любых языках программирования тоже приветствуются.
PM MAIL   Вверх
ne0n
Дата 21.8.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



если не ошибаюсь Метод ветвей и границ....
PM MAIL ICQ   Вверх
Einwill
Дата 21.8.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.8.2007

Репутация: нет
Всего: нет



Ну, метод ветвей и границ тут, очевидно, проиграет Венгерскому алгоритму.

Ладно, сам спросил, сам отвечу smile

Матрицу цен в данном случае можно рассматривать, как двудольный граф (n и n вершин). И тогда мы получаем хорошо изученную задачу паросочетания невзвешенного двудольного графа (Bipartite matching problem). наилучший из известных алгоритмов решает задачу за время O(n^{1/2}*log(n^3/m)), где m -- кол-во ребер в двудольном графе (кол-во единиц в матрице). Таки это быстрее, чем O(n^3) Венгерского алгоритма smile И, что удивительно, это быстрее, чем "разумноожидаемое" O(n*m).

Рекомендуются к изучению ссылки, упомянутые тут: 
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)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0947 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.