# Mapa de Karnaugh

Un mapa de Karnaugh (también conocido como tabla de Karnaugh o diagrama de Veitch, abreviado como Mapa-K o Mapa-KV) es un diagrama utilizado para la simplificación de funciones algebraicas Booleanas. El mapa de Karnaugh fue inventado en 1953 por Maurice Karnaugh, un físico y matemático de los laboratorios Bell.
Los mapas de Karnaugh reducen la necesidad de hacer cálculos extensos para la simplificación de expresiones booleanas, aprovechando la capacidad del cerebro humano para el reconocimiento de patrones y otras formas de expresión analítica, permitiendo así identificar y eliminar condiciones muy inmensas.
El mapa de Karnaugh consiste en una representación bidimensional de la tabla de verdad de la función a simplificar. Puesto que la tabla de verdad de una función de N variables posee 2$^N$ filas, el mapa K correspondiente debe poseer también 2$^N$ cuadrados. Las variables de la expresión son ordenadas en función de su peso y siguiendo el código Gray, de manera que sólo una de las variables varía entre celdas adyacentes. La transferencia de los términos de la tabla de verdad al mapa de Karnaugh se realiza de forma directa, albergando un 0 o un 1, dependiendo del valor que toma la función en cada fila. Las tablas de Karnaugh se pueden fácilmente realizar a mano con funciones de hasta 6 variables, para funciones de mayor cantidad de variables es más eficiente el uso de software especializado.

## Cálculo de número de filas y columnas del mapa

El número de filas y columnas de un mapa de Karnaugh normalmente suele representarse como un mapa cuadrado (número de filas = número de columnas) cuando el número de variables es par (2, 4, 6, 8... etc) y cuando el número de variables es impar el número de filas es igual a la mitad del número de columnas; siguiendo la siguientes fórmulas:
* Cuando el número de variables es par:
    ${\rm {filas=columnas={\sqrt {2^{variables}}}}}$
* Cuando el número de variables es impar:
    ${\rm {columnas={\sqrt {2^{variables+1}}}}}$
    ${\rm {filas={\frac {columnas}{2}}}}$

## Ejemplo

Dada la siguiente función algebraica booleana representada como el sumatorio de sus minitérminos, y con las variables Booleanas $A$, $B$, $C$, $D$, la función se puede representar con dos notaciones distintas:
* $f(A,B,C,D)=\sum _(6,8,9,10,11,12,13,14)$
* $f(A,B,C,D)=({\overline {A}}BC{\overline {D}})+(A{\overline {B}}\,{\overline {C}}\,{\overline {D}})+(A{\overline {B}}\,{\overline {C}}D)+(A{\overline {B}}C{\overline {D}})+(A{\overline {B}}CD)+(AB{\overline {C}}\,{\overline {D}})+(AB{\overline {C}}D)+(ABC{\overline {D}})$

### Tabla de verdad

Utilizando los Minterm definidos, se elabora la tabla de verdad:
| # | $A$ | $B$ | $C$ | $D$ | $f(A,B,C,D)$ |
| 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 2 | 0 | 0 | 1 | 0 | 0 |
| 3 | 0 | 0 | 1 | 1 | 0 |
| 4 | 0 | 1 | 0 | 0 | 0 |
| 5 | 0 | 1 | 0 | 1 | 0 |
| 6 | 0 | 1 | 1 | 0 | 1 |
| 7 | 0 | 1 | 1 | 1 | 0 |
| 8 | 1 | 0 | 0 | 0 | 1 |
| 9 | 1 | 0 | 0 | 1 | 1 |
| 10 | 1 | 0 | 1 | 0 | 1 |
| 11 | 1 | 0 | 1 | 1 | 1 |
| 12 | 1 | 1 | 0 | 0 | 1 |
| 13 | 1 | 1 | 0 | 1 | 1 |
| 14 | 1 | 1 | 1 | 0 | 1 |
| 15 | 1 | 1 | 1 | 1 | 0 |

### Mapa de Karnaugh

Las variables de entrada pueden combinarse de 16 formas diferentes, por lo que el mapa de Karnaugh tendrá 16 celdas, distribuidas en una cuadrícula de 4 × 4. La razón por la cual en las tablas de 4 variables (por ejemplo) hay una transición de una columna rotulada como "01" a otra "11" (en vez de "10" que sería el próximo valor binario) se debe a que es un requisito en la construcción del mapa que en cada nueva columna (de izquierda a derecha) sólo varíe una variable a la vez. Entonces, al "01" le sigue el "11", de tal forma que sólo varía el primer bit, cosa que no ocurriría si se pasará del "01" al "10" (porque cambiarían ambos bits a la vez).
La combinación de dígitos binarios en el mapa representa el resultado de la función por cada combinación de entradas. Por ejemplo, la celda en la esquina superior izquierda del mapa es 0, porque el resultado de la función es ƒ = 0 cuando A = 0, B = 0, C = 0, D = 0. De igual manera, la esquina inferior derecha es 10 porque el resultado de la función es ƒ = 10 cuando A = 1, B = 0, C = 1, D = 0.
Una vez construido el mapa de Karnaugh, la siguiente tarea es la de seleccionar conjunto de términos denominados subcubos de manera que se obtenga el menor número de subcubos posible. Estos subcubos se seleccionan formando grupos de rectángulos que encierren a los unos del mapa, las áreas deben ser potencia de 2 (ej. 1, 2, 4, 8, ...) y se debe tratar de agrupar el mayor número de unos posible. En resumen hay que tomar en cuenta al hacer estos grupos de unos (subcubos) lo siguiente:
* Debemos utilizar todos los unos del mapa.
* Es mejor crear el menor número de grupos.
* Los unos pueden estar en varios grupos.
* El número de unos dentro de un grupo debe ser cualquier potencia de 2.
* Cuanto más grande sea un grupo, la simplificación de la función será mejor.
* No es necesario que todos los grupos tengan el mismo tamaño.
Qué términos seleccionar va dependiendo de cómo se quiera realizar la simplificación, puesto que esta puede realizarse por minitérminos o por maxitérminos.

## Aplicaciones

Los diagramas de Karnaugh pueden ser utilizados en la simplificación de sentencias definidas en lógica Booleana, construcción de estaciones de clasificación, selección y control de calidad de piezas fabricadas, entre otras aplicaciones.

## Software

Software disponible para asistir el mapeo de Karnaugh:
* Minimizador de mapas de Karnaugh en línea
* GKMap
* Karnaugh Map Minimizer
* WinLogiLab
* Boolean Calculator: VK, Truth Tables,...
* Karma, un conjunto de herramientas de síntesis lógica, incluyendo mapas de Karnaugh, la minimización de Quine-McCluskey, la enseñanza del módulo y más. Logic Circuit