Алгоритм размещения групп людей?

Мне интересно написать приложение, которое может определить, как разместить группы из 2-10 человек за столами, на которых могут находиться 10 человек. Там, вероятно, будет около 15 столов и 140 человек. Я не хочу разбивать ни одну из групп людей.

Кажется, что это может быть распространенной проблемой, и мне было интересно, есть ли у кого-нибудь какие-либо предложения о том, где я должен искать решение для этого. Любые ссылки или предложения оценены.

Ответ 3

Пусть группы решают, где сидеть. Все в порядке, если группы сами решат разбить, объединить с другими группами или переместить таблицы вместе?

Ответ 4

Когда у нас была эта проблема в школе, мы решили ее с проблемой TSP.

Ответ 5

Это проблема с упаковкой bin, которая является NP-Hard (нелегко найти лучший ответ, и это непросто проверьте, лучший ли ответ).

Группы людей - это отдельные объекты, при этом объем = количество людей в группе. Таблицы - это бункеры размером 10.

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

Однако ваша проблема ослаблена (в некотором роде), потому что у вас есть 10 таблиц - т.е. вы не пытаетесь поместить людей на минимальное количество таблиц. Если 10 таблиц - это решение OPTIMAL, вам будет сложно найти решение (если оно даже существует), но если оптимальным является действительно 7 или 8, найти решение будет легко. Все зависит от групповых распределений.