# Función booleana

En matemáticas, una función booleana es una función cuyo dominio son las palabras conformadas por los valores binarios 0 o 1 ("falso" o "verdadero", respectivamente), y cuyo codominio son ambos valores 0 y 1.
Formalmente, son las funciones de la forma ƒ: B$^n$ → B, donde B = {0,1} y n un entero no negativo correspondiente a la aridad de la función.

## Modos de representación

Existen distintas formas de representar una función lógica, entre las que podemos destacar las siguientes:
* Algebraica
* Por tabla de verdad
* Numérica
* Gráfica
El uso de una u otra dependerá de cada caso.

### Algebraica

Se utiliza cuando se realizan operaciones algebraicas. A continuación se ofrece un ejemplo con distintas formas en las que se puede expresar algebraicamente una misma función de tres variables.
* F = [(A + BC’)’ + ABC]’ + AB’C
* F = A’BC’ + AB’C’ + AB’C + ABC’
* F = (A + B + C)(A + B + C’)(A + B’ + C’)(A’ + B’ + C’)
* F = BC’ + AB’
* F = (A + B)(B’ + C’)
* F = [(BC’)’(CB)´ (AB’)’]’
* F = [(A + B)’ + (B’ + C’)’]’
La expresión 1. puede proceder de un problema lógico planteado o del paso de unas especificaciones a lenguaje algebraico. Las formas 2. y 3. reciben el nombre expresiones canónicas: de suma de productos (sum-of-products, SOP, en inglés), la 2., y de productos de sumas (product-of-sums, POS, en inglés), la 3.; su característica principal es la aparición de cada una de las variables (A, B y C) en cada uno de los sumandos o productos.

### Por tabla de verdad

* ${\begin{array}{|c|c|c|c|}\hline A&B&C&F(A,B,C)\\\hline 0&0&0&0\\0&0&1&0\\0&1&0&1\\0&1&1&0\\1&0&0&1\\1&0&1&1\\1&1&0&1\\1&1&1&0\\\hline \end{array}}$
Una tabla de verdad contiene todos los valores posibles de una función lógica dependiendo del valor de sus variables. El número de combinaciones posibles para una función de n variables vendrá dado por 2$^n$. Una función lógica puede representarse algebraicamente de distintas formas como acabamos de ver, pero solo tiene una tabla de verdad. La siguiente tabla corresponde a la función lógica del punto anterior.
La forma más cómoda para ver la equivalencia entre una tabla de verdad y una expresión algebraica es cuando esta última se da en su forma canónica. Así, la función canónica de suma de productos (o forma canónica disyuntiva)
       F = A’BC’ + AB’C’ + AB’C + ABC’
nos indica que será 1 cuando lo sea uno de sus sumandos, lo que significa que tendrá por lo tanto cuatro combinaciones que lo serán (010 para A’BC’, 100 para AB’C’, 101 para AB’C y 110 para ABC’) siendo el resto de combinaciones 0. Con la función canónica de producto de sumas (o forma canónica conjuntiva) se puede razonar de forma análoga, pero en este caso observando que la función será 0 cuando lo sea uno de sus productos.
También es fácil obtener la tabla de verdad a partir de la función simplificada, pero no así a la inversa.

### Numérica

La representación numérica es una forma simplificada de representar las expresiones canónicas. Si consideramos el criterio de sustituir una variable sin negar por un 1 y una negada por un 0, podremos representar el término, ya sea una suma o un producto, por un número decimal equivalente al valor binario de la combinación. Por ejemplo, los siguientes términos canónicos se representarán del siguiente modo (observe que se toma el orden de A a D como de mayor a menor peso):
    $AB^{\prime }CD=1011_{2}=11_{10}$
    $A^{\prime }+B+C^{\prime }=0100_{2}=4_{10}$
Para representar una función canónica en suma de productos utilizaremos el símbolo $\sum _{n}$ (sigma) y en producto de sumas $\prod _{n}$ (pi), donde n indicará el número de variables. Así, la representación numérica correspondiente a la tabla de verdad del punto anterior quedará como:
    $F=\sum _{3}(2,4,5,6)=\prod _{3}(0,1,3,7)$
Matemáticamente se demuestra, que para todo término i de una función, se cumple la siguiente ecuación:
    $F=\left[\sum _{i}(i)\right]^{\prime }=\prod _{n}(2^{n-1}-i)$
A modo de ejemplo se puede utilizar esta igualdad para obtener el producto de sumas a partir de la suma de productos del ejemplo anterior:
    $F=\sum _{3}(2,4,5,6)=\left[\sum _{4}(2,4,5,6)\right]^{\prime \prime }=\left[\sum _{4}(0,1,3,7)\right]^{\prime }=\prod _{3}(0,1,3,7)$

### Gráfica

