(二)連言標準形、においてMiniSAT

連言標準形、においてMiniSAT

ソルバーここでは、このオープンソースSATを、総称して、プログラムの問題を解決するため、いくつかの予備知識を紹介、などにおいてMiniSATするSAT SATソルバー。

いくつかの定義

  • 変数の
    それらの値例えば、という変数を使用してブール関数:(¬A∨B⊕x)は 、bは、xがその変数はもちろん、あなたの名前の変数を使用することができるものを取ること、です。

  • リテラル
    実際リテラルと呼ばれる変数を出現ブール関数で、前記NOT(否定は、¬)リテラル陰性と呼ばれる、例えば、正のリテラルと呼ばれていないと(¬A∨A)、負のリテラルがあり、正リテラル一つずつ。

  • 句の
    句はカッコすべてのみOR(論理和が、∨)、例えば、(X1∨¬x2)∧(¬x1です ∨∨×2×3)∧¬x1、 3句を持つことになります(最後は単一な¬x1です) 。

連言標準形

略して連言標準形CNF、また、和の積(AND ORで意味の山を補うために)と呼ばれるデジタル回路は、単にAND句まで杭です。

      
      
1
2
3
4
5
6
      
      
#以下はCNF
(∨B∨¬c)∧(∨B)∧(∨C)
(X∨Y)∧(¬x∨Y)
(X1∨×2)∧(×2∨¬x3)∧×3

記事に記載されていますが、サーキットの充足可能性問題を引用し、四色問題はCNF形式であり、データSATを議論し、SATソルバーは、理由は私たちの後、CNF形式で食べています。

  • 任意のブール関数は、CNFに変換することができ
    、二重否定の法則、ド・モルガンの法則を使用することができ 、分配法則をすべては、この記事のポイントを見に来る人がいると仮定して(ブール機能CNFの形に変わります、論理設計などを検討します物事右)。
      
      
1
2
3
4
      
      
#いくつかの例
⊕bの - >(¬A∨¬b)∧(∨B)
(∨(∧C B)) - >(∨B)∧(∨C)
  • CNFは、優れた構造を有している
    限り、真があるとして句がその(ORためのすべてであるため句)として真の句。(句あたりの最大のように)すべての句が真でなければならない、ブール関数はtrueになります。

    まず、このような形のはよく(条件はおそらく書き込まれる場合は、私たちのほとんどは、プログラムを書くことができることに注意してくださいORの)理解されています。

    今後に大きな列  (b)の連言標準形、においてMiniSATは、あなたが配置される何千もの変数を持っている想像し、この時間全体のブール関数が再び単に新しい論理で、CNFの中に入るに関連する変数の数百人を増やし、ライン上。

    最後當我們在解決 SAT 問題,對一個 variable assign true 或 false 來測試 boolean function 時,簡單的檢查有沒有 clause 全部的 literal 都是 false 就能知道這樣的賦值方式會不會 unsatisfiable。

    試想一下你有一個邏輯非常複雜,一大堆的巢狀邏輯包在一起的時候,你如何處理以上的情況? 比起殺死一堆腦細胞,簡化問題是更好的作法。

DIMACS CNF format

餵給 SAT solver 吃的 CNF 有個通用的格式叫 DIMACS CNF format,就是副檔名叫 XXX.cnf 的純文字檔。

      
      
1
2
3
4
5
6
7
8
9
      
      
# DIMACS檔案格式如下
# #開頭是我的說明 不是 DIMACS 的註解
c
c c開頭的這些是 DIMACS 註解
c
p cnf 3 2 # 第一個數字是 variable 數、第二個是 clause 數
1 -3 0 # 之後的每行是一個 clause, variable 名稱都是數字(從1開始,0是行結尾的意思)
2 3 -1 0 # 這行代表 (2 ∨ 3 ∨ ¬1)

這裡可以找到一系列問題的 DIMACS 檔案
http://www.cs.ubc.ca/~hoos/SATLIB/benchm.html

MiniSat

MiniSATは、2005年にSATチャンピオンのシリーズを獲得した、偉大なSATソルバーでより重要であることがあるということであるオープンソース、そしてわずか数千行、シンプルで簡潔なコード、においてMiniSATの採択後に研究することができます、自家製SATソルバーのための比較的高い出発点を持っています。

参照

ウィキSAT
https://en.wikipedia.org/wiki/Boolean_satisfiability_problem

ウィキCNF
https://en.wikipedia.org/wiki/Conjunctive_normal_form

CNF形式
http://people.sc.fsu.edu/~jburkardt/data/cnf/cnf.html

おすすめ

転載: www.cnblogs.com/sanxiandoupi/p/11711247.html