任 务 书
1.设计内容
SAT问题即命题逻辑公式的可满足性问题(satisfiability problem),是计算机科学与人工智能基本问题,是一个典型的NP完全问题,可广泛应用于许多实际问题如硬件设计、安全协议验证等,具有重要理论意义与应用价值。本设计要求基于DPLL算法实现一个完备SAT求解器,对输入的CNF范式算例文件,解析并建立其内部表示;精心设计问题中变元、文字、子句、公式等有效的物理存储结构以及一定的分支变元处理策略,使求解器具有优化的执行性能;对一定规模的算例能有效求解,输出与文件保存求解结果,统计求解时间。
2.设计要求
要求具有如下功能:
⑴ 输入输出功能:包括程序执行参数的输入,SAT算例cnf文件的读取,执行结果的输出与文件保存等。(15%)
⑵ 公式解析与验证:读取cnf算例文件,解析文件,基于一定的物理结构,建立公式的内部表示;并实现对解析正确性的验证功能,即遍历内部结构逐行输出与显示每个子句,与输入算例对比可人工判断解析功能的正确性。数据结构的设计可参考文献[1-3]。(15%)
⑶ DPLL过程:基于DPLL算法框架,实现SAT算例的求解。(35%)
⑷ 时间性能的测量:基于相应的时间处理函数(参考time.h),记录DPLL过程执行时间(以毫秒为单位),并作为输出信息的一部分。(5%)
⑸ 程序优化:对基本DPLL的实现进行存储结构、分支变元选取策略[1-3]等某一方面进行优化设计与实现,提供较明确的性能优化率结果。优化率的计算公式为:[(t-to)/t]*100%,其中t 为未对DPLL优化时求解基准算例的执行时间,to则为优化DPLL实现时求解同一算例的执行时间。(15%)
⑹ SAT应用:将数独游戏[5]问题转化为SAT问题[6-8],并集成到上面的求解器进行问题求解,游戏可玩,具有一定的/简单的交互性。应用问题归约为SAT问题的具体方法可参考文献[3]与[6-8]。(15%)
参考文献
[1] 张健著. 逻辑公式的可满足性判定—方法、工具及应用. 科学出版社,2000
[2]Tanbir Ahmed. An Implementation of the DPLL Algorithm. Master thesis, Concordia University,Canada,2009
[3] 陈稳. 基于DPLL的SAT算法的研究与应用.硕士学位论文,电子科技大学,2011
[4]Carsten Sinz.Visualizing SAT Instances and Runs of the DPLL Algorithm.J Autom Reasoning (2007) 39:219–243
[5] 360百科:数独游戏https://baike.so.com/doc/3390505-3569059.html
[6] Tjark Weber. A sat-based sudoku solver. In 12th International Conference on Logic forProgramming, Artificial Intelligence and Reasoning, LPAR 2005, pages 11–15, 2005.
[7]Ins Lynce and Jol Ouaknine. Sudoku as a sat problem.In Proceedings of the 9th InternationalSymposium on Artificial Intelligence and Mathematics, AIMATH 2006, Fort Lauderdale.Springer,2006.
[8] Uwe Pfeiffer, Tomas Karnagel and Guido Scheffler. A Sudoku-Solver for Large Puzzles using SAT. LPAR-17-short (EPiC Series, vol. 13), 52–57
[9] Sudoku Puzzles Generating: from Easy to Evil.
http://zhangroup.aporc.org/images/files/Paper_3485.pdf
[10] Robert Ganian and Stefan Szeider. Community Structure Inspired Algorithms for SAT and #SAT. International Conference on Theory and Applications of Satisfiability Testing(SAT 2015),223-237360
[11] 严蔚敏等. 数据结构(C语言版). 北京:清华大学出版社