48. Operaciones booleanas y simplificación

Las operaciones booleanas permiten construir expresiones con valores 0/1 o falso/verdadero, y la simplificación permite reducirlas sin cambiar su comportamiento.

48.1 Introducción

El álgebra booleana permite operar con valores lógicos mediante NOT, AND, OR y otras operaciones derivadas. Con esas operaciones construimos expresiones booleanas.

Simplificar una expresión booleana significa transformarla en otra equivalente, generalmente más corta, clara o eficiente.

48.2 Operaciones básicas

Operación Símbolo lógico Forma booleana JavaScript
NOT ¬p p' !p
AND p ∧ q p · q p && q
OR p ∨ q p + q p || q

48.3 Operaciones derivadas

Además de NOT, AND y OR, existen operaciones derivadas importantes.

Operación Significado Expresión equivalente
NAND No AND ¬(p ∧ q)
NOR No OR ¬(p ∨ q)
XOR O exclusivo (p ∧ ¬q) ∨ (¬p ∧ q)
XNOR Equivalencia (p ∧ q) ∨ (¬p ∧ ¬q)

48.4 Objetivo de simplificar

La simplificación busca una expresión equivalente que sea más fácil de usar.

  • Menos operadores.
  • Menos condiciones repetidas.
  • Menor riesgo de errores.
  • Mejor legibilidad.
  • Circuitos digitales más simples.

48.5 Leyes útiles

Ley Ejemplo
Identidad p ∧ 1 = p, p ∨ 0 = p
Dominación p ∧ 0 = 0, p ∨ 1 = 1
Complemento p ∧ ¬p = 0, p ∨ ¬p = 1
Idempotencia p ∧ p = p, p ∨ p = p
De Morgan ¬(p ∧ q) = ¬p ∨ ¬q
Distributiva (p ∧ q) ∨ (p ∧ r) = p ∧ (q ∨ r)

48.6 Simplificación con identidad

Simplifiquemos:

(p ∧ 1) ∨ 0

Paso a paso:

(p ∧ 1) ∨ 0 = p ∨ 0 = p

48.7 Simplificación con complemento

Simplifiquemos:

p ∧ ¬p

Una proposición y su negación no pueden ser verdaderas al mismo tiempo:

p ∧ ¬p = 0

48.8 Simplificación con distributividad

Simplifiquemos:

(p ∧ q) ∨ (p ∧ r)

Factorizamos p:

(p ∧ q) ∨ (p ∧ r) = p ∧ (q ∨ r)

48.9 Caso notable

Simplifiquemos:

(p ∧ q) ∨ (p ∧ ¬q)

Factorizamos p:

p ∧ (q ∨ ¬q)

Como q ∨ ¬q = 1:

p ∧ 1 = p

48.10 Simplificación en JavaScript

Expresión original:

const puedeAcceder = (cuentaActiva && esAdmin) || (cuentaActiva && esEditor);

Forma simplificada:

const puedeAcceder = cuentaActiva && (esAdmin || esEditor);

48.11 Simplificar negaciones

Las leyes de De Morgan ayudan a reescribir negaciones complejas.

const invalido = !(nombreValido && emailValido);

Forma equivalente:

const invalido = !nombreValido || !emailValido;

48.12 Verificar simplificaciones

Podemos verificar una simplificación probando todas las combinaciones booleanas.

const valores = [true, false];

for (const p of valores) {
  for (const q of valores) {
    const original = !(p && q);
    const simplificada = !p || !q;
    console.log(original === simplificada);
  }
}

48.13 Relación con circuitos

En circuitos digitales, simplificar una expresión booleana puede reducir la cantidad de puertas necesarias.

(p ∧ q) ∨ (p ∧ ¬q) = p

La forma original requiere varias operaciones. La forma simplificada requiere solo la señal p.

48.14 Errores comunes

  • Aplicar una ley sin revisar que la forma coincida.
  • Confundir OR con XOR.
  • Eliminar paréntesis que cambian la expresión.
  • Simplificar código con funciones que tienen efectos secundarios.
  • Priorizar brevedad por encima de claridad.

48.15 Qué debes recordar de este tema

  • Las operaciones booleanas básicas son NOT, AND y OR.
  • NAND, NOR, XOR y XNOR pueden expresarse con operaciones básicas.
  • Simplificar significa transformar una expresión en otra equivalente.
  • Las leyes booleanas permiten justificar cada paso.
  • La simplificación ayuda en código y en circuitos digitales.

48.16 Conclusión

Las operaciones booleanas permiten construir reglas lógicas, y la simplificación permite expresarlas de forma más clara o eficiente. Esta base será útil para estudiar puertas lógicas digitales.

En el próximo tema estudiaremos las puertas lógicas digitales.