Capítulo 9 Mapas de Karnaugh En este capítulo usaremos un diagrama dónde se representan las conjunciones fundamentales de una función como unos con el n de obtener una nueva representación de dicha función. El objetivo es que la nueva representación de la función sea minimal en un sentido que aclararemos más adelante. En esta representación se colocan las conjunciones adyacentes desde el punto de vista lógicosi dieren en sólo uno de sus literalesadyacentes desde el punto de vista físico para sacar ventaja de este hecho en el momento de agruparlas. Para lograr que la función que se obtenga sea minimal empezaremos deniendo los conceptos de cubos, cubos primos, cubos esenciales y otros. 9.1. Mapas de Karnaugh Empezaremos presentando el concepto de adyacencia lógica y adyacencia física. Denición 9.1 (Adyacencia Lógica) Dos conjunciones fundamentales se llaman adyacentes lógicas si y sólo si dieren sólo en uno de sus literales. Más aún dos términos con igual número de literales son adyacentes desde el punto de vista lógico si y sólo si dieren en solamente uno de sus literales. Un resultado inmediato, pero muy útil de la denición de adyacencia lógica es el siguiente: Si dos términos son ayacentes, entonces su suma se puede combinar usando distributividad para producir un nuevo término con un literal menos que es la variable en la que diferían. De igual manera si un conjunto de cuatro términos son tales que cada uno es adyacente a los otros tres, entonces se pueden combinar para producir un nuevo término que es equivalente a los cuatro originales, etc. Cada uno de los mini-términosconjunciones fundamentalesdel álgebra de boole de las funciones booleanas en n variables tiene n mini-términos adyacentes, que son los que se obtienen a partir de él cambiándole exactamente un literal. 15 Capítulo 9. Mapas de Karnaugh 16 valores de wx Por ejemplo, en el caso de n = 4, los ayacentes al mini-término wxyz son wxyz , wx yz , wxyz y wxy z Un mapa de Karnaugh para una función booleana f de B n en B es un conjunto de una o más tablas rectangulares en las que las celdas representan a todos los posibles átomos del álgebra de boole ⟨Fn , ⊆⟩ ubicados de tal forma que aparezcan adyacentes físicamente si lo son lógicamente. Note que el concepto de adyacencia física debe interpretarse módulo el número de las o columnas respectivamente, esto es, cada elemento de la primera la es física y lógicamente adyacente a su correspondiente en la última la. Lo mismo ocurre para la primera y la última columna. A continuación se muestra como luce la tabla de un mapa de Karnaugh para una función de B 4 en B en las variables w, x, y, z . wx/yz 00 01 11 10 00 01 11 10 Cuadro 9.1: Tabla para un mapa de Karnaugh de una función con 4 variables Observe que que tanto en las columnas como en las las el orden en que se escriben los valores de las dos variables correspondientes no es el léxico-gráco que correspondería a los binarios de los números 0, 1, 2, 3 sino que se invierten las dos últimas para lograr que sean lógicamente adyacentes. (01 no es lógicamente adyacente a 10, pero si a 11dieren en sólo un dígito) Un mapa de Karnaugh de una función booleana f de B n en B es una representación de los mini-términos o de los maxi-términos de la función en una o más tablas rectangulares en las que las celdas representan a todos los posibles átomos del álgebra de boole ⟨Fn , ⊆⟩ ubicados de tal forma que aparezcan adyacentes físicamente si lo son lógicamente en wx/yz 00 01 11 10 00 1 1 01 1 1 11 1 1 10 1 1 Cuadro 9.2: Tabla para un mapa de Karnaugh de una función con 4 variables 9.1. Mapas de Karnaugh 17 V. Yriarte Cómo dibujar el mapa de Karnaugh de una función El procedimiento para dibujar el mapa de Karnaugh de una función depende de la forma como tengamos expresada a la función. a continuación se hace una enumeración incompleta de las formas en que podríamos tener representada a la función. Se dispone de una tabla para la función. Se tiene a la función expresada en su forma canónica disyuntiva. Se tiene a la función expresada en una forma normal disyuntiva. No se tiene a la función en ninguna de estas formas, pero se tiene una expresión de la misma. A continuación ilustraremos estos caso con ejemplos. Ejemplo 9.1 (Mapa a partir de la tabla de una función) Hallar el ma- pa de Karnaugh de la siguiente función booleana f de B 3 en B denida por la siguiente tabla: x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 f (x, y, z) 1 0 1 1 1 0 1 0 Explicación: Como tenemos la tabla de la función basta con colocar en la tabla para el mapa de Karnaugh unos en las celdas correspondientes a los minitérminos donde la función toma el valor 1. Por ejemplo, la tabla de la función indica que f (0, 0, 0) = 1, luego se coloca un 1 en la casilla correspondiente al < 0, 0, 0 >, esto es, en primera casilla de la primera la. Haciendo el mismo proceso con las restantes celdas de la tabla se obtiene: x/yz 0 1 00 1 1 01 11 1 10 1 1 • Ejemplo 9.2 (Mapa a partir de la forma canónica disyuntiva) Hallar el mapa de Karnaugh de la función f (w, x, y, z) = w xyz + w xyz + wxyz + wxyz + wxyz + wxyz + wxyz Capítulo 9. Mapas de Karnaugh 18 Explicación: Como la función está en su forma canónica disyuntiva cada término genera un uno en el mapa de Karnaugh. Por ejemplo por el término wxyz hay que colocar un 1 en la casilla 0011. Se obtiene el siguiente mapa: wx/yz 00 01 11 10 00 01 1 1 11 1 1 10 1 1 1 • Ejemplo 9.3 (Mapa a partir de una forma normal disyuntiva) Dibujar el mapa de Karnaugh de la función f (w, x, y, z) = w + y z + w xy Explicación: Como tenemos la función escrita en una forma normal disyuntiva, podemos ver que conjunto de unos genera cada término. Empezaremos por el término con menos variables que introduce más unos. El termino w se satisface cuando w vale 1 que es en las últimas dos la del mapaempiezan con 11 y 10 respectivamente. Esto agrega 8 unos al mapa. Luego el término y z se satisface cuando tanto y como toman el valor ceroprimera columna del mapa, esto agrega 4 nuevos unos al mapa (uno se sobre-escribe). Finalmente, el término w xy se satisface cuando w y x son cero y y vale 1, esto introduce dos unos en las últimas dos columnas de la primera la para dar el siguiente mapa de Karnaugh wx/yz 00 01 11 10 00 1 1 1 1 01 11 1 10 1 1 1 1 1 1 1 • Nota bene: por supuesto que en el caso anterior se pudo haber obtenido la forma canónica disyuntiva de la función y proceder como en el ejemplo anterior. Para ello se expande cada término multiplicándolo por xi + xi , para cada variable xi que no aparezca en el término correspondiente. Por último, si la función no aparece en ninguna de las formas anteriores, dependiendo de la destreza de cada quien se puede o bien transformar la función hasta que corresponda con uno de los patrones anteriores o con un patrón dual. Dada una función booleana cualquiera, sus conjunciones fundamentales se pueden agrupar con otras lógicamente adyacentes para producir términos que tienen menos factores. Estas agrupaciones se logran sólo si la función tiene conjunciones fundamentales que sean lógicamente adyacente. En lo que sigue 9.1. Mapas de Karnaugh V. Yriarte 19 mostraremos un procedimiento para lograr esto de una forma segura. Para ello damos antes varios conceptos que nos ayudaran. Denición 9.2 (Cubo de orden k) Un cubo de orden k (o k-cubo) es un sub- conjunto de conjunciones fundamentales (o de disyunciones fundamentales) de tamaño 2k en el que cada conjunción del sub-conjunto es adyacente a exactamente k conjunciones del subconjunto. Nota: cuando en el mapa de Karnaugh lo construimos usando los unos tiene sentido hablar de las conjunciones fundamentales, pero cuando lo construimos usando los ceros entonces los cubos están formados por disyunciones fundamentales. Denición 9.3 (Implicación) Dadas dos funciones f, g ∈ Fn , diremos que f implica a g y lo denotaremos por f ⇒ g si y sólo si para todo x ∈ B n se tiene que si f (x) = 1, entonces g(x) = 1 si y sólo si f −1 ({1}) ⊆ g −1 ({1}). Note que si f ⇒ g y g ⇒ f , entonces f = g , y viceversa. Cuando se tiene un k -cubo de una función f de Fn , la disyunción de sus conjunciones fundamentales son equivalente a una conjunción con n−k literales, y puesto que dicha conjunción implica a la función f se le llama implicante de f . Cada uno de los mini-términos de un k -cubo implican a la conjunción formada al simplicar la disyunción formada por los términos del k -cubo. Denición 9.4 (Implicante) Un implicante de una función f , es una conjunción que implica a la función f . Denición 9.5 (Cubo Primo) Un cubo primo (o implicante primo) es un cubo que no está incluido dentro de ningún otro cubo. Denición 9.6 (Cubo Primo Esencial) Un cubo primo se dice que es esencial para la representación de una función si y sólo dicho cubo cubre alguna conjunción fundamental que que no cubre ningún otro cubo primo. Denición 9.7 (Implicante Primo) Un implicante primo de una función f , es un implicante de la función f que proviene de un cubo primo de la función f. Denición 9.8 (Implicante Esencial) Un implicante esencial de una función f , es un implicante de la función f que proviene de un cubo primo esencial de la función f . Ejercicio 9.1 (Cubos e Implicantes) De la función f representada por el siguiente mapa de Karnaugh halle los cubos primos y los cubos primos esenciales de la función f . Además halle los implicantes primos y los implicantes primos esenciales de la función f . Capítulo 9. Mapas de Karnaugh 20 wx/yz 00 01 11 10 00 1 01 1 1 11 1 1 1 10 1 1 Ejemplo 9.4 Dibuje el mapa de Karnaugh de la siguiente función f (w, x, y, z) = (w + x)z + yx e indique cuales son los cubos primos y los cubos primos esen- ciales. Explicación: Para evitar la manipulación algebraica consideremos la función g(w, x, y, z) = (w + x)z + yx que es el complemento de f . Hallaremos el mapa de Karnaugh de g y luego hallaremos el de f a partir del de g cambiando los ceros por unos y los unos por ceros. El término wz toma el valor 1 cuando tanto la w como la z toman el valor 1, esto ocurre en la intersección de las dos últimas las con las dos columnas centrales; ver el primer mapa, Además, puesto que xz toma el valor 1 ssi x toma el valor 0 y z toma el valor 1 lo cual ocurre en la intersección de la primera y última la del mapa con las dos columnas centrales, esto introduce cuatro nuevos 1's al mapa dos de los cuales sobre-escriben a dos de los ya presentes. Finalmente, puesto que que yx es 1 ssi tanto x como y toman el valor 1, esto ocurre en la intersección de las dos las centrales con las últimas dos columnas, se agregan cuatro nuevos unos al mapa, uno de los cuales coincide con uno ya agregado. Nos queda el segundo tablero. wx/yz 00 01 11 10 00 01 11 1 1 1 1 10 wx/yz 00 01 11 10 00 01 1 1 1 11 1 1 1 1 10 1 1 Y nalmente el mapa de Karnaugh de f es wx/yz 00 01 11 10 00 1 1 1 1 01 1 11 10 1 1 Los cubos primos son los conjuntos: Las cuatro esquinas que forman un 2-cubo, ( en amarillo en mapa ) {wxyz, wxyz, wxyz, wxyz} y se puede compactar a: xz . La primera columna que forman un 2-cubo, {wxyz, wxyz, wxyz, wxyz} y se puede compactar a: yz . Las dos primeras columnas de la la que forman un 1-cubo, ( en azul en mapa ) {wxyz, wxyz, } y se puede compactar a: wxy . 9.2. Suma minimal de productos 21 V. Yriarte Los cubos esenciales: en este caso todos los cubos primos son esenciales. El primero por ser el único cubo primo que cubre a wxyz y a wxyz ; el segundo por ser el único que cubre a wxyz y el tercero por ser el único que cubre a wxyz . wx/yz 00 01 11 10 00 1 1 1 1 01 1 11 10 1 1 • 9.2. Suma minimal de productos Nuestro próximo objetivo es hallar una expresión de una función en forma normal disyuntiva que sea minimal. Denición 9.9 (Suma minimal de productos) Diremos que una forma normal de una función es una suma minimal de productos cuando ella satisface las siguientes dos condiciones: 1. no existe otra expresión equivalente que incluya menos términos. 2. no existe otra expresión equivalente con el mismo número de términos y con menos literales. ¾Cómo hallar una suma minimal de productos? El mapa de Karnaugh de una función se puede usar para obtener diversas formas de expresar a dicha función como suma de productos. En particular se puede usar para obtener la o las expresiones de la función como suma minimal de productos si seguimos el procedimiento que se describe a continuación. 1. Hallar los cubos primos de la función. 2. Seleccionar de entre los cubos primos los cubos esenciales, si los hay. Ellos deben aparecer en cualquier suma minimal. 3. Se pueden presentar dos situaciones, a saber: a ) Los cubos esenciales cubren todos los 1 de la función. Entonces, en dicho caso, la suma que usa sólo a los esenciales es minimal. b ) Existe un conjunto de unos que no son cubiertos por los esenciales. Entonces hay que seleccionar de entre los cubos primos no esenciales un conjunto minimal que cubra los unos no cubiertos por los esenciales y sumar los términos seleccionados con los correspondientes a los esenciales. Capítulo 9. Mapas de Karnaugh 22 Ejemplo 9.5 Explicación: • Ejercicio 9.2 9.3. xy 00 01 10 11 Funciones de Conmutación f0 0 0 0 0 f1 0 0 0 1 f2 0 0 1 0 f3 0 1 0 0 f4 1 0 0 0 f5 0 1 1 1 f6 1 0 1 1 f7 1 1 0 1 f8 1 1 1 0 f9 0 1 1 0 f10 1 0 0 1 f11 0 0 1 1 f12 0 1 0 1 f13 0 0 1 1 1. f0 : f0 (x, y) = 0. Función constante 0. 2. f1 : f1 (x, y) = xy . Es la función AND. 3. f2 : f2 (x, y) = xy 4. f3 : f3 (x, y) = xy 5. f4 : f4 (x, y) = x y = x + y (NOR) 6. f5 : f5 (xy) = x + y . Es la función OR. (Dual de AND) 7. f6 : f6 (x, y) = x + y 8. f7 : f7 (x, y) = x + y . 9. f8 : f8 (x, y) = x + y = xy . (NAND) 10. f9 : f9 (x, y) = xy + xy . (EXOR) 11. f10 : f10 (x, y) = xy + x y . (NEXOR) 12. f11 : f11 (x, y) = x. Transferencia de x. 13. f12 : f12 (x, y) = y . Transferencia de y . 14. f13 : f13 (x, y) = x. Negado de x. 15. f14 : f14 (x, y) = y . Negado de y . 16. f15 : f15 (x, y) = 1. Función constante 1 (Dual y complemento de f0 .) Ejercicio 9.3 Liste cada una de las funciones booleanas de la tabla anterior con su complemento. f14 1 0 1 0 f15 1 1 1 1 9.4. Circuitos digitales 23 V. Yriarte Denición 9.10 Dada una función booleana f (x1 , . . . , xn ) en Fn , se dene su dual como fD (x1 , . . . , xn ) = f (x1 , . . . , xn ) Ejercicio 9.4 Muestre que el dual del dual de una función es la función origi- nal. Ejercicio 9.5 Liste cada una de las funciones booleanas de la tabla anterior con su dual. ¾Cuáles duales coinciden con la función original? En otras palabras, ¾cuáles son auto- duales? 9.4. Circuitos digitales Para representar un circuito digital se usan generalmente los siguientes circuitos básicos. Nombre Fórmula OR x+y . AND xy . Circuito NOT x . Por ejemplo la representación de la función f (x, y, z) = xy + xz es: y x xy + xz z . x Ejercicio 9.6 Construya circuitos para las funciones NOR, NAND, EXOR, NEXOR, usando los circuitos básicos dados en la tabla anterior. 9.5. Funciones Parciales Todas las funciones que hemos representado y minimizado hasta los momentos han sido funciones totales, esto es, funciones booleanas en las que a todos los elementos de B n la función le asigna un valor de B . Sin embargo hay casos en los que la función booleana que usamos para modelar a la función que necesitamos representar no es total, esto es no le asigna valor a todos los elementos de B n . En dichos casos podemos aprovecharnos de ello para obtener una expresión más compacta de la misma. Por ejemplo, si el número de elementos del conjunto de partida de la función que queremos modelar no en 2n para algún n, la función booleana no podrá ser total. Diremos que la función que estamos especicando tiene ciertas condiciones de indiferencia (don't care), esto es, como en la función original (lo que representa Capítulo 9. Mapas de Karnaugh 24 la función original) nunca se necesitará evaluar la función en ciertos valores, no importa si para dichos valores le asignamos en una nueva función extendida los 0 ó 1 dependiendo de nuestra conveniencia. 9.6. Aplicaciones 9.7. Ejercicios 9.7. V. Yriarte 25 Ejercicios 1. Use sólo transformaciones algebraicas para hallar la forma canónica conjuntiva de la función f (x, y, z) = x + yz . Repita el ejercicio con la función g(w, x, y.z) = yz + xz . 2. Supongamos que x, y.z son tres variables booleanas que representan los votos de tres personas X, Y, Z respectivamente que toman el valor 1 si la persona correspondiente votó a favor de cierta propuesta y cero en caso contrario. Denimos a f : B 3 → B como la función que toma el valor 1 si la mayoría votó a favor y 0 en caso contrario. a ) Construya la tabla (de verdad) de la función f . b ) Halle la forma canónica disyuntiva de la función f . c ) Halle directamente a partir de la tabla la forma canónica conjuntiva de f . d ) Manipule algebráicamente el resultado de 3) para obtener el de 2). e ) Halle una expresión de f como suma minimal de productos. 3. Dada una función booleana f (x1 , . . . , xn ) en Fn , se dene su dual como fD (x1 , . . . , xn ) = f (x1 , . . . , xn ) Obtenga las funciones duales de las siguientes funciones: a ) f (x, y, z) = (x + z)(xy + xyz) b ) g(x, y, z) = x(y + z)x(yz + yz) 4. Dibujar el circuito dado por la siguiente función: f (v, w, x, y, z) = ((v + x)(w + y) + xz)(w + z) 5. Una función se dice que es autodual si y sólo si coincide con su dual. Mostrar una función booleana de tres variables que sea autodual. 6. Una máquina para clasicar la fuerza de un individuo tiene como entrada cuatro variables booleanas w, x, y, z . La primera de las variables toma el valor 0 si y sólo si el usuario es femenino y 1 si es masculino. Las siguientes tres variables representan el valor de la fuerza f que está entre 0 y 7 ambos incluidos, si el usuario es fémina o entre 1 y 7 ambos incluidos, en caso contrario. En el caso de ser mujer, una fuerza menor que 3 es baja, mayor o igual que 3 pero menor que 6 es normal y mayor que 5 es alta. De no ser mujer, la fuerza es baja si es menor que 4, normal si mayor que 3 pero menor que 7 y alta si es 7. a ) Escriba las tablas de las funciones baja: B , normal: N y alta: A. Capítulo 9. Mapas de Karnaugh 26 b ) Para la función N , escriba un mapa de Karnaugh que use los mini- términos de la función y halle una suma-minimal-de-productos. Debe indicar cuáles son los cubos primos y los cubos esenciales. c ) Repita el ejercicio anterior con los maxi-términos para hallar un producto-producto-de-sumas. d ) ¾Cuál de las dos representaciones es mejor? 7. Use mapas de Karnaugh para hallar: a ) la forma normal disyuntiva optima y b ) la forma normal conjuntiva optima de la función f (w, x, y, z) = ∑ m (1, 6, 11, 12, 13, 15)+d(5, 7). En cada caso: a ) indique cuáles son los cubos primos y los esenciales. b ) indique cuál es el número de operaciones (not, or y and). c ) dibuje los circuitos. Por último compare los dos casos. 8. Consideremos el conjunto Fn de las funciones booleanas en las variables x, y, z . Si denotamos por X, Y, Z a los sub-conjuntos de {0, 1}3 donde x, y, z toman los valores 1 respectivamente y a B 3 como el universo del discurso, se puede representar en un diagrama de Venn los sub-conjuntos X, Y, Z y cualquier función en Fn . a ) Dibuje un cuadrado que represente a {0, 1}3 y en su interior dibuje óvalos que representen a X, Y, Z y los elementos en cada región. b ) ¾Qué puede decir de las adyacencias físicas con respecto a las adyacencias lógica? 9. Dibuje un diagrama de Venn de las siguientes funciones: a ) f (x, y, z) = xyz + xyz + xyz b ) y + yz 10. Halle el mapa de Karnaugh de la función booleana f (x, y, z) = z+wz+wxy directamente, esto es, sin pasar por la forma canónica disyuntiva. Luego exprésela como suma minimal de productos. Indique cuáles son los cubos primos y los esenciales. 11. Obtener los implicantes primos y los primos esenciales de las siguientes funciones: ∑ a ) f (w, x, y, z) = m (0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 15) ∑ b ) g(v, w, x, y, z) = m (0, 1, 2, 5, 10, 11, 14, 15, 16, 17, 18, 21, 26) c ) h(w, x, y, z) = ΠM (0, 2, 6, 7, 8, 10, 11, 15) 9.7. Ejercicios V. Yriarte 27 d ) i(v, w, x, y, z) = ΠM (0, 2, 3, 4, 5, 7, 11, 13, 15, 18, 19, 21, 23, 27, 29, 31) 12. Obtener los implicantes primos y los primos esenciales de las siguientes funciones: ∑ a ) f (w, x, y, z) = m (2, 6, 8, 9, 10) + d(0, 1, 3, 11) ∑ b ) g(v, w, x, y, z) = m (4, 7, 9, 12, 17, 18, 19) + d(0, 3, 11) c ) h(w, x, y, z) = ΠM (0, 3, 7, 11, 13)d(2, 4, 6, 12) d ) i(v, w, x, y, z) = ΠM (2, 8, 11, 12, 24, 25, 29)d(0, 6, 30) 13. 1. Escriba una función booleana que reciba como entrada un número entero n tal que 0 ≤ n ≤ 15 anotado en notación binaria como una palabra wxyz y de como salida un 1 si n es múltiplo de 4 y 0 en caso contrario. Halle una expresión de la función como una suma minimal de conjunciones y dibuje el circuito lógico que implementa dicha función.