Dokonalá disjunktivní normální forma (PDNF) je jednou z forem reprezentace funkce algebry logiky (booleovské funkce) ve formě logického výrazu. Jde o speciální případ DNF , který splňuje následující tři podmínky [1] :
Jakýkoli booleovský vzorec , který není identicky nepravdivý, může být redukován na SDNF a jedinečným způsobem, tj. pro jakoukoli splnitelnou funkci logické algebry, existuje vlastní SDNF, a to jediný [2] .
DNF je „součet produktů“ a operace AND (konjunkce) funguje jako operace „násobení“ a operace OR (disjunkce) funguje jako operace „sčítání“. Faktory jsou různé proměnné a mohou být zahrnuty do produktu v přímé i inverzní formě.
Níže je uveden příklad DNF:
Obecně řečeno, DNF může obsahovat opakující se termíny a každý termín může obsahovat opakující se faktory, například:
Z matematického hlediska je takové klonování nesmyslné, protože v Booleově algebře násobení libovolného výrazu samo o sobě a přidání výrazu k sobě nemění výsledek ( ), ale přidání výrazu s vlastní inverzí a násobení vlastní inverzí dává konstanty ( ). V posledním výrazu můžete odstranit opakované výrazy a faktory takto:
Z tohoto důvodu se DNF s opakovanými termíny a faktory obvykle používají pouze pro pomocné účely, například při analytické transformaci výrazů.
SDNF je kanonická forma reprezentace booleovské funkce jako DNF, ve které je zakázáno opakování termínů a faktorů. Každý člen navíc musí obsahovat všechny proměnné (v přímé nebo inverzní podobě).
Níže je uveden příklad SDNF:
Význam SDNF je takový
Aby bylo možné získat SDNF funkce, je nutné sestavit její pravdivostní tabulku . Vezměte si například jednu z pravdivostních tabulek:
0 | 0 | 0 | jeden |
0 | 0 | jeden | jeden |
0 | jeden | 0 | jeden |
0 | jeden | jeden | 0 |
jeden | 0 | 0 | 0 |
jeden | 0 | jeden | 0 |
jeden | jeden | 0 | jeden |
jeden | jeden | jeden | 0 |
V buňkách výsledku jsou označeny pouze ty kombinace, které uvádějí logický výraz do stavu jedna. Dále jsou uvažovány hodnoty proměnných, při kterých je funkce rovna 1. Pokud je hodnota proměnné rovna 0, pak je zapsána s inverzí. Pokud je hodnota proměnné 1, pak žádná inverze.
První řádek obsahuje 1 v zadaném poli. Hodnoty všech tří proměnných jsou zaznamenány, jsou to:
Nulové hodnoty - zde jsou všechny proměnné reprezentovány nulami - jsou ve výsledném výrazu zapsány inverzí této proměnné. První člen SDNF uvažované funkce vypadá takto:
Proměnné druhého člena:
v tomto případě bude reprezentován bez inverze:
Takto jsou analyzovány všechny buňky . Dokonalým DNF této funkce bude disjunkce všech výsledných členů (elementárních spojek ).
Perfektní DNF této funkce je: