присвоение алгоритма/псевдокода

Я создаю веб-приложение, в котором я пытаюсь распределить пользователей по группам на основе их предпочтений. В моем приложении у меня есть 1 таблица, в которой хранится информация о пользователях, и 1 таблица, в которой хранятся выборы пользователей.

Пользователи должны выбрать хотя бы один вариант из 10.

Я пытаюсь написать алгоритм, который будет удовлетворять следующим правилам:
1. в группе должно быть от 4 до 8 пользователей
2. каждый пользователь должен быть не более чем в одной группе
3. каждый пользователь в группе, иметь хотя бы один предпочтительный выбор в общем
4. и желательно, чтобы каждый пользователь принадлежал к группе / как можно больше

но пока не повезло. Кто-нибудь знает, как найти такое решение? Также будет высоко оценен алгоритм, который найдет хорошее решение (не лучшее).


person zlosim    schedule 07.03.2011    source источник


Ответы (2)


Эта проблема похожа на Мисс Маннерс 2009 пример Drools Planner, который предназначен для назначения гостей (= пользователей) таблицам ( = группы) и убедитесь, что гости, сидящие рядом друг с другом, имеют одинаковые предпочтения.

person Geoffrey De Smet    schedule 08.03.2011

Я не понимаю, зачем вам нужен алгоритм для обеспечения этого.

Пользователи должны выбрать хотя бы один вариант из 10.

Это должно быть реализовано в пользовательском интерфейсе. Вы, вероятно, захотите предоставить пользователю только список допустимых параметров, если это свободное текстовое поле, проверьте его сразу после того, как пользователь отправит значение.

Я пытаюсь написать алгоритм, который будет удовлетворять следующим правилам: 1. в группе должно быть от 4 до 8 пользователей 2. каждый пользователь должен быть не более чем в одной группе 3. у каждого пользователя в группе есть хотя бы один предпочтительный выбор общий 4. и желательно каждый пользователь входит в группу / как можно больше

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

person rkg    schedule 07.03.2011
comment
to ravi: допустим, у нас есть 8 пользователей: u1, ..., u8 со следующими предпочтениями: u1, .., u4 предпочитают варианты 1 и 2 u5, .., u7 - 1 и 3 u8 - выбор номер 3. Есть 2 решения, удовлетворяющие правилам 1 - 3. 1 решение: только одна группа A = u1,..,u7, 2. решение две группы: A = u1, .., u4 и B = u5,..u8 Согласно правилу 4 я предпочитаю 2. решение. Я не уверен, что SQL может обрабатывать такие запросы. Если да, можете ли вы показать мой пример? Спасибо. - person zlosim; 08.03.2011