勵志

勵志人生知識庫

cnf範式

CNF範式,即合取範式,是可滿足問題中的一個重要概念。在實際套用中,我們通常將約束寫成CNF範式的格式,然後通過求解器Solver對其進行求解。因此,CNF可以理解為一種問題約束的表現形式。

CNF範式由所有子句的合取形式構成,其中每個子句是若乾文字(變數或非變數)的析取。每個文字可以是變數本身或者是變數的非。CNF範式的格式為:N = ∧ 1 i = ∨(cid:34) (1) C C l 1 i l 2 l k F , = ∨ ∨ i。式中,F表示要求解的滿足性問題;iC表示子句;N表示範式中包含的子句的數量;kl表示文字,∈ ¬ (v是一個變數);k表示子句中包含文字v v kl } { , n≤,n為變數的數量。

例如,(a+b)(a-b+c)就是一個cnf。具體cnf的格式通常保存為.dimacs後綴名的格式檔案,檔案內容如下:

c 1 a // 聲明變數a

c 2 b // 聲明變數b

c 3 c // 聲明變數c

p cnf 3 2 // 告訴cnf有3個變數,2個字句

1 2 0 // a+b

1 -2 3 0 // a-b+c。