SAT- () (1, 2, 3),(-1, 2 ..), (True/False)., , .( , ); , , 8x8 = 64 , .(1 2 3… 8) — 1 . — [1,2,3...8]— (9… 16) ..— 1 ![ 1 2] ( — ). [-1,-2],[-1,-3] ., , . , .( ) — (1 2… 8) ( 1 2) (...). , — .
| | | | | | | |x|| | | | | | |x| || | | | | |x| | || | | | |x| | | || | | |x| | | | || | |x| | | | | || |x| | | | | | ||x| | | | | | | |
for cnter in range(4): sol = pycosat.solve(clauses) if isinstance(sol, list): print(sol) clauses.append([-x for x in sol]) # - else: # - return # , , .
| | | | | | | |x|| | | | | | |x| || | | | | |x| | || | | | |x| | | || | | |x| | | | || |x| | | | | | || | |x| | | | | ||x| | | | | | | |
, «-» ?/ /, — . , .[1] 3 , :[X__],[_X_],[__X], ,[1,-2,-3],[-1,2,-3],[-1,-2,3], …:[1 -2 -3] [-1, 2...] [...], . , . — , !
We submit the test input of DNF: lstall = [[1,2,3]]. That is, we expect that only [1,2,3] (corresponds to the full line [XXX]) will be a valid solution. Thelibrary gives KNF: cnf = [[-1, -2, -3, 4], [1 , -4], [2, -4], [3, -4]]It is not clear, but very interesting. Well, let's say I believe you ...We ask pycosat to find all the solutions for cnf:[1, 2, 3, 4][1, 2, -3, -4][1, -2, -3, -4][1 , -2, 3, -4][-1, -2, -3, -4][-1, -2, 3, -4][-1, 2, -3, -4][-1, 2, 3, -4]Instead of the expected one, there are eight of them! What to do?, , 4 True. ?: cnf2 = [[-1, -2, -3, 4], [1, -4], [2, -4], [3, -4], [4]]pycosat cnf2:1: [1, 2, 3, 4], , ! , , .— !
| |x| ||x|x|x|| |x| |
1| | |x|| | | ||x| | |2|x| | || | | || | |x|
3x3rows = [[1,1],[0],[1,1]]cols = [[1,1],[0],[1,1]]:|X| |X|| | | ||X| |X|4x4rows = [[1,1],[0],[0],[1,1]]cols = [[1],[1],[1],[1]]:1| |X| |X|| | | | || | | | ||X| |X| |2|X| |X| || | | | || | | | || |X| |X|
|x|_|x|_|_|_|_|x|_|x||x|x|x|_|_|_|_|x|x|x||_|x|_|_|_|_|_|_|x|_||_|x|_|x|_|_|x|_|x|_||_|x|x|x|x|x|x|x|x|_||_|_|x|x|x|x|x|x|_|_||x|x|x|x|x|x|x|x|x|x||_|_|x|x|x|x|x|x|_|_||x|x|_|x|x|x|x|_|x|x||x|_|_|_|_|_|_|_|_|x|
51511 clauses...2851 last var number--- 0.05186057090759277 seconds for clauses gen ---1| | |X|X| | | | | | | | | | | | | | | | || |X|X| | | | | | | | | | | | | | | | | || |X| | | | | | | | | | | | | | | | | | || |X| | | | | | | | | | | | | | | | | | || |X| | | | | |X|X|X| | | | | | | | | | ||X|X| | | | |X|X|X|X|X| | | | | | | | | ||X| | | | |X|X|X|X|X|X|X| | | |X| | | |X||X| | | | |X|X|X|X|X|X|X|X| | |X|X| |X|X||X| | | |X|X|X|X|X|X|X|X|X| | |X|X|X|X|X||X|X| | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|| |X| |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|| |X|X|X|X|X|X|X| |X|X|X|X|X|X|X|X|X|X|X|| | |X|X|X|X|X| | | |X|X|X|X|X| |X|X|X| || | |X|X|X|X|X| | | |X|X|X|X| | | | | | || | | |X|X|X| | | | | |X|X|X| | | | | | || | | |X|X| | | | | | |X|X| | | | | | | || | |X|X| | | | | | | | |X| | | | | | | || | |X| | | | | | | | | |X| | | | | | | || | |X|X| | | | | | | | |X|X| | | | | | || | |X|X| | | | | | | | |X|X| | | | | | |--- 0.02073383331298828 seconds for solve ---
13622799 clauses... -350737 last var number--- 14.18206787109375 seconds for clauses gen ---1| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X| | | | | || | | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X|X| | | | || | | | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X|X| | | || | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X|X|X| |X|X| | || | | | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X|X|X|X|X|X| || | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|| | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X|X|X| |X|X|X|X|X|| | | | | | | | | | | | | | | | | | | | | | | | |X|X|X|X|X|X|X| | | | | |X| || | | | | | | | | | |X|X|X|X| | | | | | | | | |X|X|X|X|X|X|X|X| | | | | | | || | | | | | | | |X|X|X|X|X|X|X|X|X| | | |X|X|X|X|X|X|X|X|X|X| | | | | | | | || | | | | | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | | | | | | | || | | | | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | | | | | | | | || | | | |X|X|X| |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | | | | | | | | || | | |X|X|X| | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | | | | | | | | || | |X|X|X| | | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | | | || |X|X|X| | | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | | ||X|X|X|X| | | |X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X|X| | | |X|X| | | || |X|X| | | |X|X|X|X|X| | | | |X|X|X|X|X|X|X|X|X|X|X|X| | | | | | |X|X| | | || | |X| | | |X|X|X|X| |X| | | | | | |X|X|X|X|X|X| | | |X| | | | | |X|X| | | || | | | | |X|X|X|X| |X|X| | | | | | | | | | | | | |X|X|X| | | | | |X|X| | | || | | | |X|X|X|X| |X|X| | | | | | | | | | | | | | |X|X|X| | | | | |X|X| | | || | | | |X|X|X| | |X|X| | | | | | | | | | | | | | | |X|X| | | | | |X|X| | | || | | | |X|X| | | |X|X| | | | | | | | | | | | | | | |X|X| | | | |X|X|X| | | || | | |X|X|X| | | | |X|X| | | | | | | | | | | | | | |X|X| | | | |X|X| | | | || | | |X|X| | | | | |X|X| | | | | | | | | | | | | | |X|X| | | | |X| | | | | || | | |X|X| | | | | |X|X| | | | | | | | | | | | | | |X|X| | | | | | | | | | || | | |X|X| | | | | | |X|X| | | | | | | | | | | | | |X|X| | | | | | | | | | || | | |X|X| | | | | | |X|X| | | | | | | | | | | | | |X|X| | | | | | | | | | || | | | |X|X| | | | | | |X|X| | | | | | | | | | | | | |X|X| | | | | | | | | || | | | |X|X|X| | | | | |X|X|X| | | | | | | | | | | | |X|X|X| | | | | | | | |--- 17.535892963409424 seconds for solve ---