2013-04-23 3 views
0

У меня проблема. Рассмотрим пользователей с разным весом, которые зависят от текущего канала .i.e. если канал хороших весов высок. Мне приходилось спаривать пользователей таким образом, чтобы общий вес системы был максимальным. Я расскажу об этом. Рассмотрим 4 канала и 8 пользователей, теперь я должен разместить парных пользователей в каждом канале таким образом, чтобы общая сумма весов была максимальной, и все пользователи должны быть сопряжены. Пожалуйста, предложите несколько полиномиальных алгоритмов времени, отличных от оптимальной (грубой силы), которая становится сложной, когда число пользователей велико, что очень помогло бы мне.Полиномиальный алгоритм спаривания пользователя времени

Thanks and regards, srinu.

+0

Это звучит довольно похоже на «проблему стабильного брака» (и даже ближе к ее менее известному родственнику - «проблема взвешенного соответствия»). –

ответ

1

Владимир Колмогоров опубликовал в 2009 году Blossom V: a new implementation of a minimum cost perfect matching algorithm, который предоставляет полиномиальный алгоритм для «задачи вычисления идеального соответствия минимальной стоимости в неориентированном взвешенном графе».

Изменение максимальной стоимости тривиально, изменяя знак ваших весов.

Этот алгоритм имеет наихудшую сложность O (n^3m) (но для типичных примеров часто намного быстрее). n - количество узлов, а m - количество ребер. В вашем случае я считаю, что все n^2 ребра присутствуют, поэтому сложность O (n^5).

Быстрые алгоритмы, если ваш граф двудольный (например, пользователи делятся на две категории, такие как мужчина и женщина, где вы всегда должны соответствовать мужчине с женщиной), но я не верю, что это так?

Программная реализация этого алгоритма here.

+0

Результирующий граф будет выглядеть как полный двухсторонний граф, где каждый пользователь сопоставляется с каждым другим пользователем, и я должен решить эту проблему, так что после того, как сопоставленные пользователи не будут сопоставлены с другими пользователями. Спасибо за вашу ценную информацию. Не могли бы вы предложить мне алгоритмы для спаривания пользователей, если мой график будет полным двудольным графом (кроме венгерского алгоритма), потому что он уже используется в исследованиях для планирования). – srinu