充足可能性問題(じゅうそくかのうせいもんだい、satisfiability problem, SAT)は、一つの命題論理式が与えられたとき、それに含まれる変数の値を偽 (False) あるいは真 (True) にうまく定めることによって全体の値を'真'にできるか、という問題をいう。SATisfiabilityの頭3文字を取ってしばしば「SAT」と呼ばれる。
定義
真偽値をとる論理変数
および論理演算子により論理式を構成する。
- 論理否定
が真ならば偽 偽ならば真 - 論理和
が真ならば
偽ならば ![{\displaystyle x_{2}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e3892c72a14aa6e51f1d169e5082e2a1cd961765)
- 論理積
が真ならば
偽ならば![{\displaystyle x_{1}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6e43e4dbe894c6812fc4ef377bafc4dc5ff14ce4)
- リテラル - 論理変数
またはその否定 ![{\displaystyle ({\bar {x_{1}}})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ad2796dea6dc84ea5dcbdd00bc56311768692e05)
- 節 - リテラルの論理和
![{\displaystyle (x_{1}\lor {\bar {x_{2}}}\lor ...)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c590889ccd63642f055fe2ffd37b40189760d135)
問題
論理式全体の値を真にするような、真偽値
の組み合わせは存在するか?
例題
![{\displaystyle (x_{1}\lor x_{2})\land (x_{1}\lor {\bar {x_{2}}})\land ({\bar {x_{1}}}\lor {\bar {x_{2}}})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/15ee228350b417a1fcd08ec128c1453dd48fe5a0)
- x1=真, x2=偽, を代入すると論理式は真になる。よって解答はYes。
![{\displaystyle (x_{1}\lor x_{2})\land ({\bar {x_{1}}}\lor x_{2})\land (x_{1}\lor {\bar {x_{2}}})\land ({\bar {x_{1}}}\lor {\bar {x_{2}}})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/295780c7f601f1c92f49fb8ed329f6b241ed218e)
- x1, x2, いかなる真偽値を代入しても論理式は偽になる。よって解答はNo。
NP完全
充足可能性問題はNP(Non-deterministic Polynomial time(非決定性多項式時間)非決定性チューリングマシンによって多項式時間で解くことができる問題)かつNP困難な問題である。このような問題のクラスをNP完全問題という。充足可能性問題を多項式時間で変形することによって、様々なNP完全問題を構成することができる。
任意の論理式からなる充足可能性問題はNP完全であるが、ある特殊な形状をもつ論理式のクラスに限定しても、なおNP完全であることが証明されている。
- 3-SAT - CNF-SATのうち、節内のリテラル数が、高々3つのもの。
NP問題の補問題、つまり結果のYesとNoを逆転させた問題をco-NP問題という。
充足可能性問題のYesとNoを逆転させ、論理式に否定をかけて変形すると、トートロジー判定問題になる。トートロジー判定問題はco-NP完全問題である。
拡張
論理式の範囲を述語論理式に拡大した場合、ゲーデルの不完全性定理により、充足可能性問題は決定不能である。 平たくいえば、もし述語論理の充足可能性問題が決定可能であるならば、その方法を利用して自然数論によるそれ自身の無矛盾性証明が可能となるが、それは不完全性定理により否定されるからである。
関連項目