Forme normali: dnf, knf, sdnf, sknf. Forme normali perfette disgiuntive e congiuntive Algoritmo per la costruzione di CNF

Forme normali: dnf, knf, sdnf, sknf.  Forme normali perfette disgiuntive e congiuntive Algoritmo per la costruzione di CNF

Introduciamo il concetto di disgiunzione elementare.

Una disgiunzione elementare è un'espressione della forma

La forma normale congiuntiva (CNF) di una funzione logica è la congiunzione di qualsiasi insieme finito di disgiunzioni elementari distinte a coppie. Ad esempio, funzioni logiche

sono congiunzioni di disgiunzioni elementari. Pertanto, sono scritti in forma normale congiuntiva.

Una funzione logica arbitraria data da un'espressione analitica può essere ridotta a CNF eseguendo le seguenti operazioni:

Utilizzando la regola di inversione se l'operazione di negazione viene applicata a un'espressione logica;

Usi dell'assioma della distributività rispetto alla moltiplicazione:

Utilizzando l'operazione di assorbimento:

Eccezioni nelle disgiunzioni di variabili ripetute o loro negazioni;

Eliminazione di tutte le disgiunzioni elementari identiche, tranne una;

Eliminazione di tutte le disgiunzioni che includono contemporaneamente una variabile e la sua negazione.

La validità delle operazioni elencate deriva dagli assiomi di base e dalle relazioni di identità dell'algebra della logica.

Una forma normale congiuntiva si dice perfetta se ogni disgiunzione elementare in essa contenuta contiene in forma diretta o inversa tutte le variabili da cui dipende la funzione.

La trasformazione di CNF in CNF perfetto si effettua effettuando le seguenti operazioni:

Aggiunte a ciascuna disgiunzione elementare di congiunzioni di variabili e loro negazioni, se non sono incluse in questa disgiunzione elementare;

Uso dell'assioma della distributività;

Eliminazione di tutte le disgiunzioni elementari identiche, tranne una.

Qualsiasi funzione logica può essere rappresentata in un CNF perfetto tranne

identicamente uguale a uno (). Una proprietà distintiva di un CNF perfetto è che la rappresentazione di una funzione logica in esso è unica.

Le disgiunzioni elementari incluse in una funzione CNF perfetta sono dette costituenti zero. Ogni componente zero in un CNF perfetto svanisce sull'unico insieme di valori variabili, che è l'insieme zero della funzione. Di conseguenza, il numero di zero insiemi di una funzione logica coincide con il numero di zero costituenti inclusi nel suo CNF perfetto.

La funzione logica costante zero in CNF perfetto è rappresentata dalla congiunzione 2ncostituente di zero. Formuliamo una regola per compilare l'SKNF di una funzione logica secondo la tabella di corrispondenza.

Per ogni riga della tabella di corrispondenza in cui la funzione è uguale a zero viene compilata una disgiunzione elementare di tutte le variabili. La disgiunzione include la variabile stessa, se il suo valore è uguale a zero, o la negazione, se il suo valore è uguale a uno. Le disgiunzioni elementari risultanti sono combinate dal segno di congiunzione.


Esempio 3.4. Per la funzione logica z(x) data dalla tabella di ricerca 2.2, definiamo la forma congiuntiva perfetta.

Per la prima riga della tabella, che corrisponde alla funzione zero impostata 000, troviamo il componente nullo. Eseguendo operazioni simili per la seconda, terza e quinta riga, determiniamo la funzione CNF perfetta desiderata:

Va notato che per funzioni il cui numero di insiemi di unità supera il numero di insiemi zero, è più compatto scriverli sotto forma di SKNF e viceversa.

base standard. Le formule elementari sono letterali. Congiunzione elementare (disgiunzione). Forma normale disgiuntiva (congiuntiva) e forma perfetta. Teorema: qualsiasi funzione booleana diversa da 0 (da 1) può essere rappresentata come SDNF (SKNF). Completezza della base standard. Esempi di basi complete: base di Zhegalkin, tratto di Sheffer, freccia di Pierce.

Base standard è un insieme di tre operazioni iniziali di algebra booleana: addizione (unione), moltiplicazione (intersezione) e negazione.

