2020-12-02
状況
数独の問題を SAT 問題に還元して解くところまでやってみた。
https://twitter.com/public_yusuke/status/1334006377698627585
clausesContainingLiteral というフィールドを CDCLSolver に追加することで、removeClausesContaining と removeLiteralFromClauses が実行されるときに availClauses を全部舐めるのをやめた
diff: https://github.com/private-yusuke/sat-d/pull/21/files#diff-63f786aab006d5b0f98ff55d73a4e6a787dd8a407fa79b949bd32e2acac34081R593-R607
これのおかげで一部のテストケースで大幅な計算時間の改善が見られた(新:72b3ecb vs 旧:70265e8)。
graph-ordering-19.cnf は以前 21.28 秒だったのが 1.91 秒に
order-principle-19.cnf は以前 21.64 秒だったのが 1.90 秒に
他のテストケースでは軽微な改善が見られた。
しかしながら、total-order 系は以前として問題の難しさが上昇するにしたがって指数関数的に計算時間が増えてしまう。
数独を SAT 問題に還元してみたのが楽しかったため、他にも SAT に還元して解けるパズルはないか尋ねた。
また、ジョットクとは全然関係がないが、ipc_bot がS4様相論理の上で何かをやっている?らしいので様相論理とは何なのか尋ねた(ここで『論理学をつくる』を薦められた)。
#diary #情報科学特別演習