Solucionador de Expresiones Booleanas

tabla de verdad con columnas de subexpresiones paso a paso

Cargando simulación interactiva...

Elige la variable que más explica 🖖

Truco de hardware útil: elige una entrada que separe mejor el comportamiento VERDADERO/FALSO, luego implementa cada rama y multiplexa por esa entrada.

una fila por cada posibilidad 🖖

Una tabla de verdad es simplemente una lista exhaustiva: anota cada combinación posible de entradas VERDADERO/FALSO y muestra qué hace la expresión en cada caso. Con n variables hay 2ⁿ filas, así que cada nueva entrada duplica la tabla: 3 variables dan 8 filas, 5 dan 32. Las columnas intermedias también importan: construyen cada subexpresión paso a paso, para que sigas la lógica operador a operador en vez de fiarte del resultado final.

32 filas, cuatro mil millones de funciones 🖖

Aquí está el giro: la tabla de 5 variables tiene solo 32 filas, pero el número de expresiones distintas que puedes definir sobre ellas es 2³² = 4,294,967,296. Cada manera diferente de rellenar la columna de salida con 0 y 1 es una función booleana propia, y en total hay 2^(2ⁿ). Así que esta modesta herramienta recorre en silencio un espacio de más de cuatro mil millones de circuitos lógicos posibles: uno por cada patrón que puede tomar la columna final.

EXPRESIONES BOOLEANAS — ¿QUÉ LEY SIMPLIFICA ESTA?

¿En qué caso de simplificación está?

Dos expresiones son la misma expresión exactamente cuando sus tablas de verdad coinciden, y esa es la única prueba que zanja el asunto. Las leyes del álgebra de Boole son solo las coincidencias que conviene reconocer de vista: meter un NOT hacia dentro, desarrollar un paréntesis, quitar un término que no cambia nada y detectar el término que los demás ya cubrían. Levante la tabla y la respuesta deja de estar en duda.

Un NOT sobre un paréntesis: De Morgan cambia el conector ¬(A ∧ B) = ¬A ∨ ¬B
Un paréntesis que desarrollar: distribución A ∧ (B ∨ C) = (A∧B) ∨ (A∧C)
Un término que no aporta nada: absorción A ∨ (A ∧ B) = A
Un término que los demás ya cubren: el teorema del consenso (A∧B) ∨ (¬A∧C) ∨ (B∧C) = (A∧B) ∨ (¬A∧C)
La expresión deja de depender de sus entradas A ∨ ¬A = 1

01

Un NOT sobre un paréntesis: De Morgan cambia el conector

Lo que sabe: Una negación aplicada a una expresión entera. Al meterla dentro, el AND se vuelve OR o el OR se vuelve AND, y cada parte queda negada por el camino.

Ley: ¬(A ∧ B) = ¬A ∨ ¬B

Ejemplo resuelto: !(A & B) es la misma expresión que !A | !B: las dos columnas de salida coinciden en las cuatro filas

Abrir este caso: De Morgan !(A & B)
Un NOT sobre un paréntesis: De Morgan cambia el conector. Meta el NOT dentro y el AND pasa a OR; las dos columnas de salida son idénticas. Una negación aplicada a una expresión entera. Al meterla dentro, el AND se vuelve OR o el OR se vuelve AND, y cada parte queda negada por el camino.
Meta el NOT dentro y el AND pasa a OR; las dos columnas de salida son idénticas.

02

Un paréntesis que desarrollar: distribución

Lo que sabe: El AND se distribuye sobre el OR igual que la multiplicación sobre la suma. Al desarrollar sale una suma de productos, la forma estándar para pasar de expresión a circuito.

Ley: A ∧ (B ∨ C) = (A∧B) ∨ (A∧C)

Ejemplo resuelto: A & (B | C) es lo mismo que (A & B) | (A & C), en las ocho filas de tres variables

Abrir este caso: A & (B | C)
Un paréntesis que desarrollar: distribución. Desarrollar el paréntesis da dos términos producto cuyo OR coincide con el original. El AND se distribuye sobre el OR igual que la multiplicación sobre la suma. Al desarrollar sale una suma de productos, la forma estándar para pasar de expresión a circuito.
Desarrollar el paréntesis da dos términos producto cuyo OR coincide con el original.

03

Un término que no aporta nada: absorción

Lo que sabe: Cuando un término ya implica a otro, el más débil se puede quitar. A | (A & B) es sencillamente A, sea lo que sea B.

Ley: A ∨ (A ∧ B) = A

Ejemplo resuelto: A | (A & B) = A: donde A vale 1 la salida es 1 de todos modos, y donde A vale 0 el segundo término también es 0

Abrir este caso: ley de absorción
Un término que no aporta nada: absorción. El segundo término solo se activa donde el primero ya lo hacía, así que nunca afecta a la salida. Cuando un término ya implica a otro, el más débil se puede quitar. A | (A & B) es sencillamente A, sea lo que sea B.
El segundo término solo se activa donde el primero ya lo hacía, así que nunca afecta a la salida.

