Exemple cnf

Il est possible de convertir des instructions en CNF qui sont écrites sous une autre forme, telle que la forme normale de la disjonction. Si vous voulez trouver DNF, vous devez regarder toutes les lignes qui se termine par $T $. C`est quelque chose comme essayer de renverser un tas de commutateurs pour trouver le réglage qui fait une ampoule allumer. Ensuite, vous devez énumérer toutes les disjonctions de $a, b, c, d $ avec un nombre pair de négations. Par exemple, supposons que nous voulons trouver le CNF de $a oplus b oplus c oplus d $. L`opérateur NOT ne peut être utilisé que dans le cadre d`un littéral, ce qui signifie qu`il ne peut précéder qu`une variable propositionnelle ou un symbole de prédicat. Ainsi, vous obtenez $ $ (x wedge y wedge z) vee (x wedge neg y wedge neg z) vee (neg x wedge y wedge neg z) vee (neg x wedge neg y wedge z). Incidemment, les deux dernières formules sont également en forme disjonctive normale. Il existe des transformations dans le CNF qui évitent une augmentation exponentielle de la taille en préservant la satisfiabilité plutôt que l`équivalence. Le problème de satisfiabilité considère le cas dans lequel N variables booléennes sont utilisées pour former une expression booléenne impliquant la négation (not), conjonction (and) et disjonction (or). Avec ces clauses, la formule implique Z i = X i ∧ Y i {displaystyle z_ {i} equiv x_ {i} wedge y_ {i}}; Cette formule est souvent considérée comme «définir» Z i {displaystyle z_ {i}} pour être un nom pour X i ∧ Y i {displaystyle x_ {i} wedge y_ {i}}.

Dans un tel réglage plus général, vous pouvez interpréter $ oplus $ comme modulo addition 2. Puisque toutes les formules logiques peuvent être converties en une formule équivalente en forme normale conjonctive, les épreuves sont souvent basées sur l`hypothèse que toutes les formules sont de type CNF. Si cette variable est Z i {displaystyle z_ {i}}, les deux X i {displaystyle x_ {i}} et Y i {displaystyle y_ {i}} sont également vrais. La 2ème dernière ligne d`en haut, (A n i m a l (f (x)) ∨ L o v e s (g (x), x)) ∧ (¬ L o v e s (x, f (x)) ∨ L o v e s (g (x), x)) {displaystyle (mathrm {animal} (f (x)) lor mathrm {Loves} (g (x) , x)) land (lnot mathrm {amours} (x, f (x)) lor mathrm {Loves} (g (x), x))}, est le CNF. Aha. Toutefois, dans certains cas, cette conversion en CNF peut entraîner une explosion exponentielle de la formule. Cette transformation est basée sur des règles sur les équivalences logiques: la double Loi négative, les lois de Morgan, et la loi distributive. En utilisant ce fait, vous pouvez écrire votre CNF. Comme une forme normale, il est utile dans le théorème automatisé prouvant. Dans la forme normale conjonctive, les déclarations dans la logique booléenne sont des conjonctions de clauses avec des clauses de disjonction. Chaque formule peut être écrite de façon équivalente comme une formule en forme normale conjonctive. Cela signifie que chaque modèle qui satisfait cette formule satisfait également l`original.

Les problèmes typiques dans ce cas impliquent des formules dans “3CNF”: forme normale conjonctive avec pas plus de trois variables par conjointe. Exemples de ces formules rencontrées dans la pratique peut être très grande, par exemple avec 100 000 variables et 1 million conjuncts. Dans la logique booléenne, une formule est en forme normale conjonctive (CNF) ou forme normale clausal si elle est une conjonction d`une ou plusieurs clauses, où une clause est une disjonction de littéraux; autrement mis, il est un et des ORs. La troisième formule est en forme conjonctive normale parce qu`elle est considérée comme une «conjonction» avec un seul conjointes, à savoir la clause A ∨ B {displaystyle Alor B}. D`autre part, seulement quelques-uns des modèles de la formule originale satisfont celui-ci: puisque le Z i {displaystyle z_ {i}} ne sont pas mentionnés dans la formule originale, leurs valeurs ne sont pas pertinentes à la satisfaction de celui-ci, ce qui n`est pas le cas dans la dernière formule. Une traduction alternative, la transformation Tseitin, comprend également les clauses Z i ∨ ¬ X i ∨ ¬ Y i {displaystyle z_ {i} vee neg x_ {i} vee neg y_ {i}}.