所以这是一个发人深省的问题,可以让我的教授理解 NP-Completeness 的概念。由于 NP-Completeness 的规则,我明白为什么应该有一个解决方案,但我不知道如何找到它。所以这里是问题:
该问题是具有两个处理器的简单任务调度问题。每个处理器可以处理其中一项n
任务,任意两项任务可以同时完成。每个任务都有一个结束时间e
,必须在这个时间完成。每个任务也有一个持续时间d
。所有时间值,例如结束时间、持续时间和系统中的当前时间(时间将从 0 开始),都是整数。所以我们得到了一个n
任务列表,我们需要使用这两个处理器来调度它们。如果任何一个不能被调度,算法必须返回无解。请记住,顺序无关紧要,哪个处理器获得哪个任务也无关紧要,只要没有重叠并且每个任务在其截止日期之前完成即可。
所以这里是问题变得概念/抽象的地方,假设我们可以访问一个特殊的小函数,我们不知道它是如何工作的,我们所知道的是:给定n
任务列表和当前计划,它将返回true
或false
基于算法是否可以从这一点解决。该功能假设已经安排好的任务是一成不变的,它只会改变未安排的任务的时间。然而,这个函数所做的只是返回真或假,如果它确实找到了解决方案,它不会给你正确的时间表。关键是您可以在调度问题的实现中使用特殊功能。目标是解决调度问题,并使用对特殊函数的多项式调用次数,返回正确调度每个作业的工作时间表。
编辑:为了澄清,问题是这样的:n
使用对“特殊功能”的多项式调用,创建一个解决方案来安排所有任务而不会超过截止日期。
我认为这个问题是为了表明验证解决方案是多项式的,但发现它是非多项式的。但是我的教授坚持认为有一种方法可以使用对特殊函数的多项式调用来解决这个问题。由于问题作为一个整体是 NP 完全的,这将证明运行时的非多项式方面是在算法的“决策部分”出现的。
如果您希望我澄清任何事情,请发表评论,我知道这不是对问题的完美解释。