2009-03-20 8 views
7

Estoy bastante seguro de que recuerdo haber hecho algo como esto en uno de mis cursos de nivel universitario y que había algún tipo de fórmula para ello, pero mi mente me está fallando más allá de eso.Cómo reducir una declaración lógica?

Dada la declaración: (A o B o D) y (A o C)

Estoy bastante seguro de que esto se puede reducir a: (A o B o D o C)

Pero no recuerdo cómo iba a probarlo.

¿Tal vez fue una serie de tablas lógicas?

Respuesta

10

No puede reducir "(a OR b OR d) AND (a O c)" a "(a OR b OR d O c)" porque el primero no está satisfecho con "c = true, a, b, d = falso ", mientras que el último es. Por lo tanto, no puede probar la reducción correcta tampoco :)

En general, hay muchas formas de reducir las fórmulas booleanas en cuanto a tamaño, y también es una cuestión de lo que desea optimizar (tamaño total? Número promedio de condiciones evaluaciones?). Los mapas de Karnaugh funcionan solo para un pequeño número de variables. La reducción de las grandes fórmulas booleanas en las más pequeñas es un tema avanzado clave en, p. diseño de circuito lógico automático.

+0

agradable! +1 – Learning

+0

así que ¿están sus programas disponibles para hacer esto? – Dave

+0

Pago, por ejemplo http://babbage.cs.qc.edu/courses/Minimize/ –

3

mapas de Karnaugh, la clave es "dibujar" todas las entradas posibles e indicar sus salidas. Luego puede comenzar a filtrar las entradas que no hacen una diferencia en la salida, lo que reduce el mapa. Una vez optimizado, puede generar su lógica a partir de él.

Mapa
4

Un Karnaugh es su amiga aquí:

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

Usted tipo de tiene que construir a la inversa con las ecuaciones de arriba, pero es una buena herramienta para decir si se puede reducir promover.

2

(A o B o D) y (A o C)

Esto significa que cuando a es cierto, todo es verdad!

=> a o {(B o D) y (c)}

=> a o (B y C) o (D y C)

Creo que el resultado (A o B O d OR c) es incorrecto, pero échame una mano cuando esté mal.

0

Sí, puede probarlo. No puede reducirlo a (a OR b OR d O c)

Mire la tercera línea a continuación. Su reducción no generaría la respuesta adecuada.

Sólo tiene que ejecutar a través de:

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

Hasta ahora tengo (A o (???)) :(

1

una o {(B o D) y c}

Razonamiento:. Si "a", entonces la afirmación es cierta otra cosa, se requiere B o D (para satisfacer la primera parte de la declaración) y C (satisface la segunda mitad de los casos cuando! a

1

Usando Karnaugh maps:

Este es un B O o D:

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

Ésta es 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| 
    +-----------+ 

ellos intersección, obtenemos:

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

Obviamente, esta es una O (algo), donde el (algo) es:

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

Dado que (algo) no es un rectángulo, requiere dos expresiones, que pueden ser AND'ed o OR'ed juntas, dependiendo de cómo queremos acercarnos a ellas. Usaremos OR en este ejemplo, ya que da una expresión más simple.

En este caso, podemos agrupar las dos X una junto a la otra con dos más para completar toda la línea de cd, por lo que cd puede ser una de las expresiones. También podemos agrupar los dos uno encima del otro con los dos a su derecha para formar un cuadrado. Este cuadrado representa la expresión bc, ya que tanto a como d varían dentro del cuadrado.

Así la expresión final es un O ((C y D) o (B y D)), o un + cd + bd. Mucho mejor, ¿no?

1

SOP forma mínima:

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

POS tienen el mismo costo (número de puertas para implementar diagrama lógico):

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