寻找最佳问题顺序以最大程度地减少学生的总时间


13

假设有一个大学的辅导课。我们有一组问题Q = { q 1 … q k }和一组n个 学生S = { s 1 … s n }。每个学生有问题,即,针对每个学生的特定子集疑问小号Ĵ,让Q Ĵ ⊆ Q是一系列问题,一个学生都有怀疑。假设 ∀ 1 ≤ Ĵ ≤ ñ :Q Ĵ ≠kQ={q1…qk}nS={s1…sn}sjQj⊆Q和 ⋃ 1 ≤ Ĵ ≤ Ñ Q Ĵ = Q。∀1≤j≤n:Qj≠ϕ⋃1≤j≤nQj=Q

所有学生都在开始时进入教程课程(在)。现在,一旦讨论了所有他有疑问的问题,学生就会离开本教程。假设讨论每个问题所需的时间相等,例如1单位*。令t j为s j在教程会话中花费的时间。我们希望找出最佳置换σ在哪些问题进行了讨论 (q σ (1 ) ... q σ (Ñ ))这样的量Ť σ =t=0∗tjsjσ(qσ(1)…qσ(n))被最小化。Tσ=Σ1≤j≤ntj

我无法设计多项式时间算法或证明硬度。NP

我们可以定义问题的决定版本

TUT={⟨k,n,FQ,C⟩∣∃σ:Tσ≤C}

其中是Q j的集合。 FQQj

然后,我们可以找到的最小 使用二进制搜索Ç并找出最佳σ使用部分分配到σ使用用于一个oracle在多项式时间Ť ü Ť。此外,Ť ü Ť ∈ Ñ P,因为最佳σ可作为我们可以在多项式时间内很容易地验证证书。TσCσσTUTTUT∈NPσ

我的问题:N P-是否完整?或者我们可以为其设计多项式时间算法吗?TUT NP

旁注:顺便说一句,我在实际的辅导课之后想到了这个问题,在该会议中,助教以正常顺序讨论了这些问题,因为许多学生不得不等到最后。q1…qn

示例
令且n = 2。Q 1={ q 3 }和Q 2={ q 1,q 2,q 3 }。我们可以看到,最佳σ = ⟨ 3 ,1 ,2 ⟩因为在这种情况下,š 1个后叶吨1 = 1和s ^ 2个后叶吨k=3n=2Q1={q3}Q2={q1,q2,q3}σ=⟨3,1,2⟩s1t1=1s2,所以总和为4。 但是,如果我们讨论的顺序问题 ⟨ 1 ,2 ,3 ⟩,然后 ş 1和 S ^ 2都不得不等到年底牛逼1 = 牛逼2 = 3,所以总和是6。t2=3
⟨1,2,3⟩s1s2t1=t2=3

您可以自由解决更一般的情况,其中每个问题 q i需要 x i个单位进行讨论!∗qixi


只是要清楚一点:所有学生都同时进入,还是从提出第一个问题的那一刻起就进入?
— 离散蜥蜴

@Discretelizard所有学生在开始时都同时进入(t = 0)。
— skankhunt42

在当前的定义中,问题集是唯一的,即一组问题最多属于一个学生。这可能是一个合理的简化,但是我怀疑这是现实的(并且我怀疑这将对问题的复杂性起很大的作用)
— 离散蜥蜴

我想两个学生可能会有完全相同的问题集,因此等待时间将乘以2。
— gnasher729

Answers:


1

我怀疑问题是NP难题。我将展示如何解决问题,使其与 NP难题紧密相关。(是的,这非常模糊。我基本上认为我的一般方法是正确的,但是我目前无法进行。)TUT

首先,请注意,问题可以重新表示为:TUT

给定一组的问题的大小的ķ,一套Ñ子集˚F Q ⊆ P(Q )和一个整数Ç,不存在序列Σ :⟨ š 1,... ,小号ķ ⟩,使得对于所有我∈ { 1 ,… ,k }:QknFQ⊆P(Q)CΣ:⟨S1,…,Sk⟩i∈{1,…,k}

  1. 和 | S i | = 我 ; 和Si⊆Q|Si|=i
  2. 所有 Ĵ > 我 ; 和Si⊂Sjj>i
  3. ?∑i=1k|{q∈FQ∣q⊈Si}|≤C

注意,集合表示将要解释的前i个问题。条件1和2确保根据此解释,子集形成良好。条件3计算的是每个时刻都没有离开的学生人数,因此,这实际上是所有学生总等待时间的总和。Sii

FQ2Q

|{q∈FQ∣q⊈Si}|iDouble max k-vertex-cover

G=(V,E)ktV′⊆Vk{(u,v)∈E∣u∈V′∧v∈V′}t

kTUTiΣ743i=334i=4

TUT

因此,总而言之,我将问题简化为以下几点:

  • TUT

|{q∈FQ∣q⊈Si}|i=1…ki−1ki 最终将成为“全局”最大值,以防止检查指数数量的子集。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.