04

Un término que los demás ya cubren: el teorema del consenso

Lo que sabe: Tres términos donde el tercero es el consenso de los dos primeros: solo cubre casos que aquellos ya cubren entre los dos. Quitarlo no cambia ninguna fila de la tabla.

Ley: (A∧B) ∨ (¬A∧C) ∨ (B∧C) = (A∧B) ∨ (¬A∧C)

Ejemplo resuelto: (A & B) | (!A & C) | (B & C) es igual a (A & B) | (!A & C): el tercer término sobra en las ocho filas

Abrir este caso: teorema del consenso
Un término que los demás ya cubren: el teorema del consenso. Quitar el tercer término deja la columna de salida intacta en todas las filas. Tres términos donde el tercero es el consenso de los dos primeros: solo cubre casos que aquellos ya cubren entre los dos. Quitarlo no cambia ninguna fila de la tabla.
Quitar el tercer término deja la columna de salida intacta en todas las filas.

05

La expresión deja de depender de sus entradas

Lo que sabe: Una columna de solo unos es una tautología; una de solo ceros, una contradicción. En ambos casos las variables han dejado de importar.

Ley: A ∨ ¬A = 1

Ejemplo resuelto: A | !A vale 1 en las dos filas, y su imagen especular A & !A vale 0 en las dos

Abrir este caso: tautología A | !A
La expresión deja de depender de sus entradas. Las dos filas dan la misma salida, así que la entrada no influye en absoluto. Una columna de solo unos es una tautología; una de solo ceros, una contradicción. En ambos casos las variables han dejado de importar.
Las dos filas dan la misma salida, así que la entrada no influye en absoluto.
Referencias (2)

Problemas resueltos al detalle

  1. Suma de minitérminos para la expresión !(A & B) 5 pasos

    La expresión es !(A & B), sobre las dos variables A y B. Cuente las filas en las que resulta 1, escriba la función como una suma de minitérminos y determine qué se puede construir solo con esta puerta y nada más.

    1. Dos variables, libre cada una de ser 0 o 1, por lo que la tabla tiene una fila por par. El analizador informa de ese recuento antes de evaluar nada, porque el tamaño del problema queda fijado por las variables y no por la expresión escrita sobre ellas.

    2. Se completa primero la columna interior. A & B vale 1 solo cuando ambas entradas valen 1, por lo que tres filas llevan 0 y la última lleva 1. La tabla muestra esta subexpresión en su propia columna junto al resultado, lo que permite comprobar el análisis en lugar de solo la respuesta.

    3. NOT invierte cada entrada y no hace nada más. Los tres ceros se convierten en unos y el único uno se convierte en cero, por lo que la columna de resultados es el negativo exacto de la columna anterior.

    4. Eso deja 3 de las 4 filas en 1. Como fracción es 0,75, que el panel expresa como un porcentaje de las combinaciones de entrada.

    5. Designe cada fila verdadera mediante la conjunción que vale 1 en esa fila y en ninguna otra (su minitérmino) y aplique la operación OR a las tres. Esta es la forma normal disyuntiva canónica, y es la lista que la herramienta imprime bajo la tabla.

    Respuesta

    NAND vale 1 en 3 de las 4 filas, el 75,0 %, y su forma normal consta de esos 3 minitérminos. Llegamos ahora al resultado principal. Introduzca A en ambas entradas y A NAND A es !(A & A), que es !A: se obtiene NOT. Pase la salida de una NAND a ambas entradas de otra y las dos negaciones se cancelan, por lo que (A NAND B) NAND (A NAND B) es AND. Para la OR, niegue primero ambas entradas: (A NAND A) NAND (B NAND B) es !(!A & !B), y !A & !B vale 1 solo en la fila 0,0, de modo que su negación vale 1 en las otras 3, lo cual es A OR B. NOT, AND y OR son exactamente lo que el paso 5 utilizó para escribir una función como forma normal, por lo que esta única columna de 4 filas puede expresar cualquier función booleana de cualquier número de variables.

  2. Construir la columna desde cero para !A | !B 6 pasos

    Tome ahora !A | !B, que no comparte ningún operador con !(A & B): ni paréntesis negado ni AND por ninguna parte. Construya su columna desde cero y vea dónde resulta.

    1. Dos columnas NOT, ambas impresas junto al resultado. !A vale 1 en las 2 filas donde A es 0; !B vale 1 en las 2 filas donde B es 0. Coinciden en una fila y ambas fallan en una fila.

    2. OR vale 0 únicamente cuando sus dos entradas son 0, y eso ocurre en exactamente una fila: A=1, B=1, la fila donde ninguna negación sobrevive. Todas las demás filas tienen al menos un 1 que aportar.

    3. Por tanto, 3 de las 4 filas valen 1: el mismo 0,75, expresado como el mismo porcentaje.

    4. Los minitérminos también coinciden, término a término y en el mismo orden que en el primer problema.

    5. Ahora compare las dos expresiones sin necesidad de tabla alguna. A & B vale 1 en exactamente una fila, por lo que !(A & B) vale 0 en esa misma fila, y es la misma fila que acaba de anular !A | !B. Dos columnas que valen 0 en el mismo sitio y 1 en todo lo demás son una sola columna.

    6. ¿Hasta qué punto resulta esto sorprendente? Una tabla de 4 filas tiene 4 celdas de resultado, cada una 0 o 1, por lo que dos variables admiten únicamente 16 funciones distintas en total. La coincidencia es fácil en un conjunto tan pequeño, motivo por el cual el paso 5 es la parte que importa: fijó una fila y nunca contó las demás.

    Respuesta

    Ambas expresiones dan un resultado del 75,0 % con los mismos 3 minitérminos, porque son una sola función con dos nombres distintos. La forma canónica es una huella dactilar: dos expresiones son equivalentes exactamente cuando sus conjuntos de minitérminos coinciden, de modo que la cuestión de si dos circuitos se comportan igual se reduce a si dos listas concuerdan. Lo que no se reduce es el coste de construir las listas. 2 variables necesitan 4 filas y esas se hicieron de cabeza; 20 variables necesitan 1.048.576; 100 variables necesitan aproximadamente 1,27×10³⁰ filas, y la huella dactilar sigue siendo la idea correcta aunque la tabla haya dejado de ser un método viable. El argumento fila por fila del paso 5 es el que sobrevive al salto, porque nunca mencionó cuántas filas había.

