**** 1 - Pragmatics of SAT

Tie break
University of Tokyo
Seongsoo Moon
Lists of solvers
• Sequential solvers
–
–
–
–
CHBR_GLUCOSE
CHBR_GLUCOSE_TUNED
TB_GLUCOSE
TC_GLUCOSE (bug exist?)
• Parallel solver
– ParaGlueminisat
}
Glucose + CHB [Liang+, 16]
Glucose + TBVSIDS
Glucose + CHB + TBVSIDS
Session 4A (12:00 – 12:30)
CHB [Liang+, AAAI 16]
• Conflict history-based branching heuristic
• Introduced in AAAI 2016
– Title: Exponential Recency Weighted Average Branching
Heuristic for SAT Solvers
– Solve significantly more instances than VSIDS
TBVSIDS [MOON+, CP-DP 2016]
• Tie break of VSIDS
– Tie occurs frequently and broken randomly in VSIDS
 “Ties are broken randomly by default, although this is configurable”
[Moskewicz+, 2001]
 VSIDS in many SAT solvers uses heap array for VSIDS
– Proposal of meaningful selection from ties
VSIDS
v2
Variables  {v1 , v2 , v3 , v4 , v5 , v6 }
v3
v5
activity(v1 )  2
activity(v2 )  100
v1
v6
activity(v3 )  19
v4
activity(v4 )  25
Pick v2 , reconstruc t
activity(v5 )  36
activity(v6 )  3
v5
v3
v1
v4
v6
VSIDS
v2
Variables  {v1 , v2 , v3 , v4 , v5 , v6 }
v3
v5
activity(v1 )  2
activity(v2 )  100
v1
v6
activity(v3 )  100
activity(v4 )  25
activity(v5 )  36
v4
Is this reasonable?
Pick v2 , reconstruc t
activity(v6 )  100
v5
v3
v1
v4
v6
TBVSIDS [MOON+, CP-DP 2016]
v2
Variables  {v1 , v2 , v3 , v4 , v5 , v6 }
activity(v1 )  2,
v3
activityQ(v1 )  1
activity(v2 )  100, activityQ(v2 )  15
v1
activity(v3 )  100, activityQ(v3 )  10
activity(v4 )  25, activityQ(v4 )  10
activity(v5 )  36, activityQ(v5 )  5
v5
v6
VSIDS
×
TBVSIDS
v6
activity(v6 )  100, activityQ(v6 )  20
Compare first by activity
If activitys are equal,
compare activityQ
v4
v5
v2
v1
v3
v4
TBVSIDS [MOON+, CP-DP 2016]
v2
Variables  {v1 , v2 , v3 , v4 , v5 , v6 }
activity(v1 )  2,
v3
activityQ(v1 )  1
activity(v2 )  100, activityQ(v2 )  15
v1
activity(v3 )  100, activityQ(v3 )  10
activity(v4 )  25, activityQ(v4 )  10
activity(v5 )  36, activityQ(v5 )  5
v5
v6
v4
VSIDS
TBVSIDS
v6
activity(v6 )  100, activityQ(v6 )  20
Priority
v5
v2
In VSIDS, v3  v2  v6
In TBVSIDS, v3  v2  v6
×
v1
v3
v4
TBVSIDS [MOON+, CP-DP 2016]
v2
Variables  {v1 , v2 , v3 , v4 , v5 , v6 }
activity(v1 )  2,
v3
activityQ(v1 )  1
activity(v2 )  100, activityQ(v2 )  20
v1
activity(v3 )  100, activityQ(v3 )  10
activity(v4 )  25, activityQ(v4 )  10
activity(v5 )  36, activityQ(v5 )  5
v5
v6
v4
VSIDS
TBVSIDS
v6
activity(v6 )  100, activityQ(v6 )  20
Priority
v5
v2
In VSIDS, v3  v2  v6
In TBVSIDS, v3  v2  v6
×
v1
v3
v4
TBVSIDS [MOON+, CP-DP 2016]
Conflict


Update each varia ble`s activity 

relevant t o resolution



{v6 , v8 } {v7 , v8 }
{v6 , v7 } {v2 , v5 , v6 }
{v2 , v5 , v7 } {v3 , v5 , v7 }
{v2 , v3 , v5}
Clause learning
Update each varia ble`s activityQ
in a learned clause
{v2 , v3 , v5}
TBVSIDS1 [MOON+, CP-DP 2016]
TBVSIDS2 [MOON+, CP-DP 2016]
Tie occurences
Benchmarks: 300 instances from SAT Competition 2014 application track
Timeout: 1,000 s
96 / 145 (66.2 %) reduced
110 / 151 (72.8 %) reduced
Hybrid CHB + TBVSIDS
Why Hybrid?
Benchmarks: 300 instances from SAT Competition 2014 application track
Timeout: 3,600 s
Results
Benchmarks: 900 instances from 2014Crafted, 2014App and 2015App