Алгоритм сопоставления пар - PullRequest
3 голосов
/ 22 декабря 2010

Я работаю над приложением rails, которое требует постоянного сопоставления пользователей вместе. По сути, мне нужен алгоритм, который будет принимать в качестве входных данных список пользователей и возвращать список пар, которые лучше всего соответствуют. Пользователи считаются хорошими совпадениями по таким критериям, что у них больше общих интересов или расстояние между ними. В общем, мне нужно иметь возможность настроить то, что считается «хорошим соответствием», но мне просто нужно направление для алгоритма, который будет принимать набор пользователей и возвращать набор пар.

Если это поможет, у меня есть метод в модели пользователя, который принимает в качестве параметра другого пользователя и возвращает оценку его соответствия. Мне нужна помощь, чтобы использовать это в массовом сопоставлении.

Я планирую, чтобы пользователи заходили в таблицу, а затем периодически выполняли задание cron по списку, чтобы найти наилучшую пару для всех. У кого-нибудь есть идеи?

Большое спасибо!

1 Ответ

6 голосов
/ 22 декабря 2010

Алгоритм Джека Эдмондса находит соответствие максимального веса в общем (не двудольном) графике.

У Владимира Колмогорова есть статья и реализация в C ++.


Отредактировано, чтобы добавить: Если вы не возражаете против получения наилучшего соответствия и хотите что-то, что легко вычислить, то почему бы не использовать простой жадный алгоритм?На каждом этапе объедините двух пользователей с самым высоким совпадением очков.Затем выполните сопряжение двух пользователей с самым высоким совпадением оценок среди оставшихся пользователей и т. Д.

...