排课布尔可满足性[多项式时间减少]多项式、布尔、排课、时间

2023-09-10 23:16:14 作者:森屿友人

我有一些理论框架/实际的问题,我没有线索,现在如何管理,这就是:

我创建了一个 SAT求解能够发现,当一个人存在,并证明的矛盾时,它的一个模型不使用遗传算法用C CNF 问题的情况下。

一个SAT-问题基本上是这样那样的问题: 我的目标是利用该解算器找到了很多型动物的 NP-完成的问题的解决方案。基本上,我翻译型动物问题转化为SAT,SAT解决我的解算器,然后变压器的解决方案到解决方案接受了原问题。

我已经成功换了N * N的数独,也是N皇后问题,但这里是我的新目标:减少排课问题SAT,但我不知道怎么才能正式一类调度问题它之后容易变换饱和

的目的是显而易见的,在数个月,以产生一个时间表的图片像这样的:

我发现这个source-$c$c谁能够解决该类调度,但没有任何减少到SAT遗憾的是:/

我也发现有关规划的一般(一些文章http://www.cs.rochester.edu/users/faculty/kautz/papers/kautz-satplan06.pdf例如)。

但规划域定义语言本文中使用似乎很一般,不能用于我重新presents一个类调度问题。 :/

是否有人对如何才能将其降低到SAT后,改造SAT的解决方案(如果存在的话^^)入类时间表?高效正式A级调度的想法

我的任何建议基本上是开放的,我现在不知道如何重新presents,如何降低的问题,如何将国家税务总局,解决方案到一个时间表......

在此先感谢大家谁都会花一些时间对我的问题, 最好的问候,

解决方案

我要尝试首次形式化问题,然后尝试将其降低到周六

定义类调度问题为:

 输入= {S1,S2,...,锡|的Si = {(x_i1,y_i1),(x_i2,y_i2),...,(x_ik,y_ik)| 0℃= x_ij&其中; y_ij< = M}}
 
板块深度回调之后, 女性向游戏第一股 友谊时光 6820.HK 估值吸引力凸显

通俗地说:输入是一组类,每一类是一组(开放)的形式区间(X,Y) (M是一些常数,它描述了一周结束)

输出:当且仅当存在一些设置:

  R = {(x_1j1,y_1j1),...,(x_njn,y_njn)|对于每个的a,b:(x_aja,y_aja)交点(x_bjb,y_bjb)= {}}
 

非正式:当且仅当有间隔的一些分配,使得每对间隔之间的交集为空

削减至星期六:

定义为每间隔一个布尔变量, V_ij 此基础上,定义公式:

  F1 =(V_11或V_12或者......或者V_1(K_1))AND .... AND(V_n1或V_n2或者......或者V_n(k_n))
 

非正式的,F1是满意的,当且仅当时间间隔为每类至少有一个是满意

定义小(X,Y)=真,当且仅如果x< = Y 1 我们将用它来确保间隔不重叠。 请注意,如果我们想确保(X1,Y1)和(x2,y2)上不重叠,我们需要:

  X1< = Y1< = X< = Y2和X2< = Y2< = X1< = Y1
 

由于输入的保证 X1< = Y1,X2< = Y2 ,它简化为:

  Y1< = X2或Y2< = X1
 

和使用我们的小型和布尔条款:

 小(Y1,X2)或更小(Y2,X1)
 

现在,让我们来定义新的条款来处理它:

有关每一对的类A,B和间隔C,D在其中(三中A,D b)中

  G_ {C,D} =(NOT(V_ac)否(V_bd)或更小(y_ac,x_bd)或更小(y_bd,x_ac))
 

通俗地说,如果间隔B或D一种是不使用 - 该条款得到满足,我们正在做。否则,两者同时使用,我们必须确保有两个区间之间没有重叠。 这保证如果两个C,D是选择 - 它们不重叠,并且这是适用于每对间隔

现在,形成了我们最终的公式:

  F = f1和{G_ {C,D} |对于每个C,D}
 

这个公式可以确保我们:

对于每个类,至少一个间隔被选择 对于每两个间隔C,D - 如果同时c和d被选择,它们不重叠。

小记:这个公式允许选择1个多区间为每个类,但如果有一些T> 1间隔的解决方案,可以轻松去除T-1它们不改变溶液的正确性

目前结束时,所选择的间隔是布尔变量V_ij我们定义

示例:

  Alebgra = {(1,3),(3,5),(4,6)}积分= {(1,4),(2,5)}
 

定义F:

  F =(v 1.1或v 1.2或V1,3)AND(V2,1或V2,2)
 

定义G的:

 1 intervals, you can easily remove t-1 of them without changing correctness of the solution.

At the end, the chosen intervals are the boolean variables V_ij we defined.

Example:

Alebgra = {(1,3),(3,5),(4,6)} Calculus = {(1,4),(2,5)}

Define F:

F = (V1,1 OR V1,2 OR V1,3) AND (V2,1 OR V2,2)

Define G's:

G{A1,C1} = Not(V1,1) OR Not(V2,1} OR  4 <= 1 OR 3 <= 1 //clause for A(1,3) C(1,4)
         = Not(V1,1) OR Not(V2,1} OR false = 
         = Not(V1,1) OR Not(V2,1}
G{A1,C2} = Not(V1,1) OR Not(V2,2} OR  3 <= 2 OR 5 <= 1 // clause for A(1,3) C(2,5)
         = Not(V1,1) OR Not(V2,2} OR false = 
         = Not(V1,1) OR Not(V2,2} 
G{A2,C1} = Not(V1,2) OR Not(V2,1} OR  5 <= 1 OR 4 <= 3 //clause for A(3,5) C(1,4)
         = Not(V1,2) OR Not(V2,1} OR false = 
         = Not(V1,2) OR Not(V2,1}
G{A2,C2} = Not(V1,2) OR Not(V2,2} OR  5 <= 2 OR 5 <= 3 // clause for A(3,5) C(2,5)
         = Not(V1,2) OR Not(V2,2} OR false = 
         = Not(V1,2) OR Not(V2,2} 
G{A3,C1} = Not(V1,3) OR Not(V2,1} OR  4 <= 4 OR 6 <= 1 //clause for A(4,6) C(1,4)
         = Not(V1,3) OR Not(V2,1} OR true= 
         = true
G{A3,C2} = Not(V1,3) OR Not(V2,2} OR  6 <= 2 OR 5 <= 4 // clause for A(4,6) C(2,5)
         = Not(V1,3) OR Not(V2,2} OR false = 
         = Not(V1,3) OR Not(V2,2} 

Now we can show our final formula:

    F = (V1,1 OR V1,2 OR V1,3) AND (V2,1 OR V2,2) 
        AND  Not(V1,1) OR Not(V2,1} AND Not(V1,1) OR Not(V2,2}
        AND  Not(V1,2) OR Not(V2,1} AND Not(V1,2) OR Not(V2,2}
        AND  true AND Not(V1,3) OR Not(V2,2}

The above is satisfied only when:

V1,1 = false
V1,2 = false
V1,3 = true
V2,1 = true
V2,2 = false

And that stands for the schedule: Algebra=(4,6); Calculus=(1,4), as desired.

(1) can be computed as a constant to the formula pretty easily, there are polynomial number of such constants.