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


13

假设有一个大学的辅导课。我们有一组问题Q = { q 1q k }和一组n个 学生S = { s 1s n }。每个学生有问题,即,针对每个学生的特定子集疑问小号Ĵ,让Q ĴQ是一系列问题,一个学生都有怀疑。假设 1 Ĵ ñ Q ĴkQ={q1qk}nS={s1sn}sjQjQ1 Ĵ Ñ Q Ĵ = Q1jn:Qjϕ1jnQj=Q

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

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

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

TUT={k,n,FQ,Cσ:TσC}

其中Q j的集合。 FQQj

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

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

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

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

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


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

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

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

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

Answers:


1

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

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

给定一组的问题的大小的ķ,一套Ñ子集˚F QPQ 和一个整数Ç,不存在序列Σ š 1... 小号ķ,使得对于所有{ 1 k }QknFQP(Q)CΣ:S1,,Ski{1,,k}

  1. | S i | = ; 和SiQ|Si|=i
  2. 所有 Ĵ > ; 和SiSjj>i
  3. i=1k|{qFQqSi}|C

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

FQ2Q

|{qFQqSi}|iDouble max k-vertex-cover

G=(V,E)ktVVk{(u,v)EuVvV}t

kTUTiΣ743i=334i=4

TUT

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

  • TUT

|{qFQqSi}|i=1ki1ki 最终将成为“全局”最大值,以防止检查指数数量的子集。

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.