Qui chiameremo letterale variabile x o la sua negazione x e denotiamo xˆ. Intersezione booleana di più letterali definiti da variabili diverse, ad es. espressione della forma X = xˆ 1 xˆ 2 . . . xˆ l, viene chiamato congiunzione elementare . Il requisito che tutte le variabili siano diverse è dovuto a quanto segue. Se una congiunzione contiene più letterali identici, a causa della commutatività, associatività e idempotenza della congiunzione, passando a una formula equivalente, possiamo lasciare solo un letterale (ad esempio, x 1 x 1 = x 1). Se la congiunzione include una variabile e la sua negazione, allora la formula è equivalente alla costante 0, poiché x x = 0 e per ogni formula Y abbiamo Y x x = 0.

Si chiama la disgiunzione di più congiunzioni elementari forma normale disgiuntiva , o DNF . Ad esempio,

x 1 x 3 + x 2 x 3 x 4 + x 1 x 2 x 3 x 5 .

Se la composizione delle variabili in ogni congiunzione elementare di un dato DNF è la stessa, allora si chiama DNF Perfetto . L'esempio fornito è un DNF che non è perfetto. Al contrario, la formula

x 1 x 2 x 3 x 4 +x 1 x 2 x 3 x 4 +x 1 x 2 x 3 x 4

è la forma perfetta.

Poiché nell'algebra booleana l'addizione e la moltiplicazione sono operazioni simmetriche e si può sempre interpretare l'addizione come moltiplicazione e la moltiplicazione come addizione, esiste anche un duplice concetto: forma normale congiuntiva (KNF ), che è una congiunzione di disgiunzioni elementari, e forma congiuntiva perfetta (SKNF ). Dal principio di dualità per semianelli simmetrici consegue che qualsiasi affermazione su DNF corrisponde a un'affermazione doppia su CNF, che si ottiene sostituendo addizione (disgiunzione) per moltiplicazione, moltiplicazione (congiunzione) per addizione, costante 0 con costante 1, costante 1 per costante 0, ordina le relazioni per duale (inverso) in ordine. Pertanto, ci concentreremo ulteriormente sullo studio del solo DNF.

Teorema 1.4. Qualsiasi funzione booleana diversa dalla costante 0 può essere rappresentata come SDNF.

◀Siamo d'accordo che x σ è una formula x se σ = 1 e una formula x se σ = 0. Lascia che la funzione f(y 1 , . . . , yn) assuma il valore 1 sul vettore (t 1 , . . . , tn ) (tale vettore è chiamato unità costitutiva ). Quindi anche la congiunzione elementare assume il valore 1 su questo insieme, ma svanisce su tutti gli altri vettori booleani n-dimensionali. Considera la formula

in cui la somma (unione) si estende su tutti quegli insiemi (t 1 , . . . , t n) di valori di argomento su cui data funzione assume il valore 1. Si noti che l'insieme di tali insiemi non è vuoto, quindi la somma contiene almeno un termine.

È facile vedere che la formula Φ diventa 1 per quelle, e solo per quei valori delle variabili, per cui la funzione considerata diventa 1. Quindi, la formula Ψ rappresenta la funzione f.

Corollario 1.1. La base standard è completa.

◀ Infatti, se una funzione non è una costante 0, può essere rappresentata sia come SDNF, che è una formula su base standard. La costante 0 può essere rappresentata, ad esempio, dalla formula f(x 1 , x 2 , . . . , x n) = x 1 x 1 .

Esempio 1.2. Si consideri una funzione di tre variabili m(x 1 , x 2 , x 3) (Tabella 1.4), chiamata funzione maggioritaria ̆. Questa funzione restituisce 1 se più della metà dei suoi argomenti ha il valore 1. Pertanto, viene spesso chiamata funzione di voto. Costruiamo un SDNF per questo.

La completezza della base standard permette di selezionare altri sistemi completi di funzioni. La completezza dell'insieme F può essere stabilita dalle seguenti considerazioni. Supponiamo che ciascuna delle tre funzioni standard del buzzis sia rappresentabile da una formula su F . Allora, in virtù del Teorema 1.3, l'alterità di F sarà completa.