La representación gráfica es la que se utiliza en circuitos y esquemas electrónicos. En la siguiente figura se representan gráficamente dos funciones algebraicas, una con símbolos no normalizados, superior, y la otra con normalizados, inferior (véanse los símbolos de las puertas lógicas)

## Métodos de simplificación

Por simplificación de una función lógica se entiende la obtención de su mínima expresión. A la hora de implementar físicamente una función lógica se suele simplificar para reducir así la complejidad del circuito.
A continuación se indican los modos más usuales de simplificar una función lógica.

### Algebraico

Para la simplificación por este método no sólo bastará con conocer todas las propiedades y teoremas del álgebra de Boole, además se debe desarrollar una cierta habilidad lógico-matemática que se adquiere fundamentalmente con la experiencia.
Como ejemplo se simplificará la siguiente función:
       F = A’C’ + ABC + BC’ + A’B’C + A’BC
Observando cada uno de los sumando podemos ver que hay factores comunes en los sumandos 2º con 5º y 4º con 5º que conllevan simplificación:
       F = A’C’ + BC’ + BC(A + A’) + A’C(B + B’)
Note que el término 5º se ha tomado dos veces, de acuerdo con la propiedad que dice que A + A = A. Aplicando las propiedades del álgebra de Boole (A + A' = 1 y A . 1 = A), queda
       F = A’C’ + BC’ + BC + A’C
Repitiendo nuevamente el proceso,
       F = A’( C’ + C) + B( C’ + C) = A’ + B
No siempre las funciones son tan fáciles de simplificar como la anterior. El método algebraico, por lo general, no resulta cómodo para los no expertos, a los cuales, una vez simplificada una ecuación le pueden quedar serias dudas de haber conseguido la máxima simplificación.

### Mapa de Karnaugh

Este método consiste en formar diagramas de 2$^n$ cuadros, siendo n el número de variables. Cada cuadro representa una de las diferentes combinaciones posibles y se disponen de tal forma que se puede pasar de un cuadro a otro en las direcciones horizontal o vertical, cambiando únicamente una variable, ya sea en forma negada o directa.
Este método se emplea fundamentalmente para simplificar funciones de hasta cuatro variables. Para un número superior utilizan otros métodos como el numérico. A continuación pueden observarse los diagramas, también llamados mapas de Karnaugh, para dos, tres y cuatro variables.
Es una práctica común numerar cada celda con el número decimal correspondiente al término canónico que albergue, para facilitar el trabajo a la hora de plasmar una función canónica.
Para simplificar una función lógica por el método de Karnaugh se seguirán los siguientes pasos:
* Se dibuja el diagrama correspondiente al número de variables de la función a simplificar.
* Se coloca un 1 en los cuadros correspondientes a los términos canónicos que forman parte de la función.
* Se agrupan mediante lazos los unos de casillas adyacentes siguiendo estrictamente las siguientes reglas:
** Dos casillas son adyacentes cuando se diferencian únicamente en el estado de una sola variable.
** Cada lazo debe contener el mayor número de unos posible, siempre que dicho número sea potencia de dos (1, 2, 4, etc.)
** Los lazos pueden quedar superpuestos y no importa que haya cuadrículas que pertenezcan a dos o más lazos diferentes.
** Se debe tratar de conseguir el menor número de lazos con el mayor número de unos posible.
* La función simplificada tendrá tantos términos como lazos posea el diagrama. Cada término se obtiene eliminando la o las variables que cambien de estado en el mismo lazo.
A modo de ejemplo se realizan dos simplificaciones de una misma función a partir de sus dos formas canónicas:
    $F=\sum _{3}(0,2,3,4,7)=\prod _{3}(1,5,6)$
De acuerdo con los pasos vistos anteriormente, el diagrama de cada función quedará del siguiente modo:
La función simplificada tendrá tres sumandos en un caso y dos productos en el otro. Si nos fijamos en el mapa correspondiente a la suma de productos, observamos que en el lazo 1 cambia la variable A (en la celda 0 es negada y en la 4 directa), en el lazo 2 es la C y en el lazo 3 vuelve a ser A. por lo tanto, la ecuación simplificada es:
    $F=B^{\prime }C^{\prime }+A^{\prime }B+BC$
Razonando de modo similar en el mapa de productos de sumas, nos quedará lo siguiente:
    $F=(B+C^{\prime })(A^{\prime }+B^{\prime }+C)$

### Numérico de Quine-McCluskey

El algoritmo Quine-McCluskey permite la simplificación de funciones lógicas de cualquier número de variables y es el que se utiliza para diseñar aplicaciones informáticas en las que se necesite obtener funciones simplificadas.
A continuación se indican los pasos a seguir en este método a partir de un ejemplo.
* Se expresa la función a simplificar en su forma canónica de suma de productos.
    Sea la siguiente función a simplificar:
    $F=S_{4}(0,1,2,3,5,9,11,12,13,15)$
* Se forma una tabla con el valor decimal de la combinación, el estado de las variables y el índice (número de unos que contiene el estado de las variables).
| Comb. | Estado | Índice |
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 1 |
| 3 | 0011 | 2 |
| 5 | 0101 | 2 |
| 9 | 1001 | 2 |
| 11 | 1011 | 3 |
| 12 | 1100 | 2 |
| 13 | 1101 | 3 |
| 15 | 1111 | 4 |
* Se agrupan las combinaciones cuyos estados difieren en una sola variable, sustituyéndola por un guion bajo (_). Las combinaciones utilizadas se marcan con un aspa (X). Hay que fijarse en las combinaciones cuya diferencia entre sus respectivos índices es la unidad.
Agrupación de las combinaciones :
| Comb. | Estado | Índice | Comb. | Estado | Índice |
| 0 X | 0000 | 0 | 0,1 | 000_ | 0 |
| 1 X | 0001 | 1 | 0,2 | 00_0 | 0 |
| 2 X | 0010 | 1 | 1,3 | 00_1 | 1 |
| 3 X | 0011 | 2 | 1,5 | 0_01 | 1 |
| 5 X | 0101 | 2 | 1,9 | _001 | 1 |
| 9 X | 1001 | 2 | 3,11 | _011 | 2 |
| 11 X | 1011 | 3 | 5,13 | _101 | 2 |
| 12 X | 1100 | 2 | 9,11 | 10_1 | 2 |
| 13 X | 1101 | 3 | 9,13 | 1_01 | 2 |
| 15 X | 1111 | 4 | 11,15 | 1_11 | 3 |
| | | | 12,13 | 110_ | 2 |
| | | | 13,15 | 11_1 | 3 |
* Se repite el proceso anterior las veces que sean necesarias y se van eliminando estados idénticos.
* Se forma una tabla con las combinaciones finales y las no agrupadas. Se toman como filas las combinaciones finales y las no agrupadas y como columnas los valores decimales de dichas combinaciones. Cada celda que contenga el valor decimal de una combinación se marca con un aspa. A continuación nos fijamos en aquellas columnas con una sola aspa; sus combinaciones serán esenciales. Finalmente se toman aquellas combinaciones de los valores decimales no seleccionados, teniendo precaución de no tomar aquellas combinaciones cuyos valores decimales hayan sido ya tomados en otras combinaciones. La función simplificada final viene dada por las combinaciones esenciales y estas últimas.

## Funciones incompletas

Hasta ahora todas las funciones estudiadas tienen definido un valor lógico, 0 o 1, para cada una de las posibles combinaciones. Estas funciones se denominan completas o totalmente definidas. También existen funciones con una o varias combinaciones no definidas, llamadas funciones incompletas. Esta situación puede deberse por las dos causas siguientes:
* Hay combinaciones de entrada que no existen, por lo que a la salida se le puede asignar indistintamente el valor 0 o el 1.
* En ciertas combinaciones de entrada la salida del sistema lógico está inhibida, siendo por lo tanto su valor indiferente.
En la tabla de verdad de una función incompleta, los términos indiferentes se designan mediante una equis (X). En cuanto a la forma canónica se separan los términos definidos de los que no lo son (indicados mediante el símbolo φ).
A la hora de simplificar una función incompleta, los términos indiferentes servirán como “comodines” a la hora de tomar lo lazos, esto es, si nos interesa que sea un 1 porque así el lazo es mayor, lo tomaremos como 1, y en caso contrario como 0.

## Forma canónica

Una Función lógica, que está compuesta por operador lógico, puede ser expresada en forma canónica usando los conceptos de minitérmino y maxitérmino. Todas las funciones lógicas son expresables en forma canónica, tanto como una suma de minitérmino como producto de maxitérmino. Esto permite un mejor análisis para la simplificación de dichas funciones.

### Minitérmino

Para una función booleana de n variables x1,...xn, un producto booleano en el que cada una de las n variables aparece una sola vez (negada o sin negar) es llamado minitérmino. Es decir, un minitérmino es una expresión lógica de n variables consistente únicamente en el operador conjunción lógica (AND) y el operador complemento o negación (NOT). Por ejemplo, abc, ab'c y abc' son ejemplos de minitérminos para una función booleana con las tres variables a, b y c.

### Maxitérmino

Un maxitérmino es una expresión lógica de n símbolos que consiste únicamente en la disyunción lógica y el operador complemento o negación. Los cuales están unidos por los operadores del álgebra de boole (+ . ‘) Por ejemplo, los siguientes términos canónicos son maxitérminos:
* a + b' + c
* a' + b + c