假设有一个大学的辅导课。我们有一组问题Q = { q 1 … q k }和一组n个 学生S = { s 1 … s n }。每个学生有问题,即,针对每个学生的特定子集疑问小号Ĵ,让Q Ĵ ⊆ Q是一系列问题,一个学生都有怀疑。假设 ∀ 1 ≤ Ĵ ≤ ñ :Q Ĵ ≠和 ⋃ 1 ≤ Ĵ ≤ Ñ Q Ĵ = Q。
所有学生都在开始时进入教程课程(在)。现在,一旦讨论了所有他有疑问的问题,学生就会离开本教程。假设讨论每个问题所需的时间相等,例如1单位*。令t j为s j在教程会话中花费的时间。我们希望找出最佳置换σ在哪些问题进行了讨论 (q σ (1 ) ... q σ (Ñ ))这样的量Ť σ =被最小化。
我无法设计多项式时间算法或证明硬度。
我们可以定义问题的决定版本
其中是Q j的集合。
然后,我们可以找到的最小 使用二进制搜索Ç并找出最佳σ使用部分分配到σ使用用于一个oracle在多项式时间Ť ü Ť。此外,Ť ü Ť ∈ Ñ P,因为最佳σ可作为我们可以在多项式时间内很容易地验证证书。
我的问题:N P-是否完整?或者我们可以为其设计多项式时间算法吗?
旁注:顺便说一句,我在实际的辅导课之后想到了这个问题,在该会议中,助教以正常顺序讨论了这些问题,因为许多学生不得不等到最后。
示例
令且n = 2。Q 1={ q 3 }和Q 2={ q 1,q 2,q 3 }。我们可以看到,最佳σ = ⟨ 3 ,1 ,2 ⟩因为在这种情况下,š 1个后叶吨1 = 1和s ^ 2个后叶吨,所以总和为4。
但是,如果我们讨论的顺序问题 ⟨ 1 ,2 ,3 ⟩,然后 ş 1和 S ^ 2都不得不等到年底牛逼1 = 牛逼2 = 3,所以总和是6。
您可以自由解决更一般的情况,其中每个问题 q i需要 x i个单位进行讨论!