【发布时间】:2013-08-27 02:25:15
【问题描述】:
在他的书算法设计手册中,Steven S. Skiena 提出了以下问题:
现在考虑以下调度问题。想象一下,您是一个需求量很大的演员,他收到了在 n 个正在开发的不同电影项目中出演的邀请。每个优惠都在拍摄的第一天和最后一天指定。要接受这份工作,您必须承诺在整个期间都有空。因此,您不能同时接受两个间隔重叠的工作。
对于像你这样的艺术家,接受工作的标准很明确:你想尽可能多地赚钱。因为这些电影中的每部都为每部电影支付相同的费用,这意味着您要寻找尽可能多的工作(间隔),这样它们中的任何一个都不会相互冲突。
例如,考虑图 1.5 [上图] 中的可用项目。我们最多可以出演四部电影,分别是“离散”数学、编程挑战、计算赌注以及 Halting State 或 Steiner's Tree 之一。
您(或您的代理)必须解决以下算法调度问题:
问题:电影调度问题
输入:一组I行n个区间。
输出: 可以从 I 中选择的相互不重叠区间的最大子集是什么?
我想知道,这是 TSP 的一个实例(也许是一个简化的实例)?
【问题讨论】:
-
肯定不是 TSP。稍后您会发现一两页,这个问题可以有效地解决(不确定是否是线性时间,但最坏的情况是 Theta(n log n)),并且您稍后会发现几百页, TSP 无法有效解决。
-
@delnan,那么这个问题的分类是什么?
-
嗯,分类是什么意思?我可以告诉你它在复杂性层次结构中的位置(至少在 P 中),但可能不是你的意思。
-
@delnan,我的意思是:这个问题从根本上归结为一个普遍的、众所周知的问题吗?我的第一个猜测是 TSP,但我现在怀疑是不是背包问题。
-
不,由于我在第一条评论中所述的原因,任何 NP 问题都是正确的。我会说这是一个“普遍的、众所周知的问题”。只是不像许多 NP 问题那样出名,因为它既不与著名的未解决问题 (P?=NP) 相关,也不在实际应用中非常常见(如排序)。
标签: algorithm traveling-salesman