Problemas de ejemplo

  • AND simple - AND: la salida es 1 solo cuando A y B valen 1
  • (A OR B) AND NOT C - 3 variables, 8 filas: muestra cómo NOT invierte toda una rama
  • mayoría 3 entradas - Voto por mayoría: 1 cuando al menos 2 de A, B, C valen 1
  • multiplexor 2:1 - Multiplexor: S=0 saca A, S=1 saca B
  • tautología A | !A - A | !A es verdadera en cada fila, de modo que la columna de salida contiene solo unos y la entrada nunca importa. Junto con su opuesta A & !A, estas son las dos funciones que la tabla de verdad puede expresar sin leer la variable en absoluto.
  • contradicción A & !A - A & !A es falsa en todas las filas. Las demás expresiones de esta página caen entre esta y su opuesta, motivo por el cual ambas marcan los extremos de la escala y no son meras curiosidades.
  • De Morgan !(A & B) - Carga esta expresión y luego su compañera, !A | !B. Las dos columnas de salida son idénticas. Eso mismo afirma la ley de De Morgan: negar un AND lo convierte en un OR de las negaciones. Dos expresiones para una sola función.
  • De Morgan !A | !B - La otra mitad del par de De Morgan. Sitúala junto a !(A & B) y verás que las columnas de salida coinciden fila por fila. Las dos expresiones no son solo equivalentes en algunos casos, sino que son la misma función escrita dos veces.
  • A & (B | C) - A & (B | C), el lado izquierdo de la ley distributiva. Su pareja la expande a (A & B) | (A & C). Sus tablas coinciden en todas partes, lo que hace que la expansión sea válida y no solo plausible.
  • (A & B) | (A & C) - La forma expandida. Cuesta dos AND y un OR, mientras que la versión compacta exige uno de cada. Una ley matemática que deja intacta la tabla de verdad no sale gratis en el hardware. Por esa misma razón vale la pena aplicar álgebra antes de construir el circuito.
  • XOR forma expandida - El XOR desarrollado a partir de los dos casos donde las entradas difieren. Aquí no hay operador XOR a propósito: entenderlo como una suma de minitérminos explica cómo se construye cualquier función a partir de las tres que ya tienes.
  • A AND A AND A AND A - Aplicar un AND a una variable consigo misma cuatro veces devuelve la variable original. Fíjate en lo que esto cuesta: tres puertas lógicas que no cambian nada, que es exactamente lo que un optimizador busca eliminar.
  • ley de absorción - A | (A & B) se reduce a A. La columna B justifica su presencia al ser visiblemente ignorada: siempre que A es verdadera, toda la expresión lo es. Del mismo modo, si A es falsa, el segundo término también lo será.
  • teorema del consenso - El término central es redundante y la tabla lo demuestra. Elimina B & C y la columna de salida quedará intacta. Como detectarlo a simple vista resulta difícil, este teorema tiene nombre propio.
  • implicación A -> B - A implica B no es una primitiva. Equivale a !A | B y la tabla es la prueba. La fila que suele sorprender es donde A resulta falsa y B verdadera, ya que ahí la implicación se cumple.
  • paridad 3 entradas - Es verdadera cuando un número impar de entradas vale 1, es decir, un XOR encadenado a través de tres variables. Este es el bit de comprobación de una palabra de memoria. Detecta cualquier error de un solo bit precisamente porque invertir una entrada invierte la salida.