Esempio 1.3. Viene chiamato l'insieme delle operazioni modulo 2 addizione, moltiplicazione e costante 1 la base di Zhegalkin . L'addizione e la moltiplicazione Modulo 2 sono le operazioni di base dell'anello Z2, le espressioni composte con il loro aiuto sono polinomi sull'anello Z2. La costante 1 in questo caso è necessaria per scrivere il membro gratuito. Da xx \u003d x, tutti i fattori nel polinomio hanno grado 1. Pertanto, quando scrivi un polinomio, puoi fare a meno del concetto di grado. Esempi di formule sulla base di Zhegalkin:

xy⊕x⊕y, x⊕1, xyz⊕xz⊕x⊕y⊕1.

Qualsiasi formula di questo tipo è chiamata polinomio di Zhegalkin. In effetti, il polinomio di Zhegalkin è un polinomio sull'anello Z2.

È facile costruire formule sulla base di Zhegalkin, che rappresentano le operazioni di addizione e negazione della base standard (la moltiplicazione di due basi è comune):

x+y=x⊕y⊕xy, x=x⊕1.

Pertanto, la base di Zhegalkin è un set completo.
Si può dimostrare che per qualsiasi funzione booleana il polinomio di Zhegalkin è definito in modo univoco

(più precisamente, fino all'ordine dei termini). I coefficienti del polinomio di Zhegalkin con un piccolo numero di variabili possono essere trovati con il metodo dei coefficienti indeterminati.

Esempio 1.4. Si consideri un insieme di una singola funzione: il tratto di Schaeffer*. Questo set è completo, che segue dalle seguenti identità facilmente verificabili:

x=x|x, xy=x|y=(x|y)|(x|y), x+y=x |y=(x|x)|(y|y).

Esempio 1.5. Completa anche la base costituita da un'unica funzione, la freccia Pierce. La verifica di questo è simile al caso dell'ictus di Schaeffer. Tuttavia, questa conclusione può essere tratta anche sulla base del principio di dualità per semianelli simmetrici.

*Il tratto di Schaffer è un'operazione binaria, ma non associativa. Pertanto, quando si utilizza il modulo infisso, è necessario prestare attenzione: il risultato dipende dall'ordine in cui vengono eseguite le operazioni. In questo caso, si consiglia di specificare in modo esplicito l'ordine delle operazioni utilizzando le parentesi, ad esempio, write (x | y) | z, non x | y | z, sebbene entrambe le forme siano equivalenti.


Esempio. Trova le formule CNF

~ ~

La forma normale disgiuntiva perfetta di SDNF può essere costruita utilizzando il seguente algoritmo:

1. = 1. Algoritmo DNF

2. = 2. Algoritmo DNF

3. = 3. Algoritmo DNF

4. = 4. Algoritmo DNF

5. Ometti i termini identicamente falsi, cioè i termini della forma

6. Completa i termini rimanenti con le variabili mancanti

7. Ripetere il punto 4.

Esempio. Trova formule sdnf.

~

Il seguente schema può essere utilizzato per costruire l'SKNF:

Esempio. Trova formule sdnf.


~

È noto (Teoremi 2.11, 2.12) che SDNF e SKNF sono definiti in modo univoco dalla formula e, quindi, possono essere costruiti secondo la tavola di verità della formula .

Lo schema per costruire SDNF e SKNF secondo la tabella di verità è riportato di seguito, per la formula ~ :

~
1 0 1 0 1 1 0 1 SDNF; SKNF.

2.2. Esercizio.

2.2.1 Di seguito sono riportate le espressioni logiche. Semplifica il più possibile le espressioni della tua opzione usando le leggi della logica di Boole. Quindi, usando le tabelle di verità, confronta la tua espressione semplificata con quella originale.



2.2.2. Scopri la questione dell'equivalenza di f 1 e f 2 riducendoli a SDNF (Tabella 1).

2.2.3. Trova la doppia funzione per f 3 secondo il principio generalizzato e booleano (Tabella 1). Confronta i risultati.

f1 f2 f 3

2.3. Domande di controllo.

2.3.1. Definisci una dichiarazione.

2.3.2. Elenca le operazioni di base sull'istruzione.

2.3.3. Che cos'è una tavola di verità?

2.3.4. Creare tabelle di verità per le seguenti formule:

~ ~ ~ ;

2.3.5. Tenendo conto delle convenzioni sull'ordine delle operazioni, omettere le parentesi "extra" e il segno "" nelle formule:

;

2.3.6. Applicando trasformazioni equivalenti, dimostrare la verità identica delle formule:

2.3.7. Trova formule doppie:

)

2.3.8. Riduci le seguenti formule alla forma perfetta DNF (SDNF):

~

2.3.9. Converti le seguenti formule nella forma CNF perfetta (SKNF):

~

Lavoro di laboratorio № 3

Argomento:"Minimizzazione funzioni booleane. Logica"

Obbiettivo: Acquisizione di abilità pratiche nel lavorare con metodi per minimizzare le funzioni booleane.

3.1. Informazioni teoriche.

Forme minime

Come mostrato in , qualsiasi funzione booleana può essere rappresentata in perfetta forma normale (digiuntiva o congiuntiva). Inoltre, tale rappresentazione è il primo passo nel passaggio da una definizione tabulare di una funzione alla sua espressione analitica. In futuro si partirà dalla forma disgiuntiva e si ottengono i risultati corrispondenti per la forma congiuntiva sulla base del principio di dualità.

Il problema canonico di sintetizzare circuiti logici su base booleana si riduce a minimizzare le funzioni booleane, cioè a rappresentarli in forma normale disgiuntiva, che contiene il minor numero di lettere (variabili e loro negazioni). Tali forme sono chiamate minime. In sintesi canonica, si presume che sia i segnali che le loro inversioni siano alimentati agli ingressi del circuito.

La formula presentata nella forma normale disgiuntiva è semplificata dall'applicazione ripetuta dell'operazione di incollaggio e dell'operazione di assorbimento e (le identità duali per la forma normale congiuntiva sono: e ). Qui, da e può essere intesa qualsiasi formula dell'algebra booleana. Di conseguenza, si arriva a tale espressione analitica quando non sono più possibili ulteriori trasformazioni, ad es. otteniamo un modulo senza uscita.

Tra le forme senza uscita c'è anche una forma disgiuntiva minima e potrebbe non essere unica. Per assicurarti che questo modulo senza uscita sia minimo, devi trovare tutti i moduli senza uscita e confrontarli in base al numero di lettere che contengono.

Sia data, ad esempio, la funzione in forma disgiuntiva normale perfetta:

Raggruppando i membri e applicando l'operazione di incollaggio, abbiamo .

Con un altro metodo di raggruppamento, otteniamo:

Entrambe le forme senza uscita non sono minime. Per ottenere la forma minima, devi indovinare per ripetere un termine nella formula originale (questo può sempre essere fatto, poiché). Nel primo caso, tale membro può essere . Poi . Sommando il termine , si ottiene: . Dopo aver esaminato tutte le opzioni possibili, possiamo assicurarci che gli ultimi due moduli siano minimi.

Lavorare con le formule a questo livello è come vagare nel buio. Il processo di ricerca delle forme minime diventa più visivo e propositivo se vengono utilizzate alcune rappresentazioni grafiche e analitiche e simboli appositamente progettati per questo scopo.

Cubo multidimensionale

Ad ogni vertice di un cubo -dimensionale può essere assegnata un'unità costituente. Pertanto, il sottoinsieme dei vertici marcati è una mappatura sul cubo -dimensionale di una funzione booleana di variabili in forma normale disgiuntiva perfetta. Sulla fig. 3.1 mostra una tale mappatura per la funzione dalla Sezione 3.7.

Fig.3.1 Visualizzazione su cubo tridimensionale di una funzione presentata in SDNF

Per visualizzare una funzione di variabili presentate in qualsiasi forma normale disgiuntiva, è necessario stabilire una corrispondenza tra i suoi minitermini e gli elementi del cubo -dimensionale.

Il minitermine del (-1)esimo rango può essere considerato come il risultato dell'incollaggio di due minitermini del -esimo rango (costituente unitario), cioè , Su un cubo dimensionale, ciò corrisponde alla sostituzione di due vertici, che differiscono solo per i valori della coordinata che collega questi vertici, con un bordo (si dice che il bordo copra i vertici ad esso incidenti). Pertanto, i minitermini dell'ordine ( -1) corrispondono ai bordi del cubo -dimensionale. Allo stesso modo, i minitermini del (-2)esimo ordine corrispondono alle facce del cubo -dimensionale, ciascuna delle quali copre quattro vertici (e quattro spigoli).

Gli elementi di un cubo -dimensionale caratterizzato da dimensioni sono chiamati -cubi. Pertanto, i vertici sono 0 cubi, gli spigoli sono 1 cubi, le facce sono 2 cubi e così via. Generalizzando il ragionamento di cui sopra, possiamo assumere che un minitermine del rango ()-esimo in forma normale disgiuntiva per una funzione di variabili sia mappato da un -cubo, e ogni -cubo copre tutti quei -cubi di dimensione più bassa che sono associati con i suoi vertici. A titolo di esempio, in fig. 3.2 mostra la mappatura di una funzione di tre variabili. Qui i minitermini e corrispondono a 1-cubi () e i minitermini sono rappresentati da 2-cubi ().

Fig.3.2 Copertura delle funzioni

Quindi, qualsiasi forma normale disgiuntiva viene visualizzata su un cubo -dimensionale da un insieme di -cubi che coprono tutti i vertici corrispondenti ai costituenti dell'unità (0-cubo). Vale anche l'affermazione inversa: se una certa collezione di -cubi copre l'insieme di tutti i vertici corrispondenti ai valori unitari di una funzione, allora la disgiunzione dei minitermini corrispondenti a questi -cubi è un'espressione di questa funzione in forma normale disgiuntiva . Si dice che una tale raccolta di -cubi (o minitermini ad essi corrispondenti) formi una copertura di una funzione.

Il desiderio di una forma minima è intuitivamente inteso come la ricerca di una tale copertura, il cui numero di cubi sarebbe inferiore e le loro dimensioni sarebbero maggiori. La copertura corrispondente alla forma minima è chiamata copertura minima. Ad esempio, per la funzione di copertura in Fig. 3.3 corrisponde alle forme minime e .

Riso. 3.3 Coperture delle funzioni.

sinistra ; sulla destra

La visualizzazione di una funzione su un cubo dimensionale è chiara e semplice quando . Un cubo quadridimensionale può essere disegnato come mostrato in Fig. 3.4, che mostra una funzione di quattro variabili e la sua copertura minima corrispondente all'espressione . L'uso di questo metodo richiede costruzioni così complesse che tutti i suoi vantaggi vanno perduti.

Riso. 3.4 Visualizzazione delle funzioni su un cubo quadridimensionale

Mappe di Karnot

Utilizza un altro metodo per rappresentare graficamente le funzioni booleane Carte di Carnot, che sono tabelle di ricerca organizzate in modo speciale. Le colonne e le righe della tabella corrispondono a tutti i possibili insiemi di valori di non più di due variabili e questi insiemi sono disposti in modo tale che ogni insieme successivo differisca dal precedente per il valore di una sola delle variabili . Per questo motivo, le celle adiacenti della tabella sia orizzontalmente che verticalmente differiscono per il valore di una sola variabile. Anche le celle situate ai bordi del tavolo sono considerate adiacenti e hanno questa proprietà. Sulla fig. 3.5 mostra le mappe di Karnaugh per due, tre, quattro variabili.


Riso. 3.5 Mappe di Karnot per due, tre e quattro variabili

Come nelle normali tabelle di verità, le celle degli insiemi su cui la funzione assume il valore 1 sono riempite di uno (gli zeri di solito non rientrano, corrispondono a celle vuote). Ad esempio, in fig. 3.6, un mostra la mappa di Karnaugh per la funzione, la cui visualizzazione su un cubo quadridimensionale è data in fig. 3.4. Per semplificare, le righe e le colonne corrispondenti ai valori 1 per alcune variabili sono evidenziate con una parentesi graffa con la designazione di questa variabile.


Riso. 3.6 Visualizzazione del grafico di Carnot di una funzione di quattro variabili

(a) e la sua copertura minima (b)

