В результате изменений в компании, мы должны изменить план сидения: одна комната с 10 столами в ней.Некоторые столы более популярны, чем другие по ряду причин.Одним из решений было бы нарисовать номер стола из шляпы.Мы думаем, что есть лучший способ сделать это.
У нас 10 рабочих мест и 10 человек.Давайте дадим каждому человеку в этом конкурсе 50 гипотетических жетонов для участия в торгах на столах.Нет предела, сколько вы ставите на одном столе, вы можете поставить все 50, что будет означать: «Я хочу сидеть только здесь, точка».Вы также можете сказать «Мне все равно», дав каждому столу по 5 жетонов.
Важное замечание: никто не знает, что делают другие люди.Каждый должен решать, основываясь только на его / ее наилучших интересах (звучит знакомо?)
Теперь предположим, что мы получили следующие гипотетические результаты:
# | Desk# >| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
1 | Alise | 30 | 2 | 2 | 1 | 0 | 0 | 0 | 15 | 0 | 0 | = 50
2 | Bob | 20 | 15 | 0 | 10 | 1 | 1 | 1 | 1 | 1 | 0 | = 50
...
10 | Zed | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | = 50
Теперь нам нужно найти следующее:одна (или более) конфигурация (и), которая дает нам максимальное удовлетворение (т. е. люди получают парты, которые они хотели, принимая во внимание все предложения и максимизируя общее количество участников группы. Естественно, предполагается, что чем больше одного участника на столе, тем больше он/ она этого хочет).
Поскольку нас всего 10 человек, я думаю, что мы можем перебором, изучая все возможные конфигурации, но мне было интересно, есть ли лучший алгоритм для решения такого рода проблем?