Algorithm 座位分组的算法?

Algorithm 座位分组的算法?,algorithm,Algorithm,我对编写一个应用程序感兴趣,该应用程序可以确定如何在可容纳10人的桌子上安排2-10人的座位。大概会有15张桌子,总共140人。我不想拆散任何一组人 这似乎是一个常见的问题,我想知道是否有人对我应该从哪里开始寻找解决方案有任何建议。任何链接或建议均受欢迎。这只是标准“的一个变体,当我们在学校遇到这个问题时,我们将其作为TSP问题解决。这是。这是NP难问题(不容易找到最佳答案,也不容易检查答案是否是最佳答案) 人群是一个单独的对象,其体积=人群中的人数。桌子是10号的箱子 这里有一些近似算法,如果

我对编写一个应用程序感兴趣,该应用程序可以确定如何在可容纳10人的桌子上安排2-10人的座位。大概会有15张桌子,总共140人。我不想拆散任何一组人


这似乎是一个常见的问题,我想知道是否有人对我应该从哪里开始寻找解决方案有任何建议。任何链接或建议均受欢迎。

这只是标准“

的一个变体,当我们在学校遇到这个问题时,我们将其作为TSP问题解决。

这是。

这是NP难问题(不容易找到最佳答案,也不容易检查答案是否是最佳答案)

人群是一个单独的对象,其体积=人群中的人数。桌子是10号的箱子

这里有一些近似算法,如果你知道你应该在谷歌上搜索垃圾箱包装,应该很容易找到


然而,您的问题是轻松的(在某些方面),因为您有10张桌子——也就是说,您没有试图让最少数量的桌子上的人适合您。如果10个表是最佳解决方案,那么您将很难找到该解决方案(如果它确实存在),但是如果最佳值是7或8,那么找到该解决方案将很容易。这完全取决于组分布。

Best:运算需要O(0)来求解。未执行任何计算!没有分组。每个小组都坐着。这意味着这个问题是NP难的。所以Abe可能找不到最优算法…@雅皮:不,这意味着它是NP,它并没有告诉我们任何事情(尽管你在课堂上将问题建模为TSP,而不是使用多项式时间算法这一事实暗示讲师知道问题是NP完全的:)@Abe Miessler,查看此链接并阅读有关First fit算法的信息。一般的问题很难解决,但您的大小限制使使用天真贪婪的方法变得容易。如果大小限制没有明确规定,则会变得容易——这意味着有许多解决方案。然而,在另一种极端情况下,不可能将所有组都安排在十个表中(但几乎不可能),您必须用尽一切可能来确定这是不可能的。好吧,第一种适合的方法是大多数文件系统和内存管理器在分配空间时使用的方法,它工作得非常好。不,不是!背包有伪多项式解,而箱子包装没有。由于大约有140人,桌子大小为10,所以最佳值不能是7或8。