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

时间:2013-08-23 22:39:27

标签: algorithm traveling-salesman

在他的书“算法设计手册”中,Steven S. Skiena提出了以下问题:

enter image description here

  

现在考虑以下调度问题。想象一下,你是一个高度独立的演员,他被提出要参加正在开发中的 n 不同电影项目。每项优惠均在拍摄的第一天和最后一天指定。要完成这项工作,您必须承诺在整个期间都可以使用。因此,您不能同时接受两个间隔重叠的作业。

     

对于像你这样的艺术家来说,接受工作的标准很明确:你想赚尽可能多的钱。因为每部电影都支付相同的费用,这意味着你寻求最大可能的工作(间隔),使其中没有两个相互冲突。

     

例如,考虑图1.5 [上面]中的可用项目。我们最多可以出演4部电影,分别是“离散”数学,编程挑战,计算投注,以及Halting State或Steiner's Tree之一。

     

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

     

问题:电影预定问题

     

输入:该行 n I

     

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

我想知道,这是TSP的一个实例(也许是简化的实例)吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-2)

以下是解决此问题的方法:

  1. 创建一个树,顶点是胶片,边缘重叠。也就是说,如果两个顶点的调度重叠,则它们通过边连接。因此问题可以像这样重写:“给定图G找到未连接顶点的最大子集。”

  2. 现在可以将上述问题与已知的NP难问题联系起来。具体来说,创建具有相同顶点和互补边的图G'。也就是说,如果原始图形G没有它,则G'在顶点之间具有边缘。现在问题可以像这样重写:“给定图G'找到最大集团,其中集团是顶点的子集,所有顶点都相互连接。”

  3. Clique是一个众所周知的NP难题。因为你的日程安排问题等同于Clique - 瞧!这也是NP难的。