Přejít na hlavní obsah

Jak vybudovat SCNF z SDF: podrobný průvodce

  • Robin Beneš
  • Praxe

V logice predikátů lze tvrzení vyjádřit různými způsoby, včetně standardních normálních forem (CFS) a disjunktivních normálních forem (DNF). V tomto článku se podíváme na proces budování dokonalé konjunktivní normální formy (SCNF) z této dokonalé disjunktivní normální formy (SDNF).

Je důležité poznamenat, že SDNF a SCNF jsou ekvivalentní reprezentace logického tvrzení. SDNF představuje tvrzení ve formě konjunktury disjunktů, zatímco SCNF je disjunktura konjunktů. Při přechodu z SDNF na SCNF převádíme každou disjunkturu na konjunkturu a každou konjunkturu na disjunkturu.

Proces budování SCNF z SDNF není obtížný, ale vyžaduje sekvenci kroků. Začněme příkladem pro lepší pochopení. Předpokládejme, že máme další SDF:

F = (A AND B AND ¬C) OR (C AND ¬D) OR (A AND B AND C AND D)

Pro převod této SDF na SCNF musíme provést následující změny:

Co je SCNF a SDF?

SDNF je vzorec složený z konjunktiv (logických a) nejjednodušších elementárních disjunktiv (logických nebo). Každá elementární disjunkce obsahuje všechny možné literáty, které mohou být pravdivé nebo nepravdivé. SDNF umožňuje prezentovat funkci jako součet děl.

SCNF je naproti tomu vzorec složený z disjunktů (logických nebo) nejjednodušších elementárních konjunktiv (logických a). Každá elementární konjunktura se skládá ze všech literátů, které mohou být pouze pravdivé nebo nepravdivé. SCNF umožňuje prezentovat funkci jako součin částek.

Použití SCNF a SDNF umožňuje zjednodušit a analyzovat složité logické funkce. Pomáhají prezentovat bulevův výraz v kompaktnější a srozumitelnější podobě. Kromě toho mohou být použity k optimalizaci fungování logických obvodů a výpočetních zařízení.

Je důležité vědět, že ne všechny bulovy funkce mohou být reprezentovány jako SCNF nebo SDNF. Některé funkce vyžadují složitější formy reprezentace. Většina funkcí však může být reprezentována a analyzována pomocí těchto dvou normálních forem.

Převod SDF na SCNF

1. Sestavení tabulky pravdivosti: zapište si všechny možné kombinace hodnot proměnných a Vypočítejte hodnoty funkce na každé z nich.

2. Sestavení logického výrazu: zvýrazněte řádky pravdivostní tabulky, ve kterých funkce přebírá hodnotu 1, a zkombinujte je pomocí logického nebo.

3. Uvedení logického výrazu do zkrácené disjunktivní normální formy (SDNF): distribučními zákony nebo odhalte závorky ve výrazu.

4. Struktura SCNF: invertujte hodnoty proměnných v každém slagovaném SDNF tím, že nahradíte 0 na 1 a naopak.

V důsledku těchto kroků získáte zkrácený konjunktivní normální tvar (SCNF) pro logickou funkci, která bude ekvivalentní původní SDF.

Krok za krokem průvodce stavbou SCNF

Chcete-li vybudovat SCNF z SDNF (zkráceně disjunktivní normální forma), postupujte podle těchto kroků:

Krok 1: Zapište si logickou funkci jako SDF. SDNF je disjunkce spojivek, kde každá konjunktura odpovídá jedné hodnotě funkce.

Krok 2: Vytvořte pravdivou tabulku pro danou logickou funkci. V prvním sloupci tabulky by měly být uvedeny všechny možné kombinace hodnot proměnných.

Krok 3: Označte ty řádky pravdivostní tabulky, pro které je hodnota funkce "1". Tyto řádky odpovídají konjunkturám, které budou použity v SCNF.

Krok 4: Pro každý označený řádek pravdivostní tabulky zapište samostatnou konjunkturu, kde každý literál bude reprezentován hodnotou proměnné, pokud je kladná, nebo zápornou proměnnou, pokud je záporná.

