37. Tablas de verdad y funciones booleanas

La tabla de verdad enumera todas las combinaciones de entradas y la salida correspondiente de una función booleana. Es la representación tabular completa que permite analizar, comparar y verificar expresiones lógicas.

37.1 Introducción

En el tema anterior vimos funciones booleanas individuales y sus operaciones básicas. Para estudiarlas con rigor, necesitamos una forma sistemática de listar **todas** las entradas posibles y sus salidas.

La **tabla de verdad** cumple ese papel: es la tabla de valores de una función booleana, donde cada fila representa una combinación de bits de entrada y el valor resultante. Es el equivalente lógico de la tabla de una función discreta finita (tema 25).

37.2 Definición de Tabla de Verdad

Dada una función booleana f : Bⁿ → B, su tabla de verdad tiene 2ⁿ filas (una por cada tupla de entrada) y una columna de salida.

Para n = 2 variables p y q, la tabla estándar incluye estas columnas:

f(p, q) = ? ┌───┬───┬─────────┐ │ p │ q │ f(p, q) │ ├───┼───┼─────────┤ │ 0 │ 0 │ ? │ │ 0 │ 1 │ ? │ │ 1 │ 0 │ ? │ │ 1 │ 1 │ ? │ └───┴───┴─────────┘

La tabla define completamente la función: conocer las cuatro salidas equivale a conocer f sin ambigüedad.

37.3 Construcción Sistemática

Para construir una tabla de verdad de n variables, sigue este procedimiento:

  1. Escribe n columnas para las variables.
  2. Genera las 2ⁿ combinaciones en orden binario creciente (de 00…0 a 11…1).
  3. Para cada fila, evalúa la expresión lógica y escribe el resultado en la columna de salida.

Con tres variables p, q, r se obtienen 8 filas, desde (0,0,0) hasta (1,1,1). Este orden garantiza que no se omita ninguna combinación del dominio Bⁿ.

37.4 Interpretar la Tabla

La tabla de verdad permite detectar propiedades de la función de un vistazo:

  • Tautología: la salida es siempre 1 (función constantemente verdadera).
  • Contradicción: la salida es siempre 0.
  • Función constante: todos los valores de salida son iguales.
  • Equivalencia lógica: dos expresiones son equivalentes si sus tablas de verdad son idénticas fila por fila.

Ejemplo de equivalencia: p → q y ¬p ∨ q producen la misma columna de salida en todas las filas, por lo que representan la misma función booleana.

37.5 Simulador: Generador de Tablas de Verdad

Selecciona una función booleana de dos variables y observa cómo se completa su tabla de verdad fila a fila. Las celdas con valor 1 se muestran en verde y las de valor 0 en rojo. Usa **Siguiente Fila** para avanzar o **Reproducir** para ver la tabla completa.

Tabla de Verdad Interactiva (2 variables) Fila 0 / 4
Función: f(p,q) = p ∧ q. Pulsa "Siguiente Fila" para evaluar cada combinación.

37.6 Generar Tablas de Verdad en Programación

Un generador automático recorre todas las combinaciones de bits y evalúa la función, produciendo la tabla completa sin errores de omisión.

// Generar todas las tuplas de n bits
function combinaciones(n) {
  const result = [];
  const total = Math.pow(2, n);
  for (let i = 0; i < total; i++) {
    const tupla = [];
    for (let bit = n - 1; bit >= 0; bit--) {
      tupla.push((i >> bit) & 1);
    }
    result.push(tupla);
  }
  return result;
}

function tablaVerdad(vars, expresion) {
  const filas = combinaciones(vars.length);
  console.log(`Tabla de verdad para ${vars.join(', ')}:`);
  console.log([...vars, 'f'].join('\t'));

  for (const fila of filas) {
    const env = Object.fromEntries(vars.map((v, i) => [v, fila[i] === 1]));
    const resultado = expresion(env) ? 1 : 0;
    console.log([...fila, resultado].join('\t'));
  }
}

tablaVerdad(['p', 'q'], ({ p, q }) => !p || q);
// Tabla de verdad para p, q:
// p  q  f
// 0  0  1
// 0  1  1
// 1  0  0
// 1  1  1

function sonEquivalentes(vars, expr1, expr2) {
  const filas = combinaciones(vars.length);
  return filas.every(fila => {
    const env = Object.fromEntries(vars.map((v, i) => [v, fila[i] === 1]));
    return Boolean(expr1(env)) === Boolean(expr2(env));
  });
}

console.log("¿p→q equivale a ¬p∨q?", sonEquivalentes(
  ['p', 'q'],
  ({ p, q }) => !p || q,
  ({ p, q }) => !p || q
));
// ¿p→q equivale a ¬p∨q? true

37.7 Errores Comunes

  • Omitir filas del dominio: Una tabla incompleta no define la función. Con 2 variables deben aparecer exactamente 4 filas.
  • Desordenar las combinaciones: Aunque el orden no cambia la función, mezclar filas dificulta comparar tablas y detectar equivalencias.
  • Confundir 0/1 con F/V al leer: Mantener una notación coherente en toda la tabla evita errores de interpretación.
  • Asumir equivalencia sin comparar tablas: Dos expresiones con forma distinta pueden ser equivalentes; la verificación rigurosa exige igualdad en las 2ⁿ filas.

37.8 Qué debes recordar de este tema

  • La tabla de verdad lista las 2ⁿ combinaciones de entrada y la salida de f.
  • Define completamente cualquier función booleana de n variables.
  • Permite detectar tautologías, contradicciones y funciones constantes.
  • Dos expresiones son **lógicamente equivalentes** si sus tablas coinciden.
  • En programación se generan recorriendo combinaciones de bits sistemáticamente.

37.9 Conclusión

Las tablas de verdad son la herramienta fundamental para analizar funciones booleanas de forma exhaustiva. Permiten verificar equivalencias, simplificar expresiones y conectar la lógica proposicional con el diseño de circuitos digitales.

En el próximo tema estudiaremos el **álgebra booleana aplicada**, donde las leyes algebraicas (conmutativa, asociativa, De Morgan, etc.) permiten manipular expresiones lógicas sin enumerar todas las filas de la tabla.