![]() |
|
|
![]()
|
|
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
Задача:
дан взвешенный граф, найти в нем паросочетание с максимальной суммой весов ребер Насколько я понимаю, суть решения сводится к генерации всех остовных деревьев, построению на их основе паросочетаний и выделению из этого множества искомого? хочу услышать ваши идеи, может все гораздо проще? |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Я так понимаю, имеется в виду, что в первую очередь надо максимизировать мощность паросочетания, во вторую его вес?
Тогда это алгоритм Эдмондса. Я, правда, разбирался недавно только с невзвешенным случаем (и реализацией за N^3), с ним могу помочь. Судя по книге Кристофидеса, алгоритм для взвешенного графа базируется на нём. Я не особо вчитывался, но думаю, что алгоритм примерно такой же, просто для нахождения увеличивающих цепей вместо обхода в ширину используется Дейкстра (хотя, возможно, я не прав). |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
Как раз то что доктор прописал, maxdiver, в самую точку
И еще буду ооочень благодарен если приведешь ссылочки на литературу, где про него рекомендуешь подробнее ознакомиться (я только поверхностно знаком), и, совсем уж для полного щастья - код |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Ну по поводу невзвешенного паросочетания я много статей перерыл, ну и как обычно на свой сайт добавил
e-maxx.ru/algo/matching_edmonds Там вся теория (пока бета-версия, док-ва ещё перепроверить надо) и проверенный на нескольких олимпиадных сайтах код. Если литература, то описание есть в "Теория графов" Кристофидес, но его изложение мне не очень нравится, хотя суть алгоритма можно понять и по ней. Вроде неплохо описано в "Комбинаторная оптимизация" Пападимитриу. Но больше информации лично я почерпнул из статей: "Sketchy Notes on Edmonds’ Incredible Shrinking Blossom Algorithm for General Matching" Tarjan, "Edmonds’s Non-Bipartite Matching Algorithm" - лекции из унив. Berkeley, лекции "Matching Algorithms" Muller-Hannemann'а (которые судя по всему перепечатаны из книги Tarjan'а "Data structures and network algorithms" По поводу взвешенного случая - в Кристофидесе и Пападимитриу есть они, также должны быть ещё в каких-нибудь статьях, но я специально не искал этого. Это сообщение отредактировал(а) maxdiver - 24.2.2009, 18:48 |
|||
|
||||
| aram90 |
|
|||
|
Bug hunter Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Где: Yerevan, Armenia Репутация: 1 Всего: 3 |
Есть алгоритм, называется Венгерский Алгоритм (Hungarian Algorithm)
Также порекомендую эту ссылку, "Задача о назначениях" http://vuz.exponenta.ru/PDF/MPEI/NAZN/naznach.html |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
aram90, вообще-то это только для двудольных графов пойдёт.
Для них, кстати, есть прекрасная реализация венгерского алгоритма за N^3, сделанная Андреем Лопатиным. Я думаю, в интернете можно найти. Если кому надо, могу и здесь выложить. Но к задаче данного топика это слабо относится. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |