2009-03-20 41 views
7

Sono abbastanza sicuro di ricordare di aver fatto qualcosa del genere in uno dei miei corsi universitari e che c'era un qualche tipo di formula, ma la mia mente mi sta deludendo.Come ridurre un'istruzione logica?

Data la dichiarazione: (A o B o D) e (A o C)

Sono abbastanza sicuro che questo può essere ridotto a: (A o B o D o c)

Ma non riesco a ricordare come andrei a provarlo.

Forse era una serie di tabelle logiche?

risposta

10

Non è possibile ridurre "(a OPPURE d) E (a O c)" a "(a OPPURE d) c" perché il primo non è soddisfatto con "c = true, a, b, d = falso ", mentre quest'ultimo è. Quindi non è possibile provare la riduzione corretta :)

In generale, ci sono molti modi per ridurre le formule booleane in termini di dimensioni, ed è anche una questione di cosa si desidera ottimizzare (dimensione totale? Numero medio di condizioni valutazioni?). Le mappe di Karnaugh funzionano solo per un piccolo numero di variabili. Ridurre le grandi formule booleane in quelle più piccole è un argomento avanzato che è fondamentale ad es. progettazione di circuiti logici automatici.

+0

bello! +1 – Learning

+0

così sono i loro programmi disponibili per fare questo? – Dave

+0

Checkout ad es. http://babbage.cs.qc.edu/courses/Minimize/ –

3

Karnaugh maps, la chiave è "disegnare" tutti gli input possibili e indicare le loro uscite. Quindi puoi iniziare a filtrare gli input che non fanno la differenza per l'output riducendo la mappa. Una volta ottimizzato, puoi quindi produrre la tua logica da esso.

4

Una Karnaugh mappa è tuo amico qui:

http://en.wikipedia.org/wiki/Karnaugh_map

Potrai tipo di bisogno di costruirlo in senso inverso dalle equazioni di cui sopra, ma è un buon strumento per dirvi se può essere ridotto ulteriore.

2

(A o B o D) e (A o C)

Ciò significa quando un è vero, è tutto vero!

=> a OR {(b o D) e (c)}

=> a OR (B e C) OR (d e C)

Credo che il risultato (a OR b OR D OR c) è sbagliato, ma dammi una mano quando è sbagliato.

0

Sì, puoi provarlo. Non è possibile ridurlo a (a OPPURE a c)

Guarda la terza riga in basso. La tua riduzione non riuscirebbe a generare la risposta corretta.

Basta eseguirlo tramite:

A B C D
0 0 0 0 = 0
0 0 0 1 = 0
0 0 1 0 = 0
.
.
.
1 0 0 0 = 1
1 0 0 1 = 1

Finora ho (A o (???)) :(

1

una o {(B o D) e c}

Ragionamento:. Se "a", quindi l'affermazione è vera altra cosa, è necessario B o d (per soddisfare la prima parte della dichiarazione) e C (soddisfa la seconda metà nei casi in cui! a

1

Utilizzo di Karnaugh maps:

Questo è un B o D O:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | X| X| X| 
01 | X| X| X| X| 
11 | X| X| X| X| 
10 | | X| X| X| 
    +-----------+ 

Questo è A o C:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | | X| X| 
01 | | | X| X| 
11 | X| X| X| X| 
10 | X| X| X| X| 
    +-----------+ 

loro intersezione, otteniamo:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | | X| X| 
01 | | | X| X| 
11 | X| X| X| X| 
10 | | X| X| X| 
    +-----------+ 

Ovviamente, questo è un O (qualcosa), dove (qualcosa) è:

 
    00 01 
11 | X| X| 
10 | | X|

Poiché (qualcosa) non è un rettangolo, richiede due espressioni, che possono essere sia AND'ed o OR'ed insieme, a seconda di come vogliamo avvicinarci. Useremo OR in questo esempio, poiché offre un'espressione più semplice.

In questo caso, possiamo raggruppare le due X una accanto all'altra con altre due per riempire l'intera linea del CD, quindi il cd può essere una delle espressioni. Possiamo anche raggruppare i due uno sopra l'altro con i due alla loro destra per formare un quadrato. Questo quadrato rappresenta l'espressione bc, dato che sia a che d variano all'interno del quadrato.

Quindi l'espressione finale è un OR ((C e D) o (B e D)), o un + cd + bd. Molto più bello, non è vero?

1

SOP forma minima:

y = a | b&c | c&d; 

POS hanno lo stesso costo (numero di porte di implementare diagramma logico):

y = (a|c)&(a|b|d);