Krok 5: Vyjádřete SCNF jako konjunkturu všech získaných Konjunktur.

Nyní máte SCNF postavenou z SDNF dané logické funkce. Zkontrolujte výsledek a zkontrolujte, zda odpovídá původní funkci.

Příklady budování SCNF z SDF

Podívejme se na několik příkladů budování SCNF z SDF. V každém příkladu bude nastavena Logická funkce a krok za krokem vysvětleno, jak ji postavit SCNF.

Příklad 1:

Nechte nastavit následující logickou funkci:

F(A, B, C) = ^ a B a C

1. Začínáme psaním SDF, oddělením každého prvku tabulky pravdivosti logické funkce čárkou a jejich kombinací operací nebo:

F(A, B, C) = ÂB̂C + ÂBC + ABC

2. Nahrazujeme symboly, které znamenají negaci proměnné, logickým vzorcem, jako je A = a:

F(A, B, C) = aBaC + aBC + ABC

3. Odhalujeme závorky pomocí asociativity operací a:

F(A, B, C) = aBaC + aBC + ABC

V důsledku toho získali SCNF pro danou logickou funkci.

Příklad 2:

Nechte nastavit následující logickou funkci:

F(A, B, C) = ÂB + AB + BC

1. Začínáme psaním SDF, oddělením každého prvku tabulky pravdivosti logické funkce čárkou a jejich kombinací operací nebo:

F(A, B, C) = ÂB̂C + AB̂C + AB̂C + ABC

2. Nahrazujeme symboly, které znamenají negaci proměnné, logickým vzorcem, jako je A = a:

F(A, B, C) = aBaC + ABaC + ABaC + ABC

3. Odhalujeme závorky pomocí asociativity operací a:

F(A, B, C) = aBaC + ABaC + ABaC + ABC

V důsledku toho získali SCNF pro danou logickou funkci.

Podívali jsme se tedy na příklady budování SCNF z SDNF a každý příklad jsme rozebrali krok za krokem. Doufám, že tyto příklady vám pomohou lépe porozumět procesu budování SCNF.

Příklad 1: konverze jednoduchého výrazu

Pro názornost zvažte následující jednoduchý logický výraz:

Výraz: A ∧ B ∨ C

Nejprve zapíšeme výraz ve formě tabulky pravdivosti:

  • A = 0, B = 0, C = 0: 0 ∧ 0 ∨ 0 = 0
  • A = 0, B = 0, C = 1: 0 ∧ 0 ∨ 1 = 1
  • A = 0, B = 1, C = 0: 0 ∧ 1 ∨ 0 = 0
  • A = 0, B = 1, C = 1: 0 ∧ 1 ∨ 1 = 1
  • A = 1, B = 0, C = 0: 1 ∧ 0 ∨ 0 = 0
  • A = 1, B = 0, C = 1: 1 ∧ 0 ∨ 1 = 1
  • A = 1, B = 1, C = 0: 1 ∧ 1 ∨ 0 = 1
  • A = 1, B = 1, C = 1: 1 ∧ 1 ∨ 1 = 1

Nyní najdeme řádky, ve kterých se výraz rovná 1:

  • A = 0, B = 0, C = 1
  • A = 0, B = 1, C = 1
  • A = 1, B = 0, C = 1
  • A = 1, B = 1, C = 0
  • A = 1, B = 1, C = 1

Vzorkování řádků, ve kterých je výraz 1, nám poskytne následující DNF:

  • (A' ∧ B' ∧ C) ∨ (A' ∧ B ∧ C) ∨ (A ∧ B' ∧ C) ∨ (A ∧ B ∧ C') ∨ (A ∧ B ∧ C)

V důsledku toho získáme následující SDF:

  • (A' ∧ B' ∧ C) ∨ (A' ∧ B ∧ C) ∨ (A ∧ B' ∧ C) ∨ (A ∧ B ∧ C') ∨ (A ∧ B ∧ C)

Nyní je výraz zapsán v SDF.