Tra le mappature delle funzioni attivate n cubo -dimensionale e sulla mappa di Karnaugh c'è una corrispondenza uno-a-uno. Sulla mappa di Carnot S-cube corrisponde a un insieme di 2 celle adiacenti poste in una riga, colonna, quadrato o rettangolo (tenendo conto della vicinanza dei bordi opposti della mappa). Pertanto, tutte le disposizioni di cui sopra (vedi par cubo multidimensionale) sono validi per le mappe di Carnot. Quindi, in fig. 3.6, B viene mostrata la copertura delle unità di mappa corrispondente alla forma minima disgiuntiva la funzione in questione.

La lettura dei minitermini dalla mappa di Karnot avviene secondo una semplice regola. Le cellule che si formano S-cubo, dai miniter (n–s) rango, che include quelli (n–s) variabili che mantengono gli stessi valori su questo S-cube, dove il valore 1 corrisponde alle variabili stesse e il valore 0 corrisponde alle loro negazioni. Variabili che non mantengono i loro valori S-cube, sono assenti nel minitherm. Diversi modi di leggere portano a diverse rappresentazioni della funzione in forma normale disgiuntiva (quella più a destra è minima) (Fig. 3.7).


L'uso delle mappe di Karnaugh richiede costruzioni più semplici rispetto alla visualizzazione n cubo -dimensionale, soprattutto nel caso di quattro variabili. Per visualizzare le funzioni di cinque variabili, vengono utilizzate due mappe di Karnot per quattro variabili e per una funzione di sei variabili vengono utilizzate quattro di queste mappe. Con un ulteriore aumento del numero di variabili, le mappe di Karnot diventano praticamente inutilizzabili.

Conosciuto in Letteratura Le carte di Veitch differiscono solo in un diverso ordine degli insiemi di valori variabili e hanno le stesse proprietà delle mappe di Karnaugh.

Complesso di cubi

Il fallimento dei metodi grafici per un gran numero di variabili è compensato da vari metodi analitici per rappresentare funzioni booleane. Una di queste rappresentazioni è complesso di cubi, che utilizza la terminologia di uno spazio logico multidimensionale in combinazione con un simbolismo appositamente progettato.

). I cubi 0 corrispondenti ai costituenti dell'unità sono rappresentati da insiemi di valori variabili su cui la funzione è uguale all'unità. Ovviamente a verbale

Riso. 3.8 Complesso di cubi di funzioni di tre variabili ( un) e la sua rappresentazione simbolica ( B)

Si forma il complesso dei cubi massima copertura delle funzioni. Esclusi tutti quelli S-cubi che sono ricoperti da cubi di dimensione superiore, otteniamo coperture corrispondenti a forme senza uscita. Quindi, per l'esempio in esame (Fig. 3.8), abbiamo una copertura senza uscita

,

che corrisponde alla funzione . In questo caso, anche questa copertura è minima.

Per due funzioni booleane, l'operazione di disgiunzione corrisponde all'unione dei loro complessi di cubi e l'operazione di congiunzione all'intersezione dei loro complessi di cubi. La negazione di una funzione corrisponde all'addizione di un complesso di cubi, cioè, ed è determinata da tutti i vertici a cui la funzione assume il valore 0. Esiste quindi una corrispondenza biunivoca (isomorfismo) tra l'algebra di Funzioni booleane e insiemi booleani che rappresentano complessi di cubi.

La rappresentazione di una funzione sotto forma di complessi di cubi è meno visiva, ma i suoi vantaggi più importanti sono che le restrizioni sul numero di variabili vengono rimosse e la codifica delle informazioni è facilitata quando si utilizzano i computer.

Ridurre al minimo le funzioni booleane

Formulazione del problema. La minimizzazione di uno schema su base booleana si riduce alla ricerca della forma minima disgiuntiva, che corrisponde alla copertura minima. Il numero totale di lettere incluse nella forma normale è espresso dal costo della copertura , dove è il numero di -cubi che formano la copertura della funzione data in n variabili. La copertura minima è caratterizzata dal valore più basso del suo prezzo.

