随笔分类 -  SAT

摘要:1. 预备知识 1.1 Simple Average and Exponential Moving Average 给定一个含有时间序列的数字序列\(S_n=<r_1,r_1,r_2, ..., r_n>\) simple average 的计算方式为 \(avg(S_n)=\sum_{i=1}^N 阅读全文
posted @ 2025-03-12 12:26 seonwee 阅读(51) 评论(0) 推荐(0)
摘要:1. 相关数据结构 变量名 注释 NB_VAR 算例变元的数量 NB_CLAUSE 算例子句的数量 sat[x][y] 二维数组存放算例,例如:sat[x]就是第x个子句,子句末尾用NONE(-1)标识。注意sat的一维下标从0开始,即第一个子句是sat[0];假如sat[x][y]存放某个变元z, 阅读全文
posted @ 2025-03-12 12:18 seonwee 阅读(44) 评论(0) 推荐(0)
摘要:1. 奖励函数 设t表示当前这次运行期间(第t次重启),a表示选择的启发式策略(lrb或vsids),\(decisions_t\)表示在运行t这段运行期间中所做的决策数量,\(decidedVars_t\)表示在t中通过分支策略选取的变元数量(重复选同一个文字只会算一次)。那么,策略a在运行t的奖 阅读全文
posted @ 2025-03-12 12:17 seonwee 阅读(63) 评论(0) 推荐(0)
摘要:1. 子句化简 一开始上来先用vsids策略,直到冲突次数达到设置的init,之后再使用2500s的LRB策略,2500s后再次产生冲突分支策略将改为VSIDS策略。 其存放学习子句有三个集合,学习子句的质量从高到低分别是learnts_core、learnts_tier2、learnts_loca 阅读全文
posted @ 2025-03-12 12:17 seonwee 阅读(37) 评论(0) 推荐(0)
摘要:1.组成SAT问题的三要素 m个逻辑变元(variable)的集合: \(x_1, x_2,…, x_m\) 文字(literal)的集合:一个文字就是一个逻辑变元或其非。这样,全部基本式为:\(x_1, \overline {x_1}, x_2, \overline {x_2}…, x_m, \o 阅读全文
posted @ 2024-12-07 21:18 seonwee 阅读(867) 评论(0) 推荐(0)
摘要:1. 结论 学习子句中含有比较多的冗余子句时,即vivification ratio高时采用vsids分支策略要比LRB好。 2. 相关内容 2.1 两种典型不同类别的算例 2.1.1 HWMCC instances HWMCC instances generated from real-world 阅读全文
posted @ 2024-12-05 13:41 seonwee 阅读(37) 评论(0) 推荐(0)
摘要:1. CDCL算法流程图 2. 迹(Trail)与决策层 2.1 迹(Trail) 迹的作用是记录当前变元的赋值是怎么被推断出来的。迹是一串连在一起的文字,里面出现的每个文字代表这个文字赋值为真;同时我们要记录为什么这个文字赋值为真,于是在文字的右上角标注原因。当文字是因为决策取真时,我们就标“决策 阅读全文
posted @ 2024-12-04 22:39 seonwee 阅读(631) 评论(0) 推荐(0)
摘要:static double luby(double y, int x) { // Find the finite subsequence that contains index 'x', and the // size of that subsequence: int size, seq; for 阅读全文
posted @ 2024-09-29 15:25 seonwee 阅读(31) 评论(0) 推荐(0)
摘要:https://github.com/seonwee/sat-solver 阅读全文
posted @ 2024-07-14 18:41 seonwee 阅读(34) 评论(0) 推荐(0)