Algorithm 对于这个圆桌问题,我应该使用什么样的算法?
我的任务是根据N位客人对其他客人的喜欢/不喜欢程度,确定是否可以让他们坐在圆桌上。座位安排有两个要求:Algorithm 对于这个圆桌问题,我应该使用什么样的算法?,algorithm,math,data-structures,graph,computer-science,Algorithm,Math,Data Structures,Graph,Computer Science,我的任务是根据N位客人对其他客人的喜欢/不喜欢程度,确定是否可以让他们坐在圆桌上。座位安排有两个要求: 所有的客人不应该坐在他们不喜欢的客人旁边 所有客人都应该坐在他们喜欢的客人旁边 输入: likeSet={guest_id:[其他来宾列表]}, dislikeSet={guest_id:[其他来宾列表]} 输出:布尔值 蛮力解决方案将从安排客人0开始,并检查所有可能的座位,但这肯定是低效的 这似乎是二分问题的一种变体,但我不确定从哪里开始 任何意见都将不胜感激 正如tym32167在评论中
蛮力解决方案将从安排客人0开始,并检查所有可能的座位,但这肯定是低效的 这似乎是二分问题的一种变体,但我不确定从哪里开始
任何意见都将不胜感激 正如tym32167在评论中指出的,该问题类似于哈密顿循环问题,这意味着它是NP难问题,不可能有多项式时间的解决方案 关于削减: -假设我们手头的问题有一个有效的解决方案。我们将用它来解决HAM-CYCLE的一个实例,这是一个已建立的NP-hard问题 -对于输入图G=(V,E),则对于每对顶点u,V:
-有了这些知识,我们可以在多项式时间内解决HAM循环问题,然后返回true或false。盲目猜测:1)构建(有向?)图,其中顶点-是guest,边-如果guest喜欢另一个。2) 求哈密顿量cycle@user3386109我认为这两个要求是互斥的,因为恩惠不一定是相互的。例如,如果客人A喜欢客人B,但客人B不喜欢客人A,他们不应该坐在一起。在没有要求1的情况下,结果将包括A和B相邻就座的情况。