" Frenemies",或如何让青少年在生日聚会上快乐

时间:2013-04-11 19:01:23

标签: cluster-analysis combinatorics mathematical-optimization

我有一个我正在努力解决的组合优化问题。这个问题的技术细节很麻烦,所以我用虚拟的16岁生日派对翻译了一些东西。显然,青少年是NP难的,但这与我试图解决的实际问题是分开的。

假设我有一个即将年满16岁的儿子。他邀请所有朋友参加他的生日派对,但不是所有的朋友都喜欢彼此。事实上,我儿子的每个朋友至少有一个他们不喜欢的人,有些人还有更多。如果一个或多个宣誓的“frenemy”坐在同一张桌子上,这些“敌人”拒绝坐在同一张桌子上。我的儿子给了我一份他所有邀请朋友的名单,以及谁也不喜欢谁。这个信息是对称的(如果朋友A不喜欢朋友B,朋友B不喜欢朋友A),但它不是传递(如果朋友A不喜欢朋友B,但喜欢朋友C,朋友C仍然可以自由地喜欢或不喜欢朋友B)。我的问题是:如何确定满足条件的最小表数,即没有两个“敌人”坐在同一张桌子上?

2 个答案:

答案 0 :(得分:1)

这是一个组合优化问题,而不是机器学习问题。

实际上,这是一个着色问题:创建一个图G,其中每个顶点对应一个人。如果两个人(u, v)u彼此不喜欢,则存在边v。您现在要求最小k G k - 可着色。着色c(v)会告诉您v人坐在哪个表格中。

现在你必须pick an algorithm

答案 1 :(得分:0)

对我来说,这听起来更像是一个受限制的优化问题而不是机器学习问题。我会把它建模如下。

  • 每位朋友一个变量,值为表格,
  • friendX !- friendY形式的其他约束(按照列表),说这两个不能坐在同一张桌子上。

这是您可以使用您选择的约束求解器解决的基本模型(我推荐Minion)。您可以最小化最高表号(这需要一些额外的约束),或者只是尝试找到具有给定数量的表(即变量域中的值)的解决方案,直到您找到没有解决方案的表为止

根据问题的大小(即朋友和桌子的数量),这可能有效,也可能无效。您可能需要考虑的问题是问题的对称性(即表A中的人可以移动到表B,反之亦然,它仍然是一个解决方案),可以通过其他约束来解决。