Algorithm 这个MSP是TSP的一个实例吗?

Algorithm 这个MSP是TSP的一个实例吗?,algorithm,traveling-salesman,Algorithm,Traveling Salesman,Steven S.Skiena在其著作《算法设计手册》中提出了以下问题: 现在考虑下面的调度问题。假设你是一个非常独立的演员,他被邀请在正在开发的n个不同的电影项目中出演。每项优惠都有拍摄的第一天和最后一天。要接受这份工作,你必须承诺在整个工作期间都能随时待命。因此,您不能同时接受间隔重叠的两个作业 对于像你这样的艺术家来说,接受工作的标准是明确的:你想赚尽可能多的钱。因为每部电影的费用都是一样的,这意味着你要寻找尽可能多的工作(时间间隔),这样就不会有两部电影互相冲突 例如,考虑图1.5中的

Steven S.Skiena在其著作《算法设计手册》中提出了以下问题:

现在考虑下面的调度问题。假设你是一个非常独立的演员,他被邀请在正在开发的n个不同的电影项目中出演。每项优惠都有拍摄的第一天和最后一天。要接受这份工作,你必须承诺在整个工作期间都能随时待命。因此,您不能同时接受间隔重叠的两个作业

对于像你这样的艺术家来说,接受工作的标准是明确的:你想赚尽可能多的钱。因为每部电影的费用都是一样的,这意味着你要寻找尽可能多的工作(时间间隔),这样就不会有两部电影互相冲突

例如,考虑图1.5中的可用项目[上文]。我们最多可以出演四部电影,分别是“离散”数学、编程挑战、计算赌注,以及《停止状态》或《施泰纳之树》中的一部

您(或您的代理)必须解决以下算法调度问题:

问题:电影调度问题

输入:线路上n个间隔的集合

输出:可从I中选择的相互不重叠间隔的最大子集是什么


我想知道,这是TSP的一个例子吗(可能是一个简化的例子)?

下面是解决这个问题的方法:

  • 创建一棵树,顶点为胶片,边重叠。也就是说,当两个顶点的明细表重叠时,两个顶点通过一条边连接。因此,这个问题可以这样重新表述:“给定一个图G,找出未连接顶点的最大子集。”

  • 现在我们可以将上述问题与已知的NP难问题联系起来。具体来说,创建一个具有相同顶点和互补边的图G'。也就是说,当原始图G没有边时,G'在顶点之间有边。现在问题可以这样重述:“给定一个图G'找到最大团,其中团是顶点的子集,所有顶点都相互连接。”


  • 派系问题是一个众所周知的NP难问题。因为你的日程安排问题相当于小团体——瞧!这也是NP难的

    这个问题可以通过简单地选择最早完成日期的胶片来解决,然后从那里开始,进行
    O(n^2)
    过程(可能会有更快的解决方案)。因为我们已经找到了多项式时间解,所以它不是TSP的实例,除非:(1)P=NP,(2)有一个令人尴尬的简单证明(1)。

    它肯定不是TSP。一两页之后,你会发现这个问题可以有效地解决(不确定是线性时间,但最坏的情况是θ(n logn)),几百页之后,你会发现TSP无法有效地解决。@delnan,在这种情况下,这个问题的分类是什么?那么,分类是什么意思?我可以告诉你它在复杂性层次结构中的位置(至少在P中),但可能不是你的意思。@delnan,我的意思是:这个问题从根本上可以归结为一个普遍的、众所周知的问题吗?我的第一个猜测是TSP,但我现在怀疑它是否是背包问题。不,任何NP问题都是正确的,因为我在第一次评论中陈述的原因。我认为这是一个“普遍的、众所周知的问题”。只是没有许多NP问题那么著名,因为它既不涉及著名的未解决问题(P?=NP),也不在实际应用中很常见(如排序)。@delnan指出,该问题不在NP空间中。那么,他错了吗?要让这个论点起作用,你需要往另一个方向走——拿一个任意的图,找到一组它对应的电影。但这是不可能的,事实上,提问者的问题有一个多项式时间解。你是对的,新手犯了错误,走了相反的方向(如果你将其反转,并在所有不重叠的电影之间放置边,你可以通过找到经过结果DAG的最长路径来解决它。尼克,好主意,除非它是无向图而不是DAG。