f (a, b, c, d ) 0 , 2 ,3, 4 ,5 , 7 ,9 ,10 ,11 ,12 ,13 ,15 f (a, b, c, d ) 14 ,9 , 7 ,1 Tabla de verdad: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 a 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 b 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 c 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 d 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 f 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 Simplificación por Karnaugh: Mapa de Karnaugh: aaaaaab 00 01 11 10 cd 00 1 1 1 0 01 0 1 1 1 11 1 1 1 1 10 1 0 0 1 Simplificación por ceros: aaaaaab 00 01 11 10 cd 00 1 1 1 0 01 0 1 1 1 11 1 1 1 1 10 1 0 0 1 f ( a , b , c , d ) ( a b c d ) ( a b c d ) (b c d ) Simplificación por unos: aaaaaab aaaaaab 00 01 11 10 vaasadacío 00 01 11 10 cd cd 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 1 11 1 1 1 1 10 1 0 0 1 10 1 0 0 1 G2_1 G2_2 aaaaaab aaaaaab 00 01 11 10 vaasadacío 00 01 11 10 cd cd 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 1 11 1 1 1 1 10 1 0 0 1 10 1 0 0 1 G4_1, G4_2 G4_3 aaaaaab aaaaaab 00 01 11 10 vaasadacío 00 01 11 10 cd cd 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 1 11 1 1 1 1 10 1 0 0 1 10 1 0 0 1 G4_4 G4_5 Cobertura final: Los grupos G4_1, G4_2 y G4_4 tienen que entrar siempre, porque cubren unos (en negrita) no cubiertos por ningún otro grupo. Para cubrir el resto de los unos hay cuatro posibilidades igual de válidas: aaaaaab aaaaaab 00 01 11 10 vaasadacío 00 01 11 10 cd cd 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 1 11 1 1 1 1 10 1 0 0 1 10 1 0 0 1 Cobertura 1 Cobertura 2 aaaaaab aaaaaab 00 01 11 10 vaasadacío 00 01 11 10 cd cd 00 1 1 1 0 00 1 1 1 0 01 0 1 1 1 01 0 1 1 1 11 1 1 1 1 11 1 1 1 1 10 1 0 0 1 10 1 0 0 1 Cobertura 3 Cobertura 4 C1: G4_1, G4_2, G4_4, G4_5, G2_1 f ( a , b , c , d ) b c b c ad cd a c d C2: G4_1, G4_2, G4_4, G4_5, G2_2 f ( a , b , c , d ) b c b c ad cd a b d C3: G4_1, G4_2, G4_4, G4_3, G2_1 f ( a , b , c , d ) b c b c ad bd a c d C4: G4_1, G4_2, G4_4, G4_3, G2_2 f ( a , b , c , d ) b c b c ad bd a b d Simplificación por Quine-McCluskey: Para realizar la simplificación por unos, se escribe una tabla en la que aparezcan los términos para los que la función vale uno, agrupándolos según el número de unos que posee cada combinación binaria asociada (grado de los términos). A cada término se le da un número según el valor decimal de la combinación binaria que le corresponde. abcd Grado 0 0000 0010 Grado 1 0100 0011 0101 Grado 2 1001 1010 1100 0111 Grado 3 1011 1101 Grado 4 1111 m0 m2 m4 m3 m5 m9 m10 m12 m7 m11 m13 m15 Es obvio que los términos adyacentes en sentido algebraico son aquéllos que están en grupos de grado consecutivo y en los que coinciden todas las variables menos una. Partiendo de esta idea, se forma una segunda tabla en la que se comparan los términos de grados consecutivos y se agrupan aquéllos que son adyacentes; la expresión de cada nuevo término la hallaremos dejando igual las variables que no cambian y sustituyendo por guiones aquéllas que sí cambian. Todos los términos de la primera tabla que han sido utilizados para realizar la segunda se marcan como , para indicar que ya existen términos más sencillos que los contienen. Los términos que al final del proceso no estén marcados se denominarán términos primos. Grado 0 Grado 1 Grado 2 Grado 3 abcd 00_0 0_00 001_ _010 010_ _100 0_11 _011 01_1 _101 10_1 1_01 101_ 110_ _111 1_11 11_1 m0+m2 m0+m4 m2+m3 m2+m10 m4+m5 m4+m12 m3+m7 m3+m11 m5+m7 m5+m13 m9+m11 m9+m13 m10+m11 m12+m13 m7+m15 m11+m15 m13+m15 A partir de esta tabla repetimos la operación agrupando términos adyacentes (aquéllos que se encuentren en grupos consecutivos, tengan los guiones en las mismas posiciones y se diferencien en sólo un bit). Los términos que aparezcan repetidos se pueden eliminar según la ley de idempotencia. abcd Grado 0 _01_ _01_ Grado 1 _10_ _10_ __11 __11 _1_1 Grado 2 _1_1 1__1 1__1 m2+m3+m10+m11 m2+m10+m3+m11 m4+m5+m12+m13 m4+m12+m5+m13 m3+m7+m11+m15 m3+m11+m7+m15 m5+m7+m13+m15 m5+m13+m7+m15 m9+m11+m13+m15 m9+m13+m11+m15 El proceso de generar nuevas tablas continúa hasta que no sea posible agrupar más (todos los grupos contiguos difieran en más de un bit), cosa que ya sucede en este ejemplo. El procedimiento se completa ahora seleccionando el número mínimo de términos primos que cubran a todos los términos canónicos de los que se compone la función. Para ello se sigue el siguiente proceso: a) Se dibuja una tabla con tantas columnas como términos canónicos forman parte de la función, y tantas filas como términos primos hayan resultado. b) Para cada término primo (es decir, en cada fila), se marcan con un asterisco las columnas cuyo término canónico está contenido en el término primo. c) Una vez terminada la tabla, si existe alguna columna con un solo asterisco, se dice que el término primo que realice ese asterisco es esencial, y ha de formar parte obligatoriamente de la función reducida. d) Si todos los términos canónicos realizados por una fila son realizados a su vez por términos primos de otras filas de menor complicación, entonces esa fila se puede suprimir. Si dichos términos son de igual complejidad, entonces hay varias expresiones algebraicas mínimas. abcd m0 m2 1 00_0 * * 2 0_00 * 3 E _01_ * 4 E _10_ 5 __11 6 _1_1 7 E 1__1 m3 m4 m5 m7 m9 m10 m11 m12 m13 m15 * * * * * * * * * * * * * * * * * * * * Tras utilizar los términos esenciales, nos quedan por cubrir los términos canónicos m 0 y m7. Para cubrir m0 nos valen las filas 1 y 2, que son de complejidad equivalente (dos guiones en cada una), y para cubrir m7 nos sirven las filas 5 y 6, que también son de complejidad equivalente. Por lo tanto, hay cuatro soluciones mínimas posibles: C1: Filas 3, 4, 7, 1 y 5 f ( a , b , c , d ) b c b c ad a b d cd C2: Filas 3, 4, 7, 1 y 6 f ( a , b , c , d ) b c b c ad a b d bd C3: Filas 3, 4, 7, 2 y 5 f ( a , b , c , d ) b c b c ad a c d cd C4: Filas 3, 4, 7, 2 y 6 f ( a , b , c , d ) b c b c ad a c d bd Simplificación por ceros: El proceso es exactamente igual, pero teniendo en cuenta que trabajaremos con aquellos términos que valgan cero en la tabla de verdad y que, al formar las tablas, el grado de cada término es el número de ceros que contiene. Para nuestro ejemplo, obtenemos las siguientes tablas: f (a, b, c, d ) 14 ,9 , 7 ,1 abcd Grado 0 Grado 1 1110 M1 Grado 2 0110 M9 1000 M7 Grado 3 0001 M14 Grado 4 Agrupando según adyacencias (ahora los grupos son productos de términos): abcd Grado 0 Grado 1 _110 M1 · M9 Y ya no es posible agrupar más, así que se elabora la tabla de simplificación final: abcd M1 M7 M9 M14 3 E _110 * * 4 E 1000 * 7 E 0001 * Los tres términos que aparecen en la tabla son esenciales. La función resultante será por tanto (¡hay que recordar que para convertir cada combinación de variables en maxitérmino es necesario usar lógica invertida!): f a , b , c , d ( b c d ) ( a b c d ) ( a b c d )