Algorithm 布尔可满足性的类调度[多项式时间缩减]第2部分

Algorithm 布尔可满足性的类调度[多项式时间缩减]第2部分,algorithm,scheduling,np-complete,np,sat,Algorithm,Scheduling,Np Complete,Np,Sat,几天前我问了一个问题,关于如何将大学排课问题转化为布尔可满足性问题 () 我得到了@Amit的回答,他非常优雅且易于编码。 基本上,他的回答是这样的:他没有考虑课程,而是考虑时间间隔 所以对于第i个课程,他只是列出了这个课程所有可能的间隔时间。我们得到了一个解,当每个过程至少有一个真间隔,并且没有间隔重叠时 当我们只考虑课程而不考虑其他课程时,这种方法效果很好。我通过对区间内的房间进行编码来概括它 例如,与[8-10]不同的是,可以在上午8点到10点之间进行课程 我用[0.00801-0.010

几天前我问了一个问题,关于如何将大学排课问题转化为布尔可满足性问题

()

我得到了@Amit的回答,他非常优雅且易于编码。 基本上,他的回答是这样的:他没有考虑课程,而是考虑时间间隔

所以对于第i个课程,他只是列出了这个课程所有可能的间隔时间。我们得到了一个解,当每个过程至少有一个真间隔,并且没有间隔重叠时

当我们只考虑课程而不考虑其他课程时,这种方法效果很好。我通过对区间内的房间进行编码来概括它

例如,与[8-10]不同的是,可以在上午8点到10点之间进行课程

我用[0.00801-0.01001]来表示课程可以在上午8点到10点之间在1号房间进行

我敢肯定,您目前正在徘徊“为什么使用double?”嗯,因为我的问题来了:

为了继续推广这种方法,我还对这个区间内教师的n°进行了编码

我用[1.00801-1.01001]来表示,课程可以在上午8点到10点之间在1号教室进行,由1号教师授课

以下是我现在得到的:

像这样[1.008XX-1.010XX]可以与[2.008YY-2.010YY]同时发生,这是真的,如果教师1在上午8点到10点之间在X教室教学,那么教师2也可以在上午8点到10点之间在Y教室教学,如果且仅当教室可用

问题是:用这种方法,我不能保证XX和YY将是不同的,YY将是可用的,因为[1.00 8XX-1.010XX]不重叠[2.00 8XX-2.010XX],所以现在,求解者认为这是可能的。 我仍然不知道如何保证这一点,通过使用这个区间方法。。。 我需要一种编码{Interval,room和teacher id}的方法,以便:

  • 一名教师不能在同一时间间隔内处于两个位置
  • 在同一时间间隔内,同一房间内不能有两名教师
  • 当然,至少有1个间隔为真
提前感谢您的帮助, 致以最良好的祝愿



后续问题:

此答案是r的扩展,并尽可能使用相同的符号

好的,假设每个时间间隔分配给一名教师(如果不止一名教师可以使用该时间间隔,那么就有多个实例,每个实例有不同的教师),因此表示教师
t
在时间
x
y
在教室中授课,我们可以使用这个类给定的旧变量-
V_{i,j}
-作为类和区间

对于每个教师
t
,以及教师可能参与的(a,b)类中的每对间隔
c=(x1,y1)
d=(x2,y2)
,添加以下条款:

Q_{t,i,j} = Not(V_ac) OR Not(V_bd) OR Smaller(y1,x2) OR Smaller(y2,x1)
直观地说,上述条款保证了一名教师不能同时在两个地方——同一名教师分配给他们的时间间隔不会重叠

通过将每个教师的每一对
(i,j)
链接到原始公式,它满足您的第一个约束-
教师不能在同一时间间隔内处于两个位置。
-因为每个教师不能同时处于两个位置

您的第二个约束条件
在同一时间间隔内,同一房间内不能有两名教师。
还满足于这样一个事实,即不能有两个班级在时间和班级上重叠


第三个约束条件
每门课程至少有1个间隔。
满足
F1
子句,因为你必须为每门课程选择至少一个间隔(指定一名教师)。

我认为这个问题太宽泛了。我不确定确切的问题是什么,或者确切的问题是什么。我想我有办法解决它,希望我今天晚些时候有时间把它正式化。还有:耶,我最喜欢的问题B部分@MattKo,基本上,问题是:如何使用间隔表示形式化关于房间、教师和课程的所有约束。现在,所有课程和教室的限制都已经完成了,我只是不知道如何形式化:“一名教师不能同时在两个教室里”,“不能同时在同一个房间里有两名教师”:)我相信amit会告诉你如何使用SAT解算器来实现这一点,但是你可以看看约束解算器是否有更具表现力的约束语言。@Davidisenstat我完全同意:)但所有的挑战都来自于我使用自己的SAT解算器,我想与使用此类问题但使用CSP解算器的朋友比较结果:)事实上,我所有的麻烦都来自于此,对于这种问题,我在CSP中想得太多了,我不知道如何在SAT中直接转换它/再一次,Amit,非常感谢你,我刚刚完成了你对这个教师功能的解释:)并且它给出了准确的预期结果^^。