Di solito, il problema di minimizzazione viene risolto in due passaggi. In primo luogo, viene ricercata una copertura ridotta che includa tutti i cubi di dimensione massima, ma non contenga alcun cubo coperto da alcun cubo di questa copertura. La corrispondente forma normale disgiuntiva è chiamata ridotta e i suoi minitermini sono chiamati implicanti semplici. Per questa funzione, la copertura ridotta è l'unica, ma può essere ridondante per il fatto che alcuni cubi sono coperti da raccolte di altri cubi.

Nella seconda fase, viene eseguita la transizione dalle forme normali disgiuntive ridotte a quelle senza uscita, da cui vengono scelte le forme minime. Le forme senza uscita si formano escludendo tutti i cubi ridondanti dalla copertura ridotta, senza la quale l'insieme di cubi rimanenti costituisce ancora una copertura di una determinata funzione, ma con l'ulteriore esclusione di uno qualsiasi dei cubi, non copre più l'insieme di tutti vertici corrispondenti ai valori unitari della funzione, cioè cessa di essere una copertura.

Un cubo di copertura ridotta che copre i vertici di una determinata funzione che non sono coperti da altri cubi non può essere ridondante e sarà sempre incluso nella copertura minima. Tale cubo, così come l'implicante ad esso corrispondente, è chiamato estremale (implicante essenziale), ei vertici da esso coperti sono chiamati vertici cancellati. L'insieme degli estremali costituisce il fulcro della copertura, è chiaro che quando si passa da una copertura ridotta ad una minima, prima di tutto, devono essere selezionati tutti gli estremi. Se l'insieme degli estremi non forma una copertura, viene completato con una copertura da cubi dalla copertura ridotta.

Le definizioni date sono illustrate in fig. 3.9, dove la copertura ridotta (vedi Fig. 3.9a, ) e le coperture minime (Fig. 3.9b) e (vedi Fig. 3.9b) sono espresse come segue.

forma normale la formula logica non contiene segni di implicazione, equivalenza e negazione di formule non elementari.

La forma normale esiste in due forme:

    forma normale congiuntiva (CNF)-- congiunzione di diverse disgiunzioni, ad esempio $\left(A\vee \overline(B)\vee C\right)\wedge \left(A\vee C\right)$;

    forma normale disgiuntiva (DNF)-- disgiunzione di più congiunzioni, ad esempio $\left(A\wedge \overline(B)\wedge C\right)\vee \left(B\wedge C\right)$.

SKNF

Forma normale congiuntiva perfetta (SKNF) è un CNF che soddisfa tre condizioni:

    non contiene identiche disgiunzioni elementari;

    nessuna delle disgiunzioni contiene le stesse variabili;

    ogni disgiunzione elementare contiene ogni variabile nel dato CNF.

Qualsiasi formula booleana che non è identicamente vera può essere rappresentata in SKNF.

Regole per costruire SKNF secondo la tavola di verità

Per ogni insieme di variabili per cui la funzione è 0, viene registrata la somma, con variabili che hanno valore 1 prese con una negazione.

SDNF

Forma normale disgiuntiva perfetta (PDNF) è un DNF che soddisfa tre condizioni:

    non contiene congiunzioni elementari identiche;

    nessuna delle congiunzioni contiene le stesse variabili;

    ogni congiunzione elementare contiene inoltre tutte le variabili del DNF dato, nello stesso ordine.

Qualsiasi formula booleana che non sia identicamente falsa può essere rappresentata in SDNF, inoltre, in un modo univoco.

Regole per costruire SDNF secondo la tavola di verità

Per ogni insieme di variabili in cui la funzione è uguale a 1 si scrive il prodotto e si prendono con negazione le variabili che hanno valore 0.

Esempi di ricerca di SKNF e SDNF

Esempio 1

Scrivi una funzione logica secondo la sua tavola di verità:

Immagine 1.

Soluzione:

Usiamo la regola per costruire SDNF:

Figura 2.

Otteniamo SDNF:

Usiamo la regola di costruzione SKNF.

La forma normale congiuntiva è conveniente per le dimostrazioni automatiche di teoremi. Qualsiasi formula booleana può essere ridotta a CNF. Per fare questo, puoi usare: la legge della doppia negazione, la legge di de Morgan, la distributività.

