我问几天前,一个关于如何将大学课堂排序问题转换为布尔可满足性问题的问题。类布尔到布尔可满足性[多项式时间减少]第2部分
(Class Scheduling to Boolean satisfiability [Polynomial-time reduction])
我通过@Amit回答谁是非常优雅,易于代码。 基本上,他的答案是这样的:他不考虑课程,而是考虑时间间隔。
因此,对于第i个课程,他只是指出了本课程的所有可能的时间间隔。当每个课程至少有1个真实时间间隔并且没有时间间隔与另一个时间间隔重叠时,我们可以得到一个解决方案。
当我们只考虑课程而不考虑其他因素时,这种方法效果很好。我通过在区间内对房间进行编码来概括它。
例如,而不是[8-10]说,课程可能发生在上午8点到上午10点之间。
我用[0.00801 - 0.01001]说一门课程可以在房间上午8时和10时之间发生1
我敢肯定,你目前徘徊“为什么双用?”那么,因为这里来我的问题:
为了继续推广这种方法,我编码也在这个区间的老师的n°。
我用[1.00801 - 1.01001]表示一个课程可以在房间1的早上8点到上午10点之间发生,并由老师n°1教授。
这里是我得到了现在:
这样[1.008XX - 1.010XX]可以在同一时间发生[2.008YY - 2.010YY],这是真的,如果老师1在上午8点到上午10点在教室X教学,老师2也可以在上午8点到上午10点之间教授Y,当且仅当房间可用时。
问题是:使用这种方法我不能确保XX和YY会有所不同,并且YY将可用,因为[1.008XX - 1.010XX]不会重叠[2.008XX - 2.010XX],所以对于现在,解决者认为这是可能的。
我仍然没有就如何确保这一点,通过使用此区间方法任何线索...... 我需要一种方法,以便编码{间隔,房间和老师-ID}指出:
- 老师不能在同一间隔的2个地方。
- 在相同的时间间隔内,同一个房间中不能有2位教师。
- 当然,至少有1个区间是真的。
在此先感谢您的帮助, 此致敬意!
后续问题:Class Scheduling to Boolean satisfiability [Polynomial-time reduction] Final Part
我认为这个问题对于SO来说太宽泛了。我不确定确切的问题是什么或确切的问题是什么。 – 2015-03-19 13:01:36
想想我有一个想法如何解决它,希望我有时间今天晚些时候正式化它。另外:耶,我最喜欢的问题B部分! – amit 2015-03-19 13:10:46
@MattKo,基本上,问题是:如何用间隔表示形式化所有关于房间,教师和课程的约束。现在,课程和房间的所有限制都已经完成了,我只是不知道如何正式化:“老师不能同时在两个房间里”,“在同一个房间里不能有两个老师同一时间“:) – 2015-03-19 13:31:25