YouTube enciclopedico

  • 1 / 5

    Formule in KNF:

    ¬ UN ∧ (B ∨ C) , (\ displaystyle \ neg A \ cuneo (B \ vee C),) (UN ∨ B) ∧ (¬ B ∨ C ∨ ¬ D) ∧ (D ∨ ¬ E) , (\ displaystyle (A \ vee B) \ wedge (\ neg B \ vee C \ vee \ neg D) \ wedge ( D\vee\neg E),) A ∧ B . (\ displaystyle A \ cuneo B.)

    Formule non in KNF:

    ¬ (B ∨ C) , (\ displaystyle \ neg (B \ vee C),) (LA ∧ B) ∨ C , (\ displaystyle (A \ cuneo B) \ vee C,) UN ∧ (B ∨ (D ∧ E)) . (\ displaystyle A \ cuneo (B \ vee (D \ cuneo E)).)

    Ma queste 3 formule non sono in CNF equivalenti alle seguenti formule in CNF:

    ¬ B ∧ ¬ C , (\ displaystyle \ neg B \ cuneo \ neg C,) (LA ∨ C) ∧ (B ∨ C) , (\ displaystyle (A \ vee C) \ cuneo (B \ vee C),) UN ∧ (B ∨ D) ∧ (B ∨ E) . (\ displaystyle A \ cuneo (B \ vee D) \ cuneo (B \ vee E).)

    Costruzione del CNF

    Algoritmo per la costruzione di CNF

    1) Sbarazzati di tutte le operazioni logiche contenute nella formula, sostituendole con le principali: congiunzione, disgiunzione, negazione. Questo può essere fatto usando formule equivalenti:

    A → B = ¬ A ∨ B , (\ displaystyle A \ freccia destra B = \ neg A \ vee B,) A ↔ B = (¬A ∨ B) ∧ (A ∨ ¬B) . (\ displaystyle A \ leftrightarrow B = (\ neg A \ vee B) \ wedge (A \ vee \ neg B).)

    2) Sostituire il segno di negazione, riferito all'intera espressione, con segni di negazione, riferiti a singole affermazioni variabili, sulla base delle formule:

    ¬ (LA ∨ B) = ¬ UN ∧ ¬ B , (\ displaystyle \ neg (A \ vee B) = \ neg A \ cuneo \ neg B,) ¬ (LA ∧ B) = ¬ LA ∨ ¬ B . (\ displaystyle \ neg (A \ cuneo B) = \ neg A \ vee \ neg B.)

    3) Sbarazzati dei doppi segni negativi.

    4) Applicare, se necessario, alle operazioni di congiunzione e disgiunzione le proprietà delle formule distributive e di assorbimento.

    Un esempio di costruzione di un CNF

    Riduciamo la formula a CNF

    F = (X → Y) ∧ ((¬Y → Z) → ¬X) . (\ displaystyle F = (X \ freccia destra Y) \ cuneo ((\ neg Y \ freccia destra Z) \ freccia destra \ neg X).)

    Trasformiamo la formula F (\ displaystyle F) a una formula che non contiene → (\displaystyle\freccia destra):

    F = (¬X ∨ Y) ∧ (¬ (¬ Y → Z) ∨ ¬ X) = (¬ X ∨ Y) ∧ (¬ (¬ ¬ Y ∨ Z) ​​​​∨ ¬ X) . (\ displaystyle F = (\ neg X \ vee Y) \ cuneo (\ neg (\ neg Y \ freccia destra Z) \ vee \ neg X) = (\ neg X \ vee Y) \ cuneo (\ neg (\ neg \ neg Y\vee Z)\vee \neg X).)

    Nella formula risultante, trasferiamo la negazione alle variabili e riduciamo le doppie negazioni:

    F = (¬X ∨ Y) ∧ ((¬Y ∧ ¬Z) ∨ ¬X) . (\ displaystyle F = (\ neg X \ vee Y) \ cuneo ((\ neg Y \ cuneo \ neg Z) \ vee \ neg X).)

    Ad esempio, la seguente formula è scritta in 2-CNF:

    (A ∨ B) ∧ (¬B ∨ C) ∧ (B ∨ ¬C) . (\ displaystyle (A \ lor B) \ terra (\ neg B \ lor C) \ terra (B \ lor \ neg C).)


superiore