El método de Petrick: por qué los implicantes primos esenciales no siempre bastan

La mayoría de las guías de simplificación enseñan un atajo: encuentra cada implicante primo, identifica cuáles son "esenciales" — el único implicante primo que cubre algún minterm en particular — selecciona todos esos, y ya está. Es un atajo genuinamente útil, y funciona para una gran parte de los problemas de libros de texto, incluyendo el clásico ejemplo de 4 variables resuelto en la guía del mapa de Karnaugh. Pero no está garantizado que funcione, y cuando no lo hace, la mayoría de los simplificadores gratuitos te dan silenciosamente una respuesta válida pero no realmente mínima, sin avisarte.

De dónde viene el atajo de PI esenciales

Un minterm es "esencial" para un implicante primo cuando ese implicante primo es el único que lo cubre — no hay elección que hacer, así que más vale seleccionarlo. Una vez seleccionado cada implicante primo esencial, todo lo que cubren queda contabilizado, y la única pregunta restante es qué minterms quedan sin cubrir. A menudo no queda ninguno — cada minterm resulta tener al menos un implicante primo esencial, y el atajo por sí solo da la respuesta mínima exacta.

Cuándo se rompe: un ejemplo cíclico genuino

Toma F(A,B,C,D) = Σm(2,4,5,6,10,11,13,15). Al calcular cada implicante primo se obtienen exactamente ocho candidatos, y — de forma inusual — cada uno de ellos cubre exactamente dos minterms, con cada minterm cubierto por exactamente dos candidatos:

Implicante primoCubre
A′CD′2, 6
B′CD′2, 10
A′BC′4, 5
A′BD′4, 6
BC′D5, 13
AB′C10, 11
ACD11, 15
ABD13, 15

Revisa cada minterm contra esta lista y ninguno tiene un solo implicante primo que lo cubra — cada uno tiene exactamente dos opciones. No hay ningún implicante primo esencial en toda esta tabla. El atajo de "selecciona los esenciales" no tiene nada que seleccionar, y por sí solo no te lleva absolutamente a ningún lado.

Qué hace el método de Petrick en su lugar

El método de Petrick resuelve esto convirtiendo el problema de cobertura en álgebra Booleana pura. Para cada minterm, escribe un OR de los implicantes primos que lo cubren — para el minterm 2 en la tabla anterior, eso es "A′CD′ o B′CD′". Multiplica todas esas cláusulas OR entre sí (una por minterm), a través de los ocho minterms, y expande el producto usando álgebra Booleana ordinaria — distribuyendo, y eliminando cualquier término que sea un superconjunto de un término más pequeño ya presente (un conjunto más grande de implicantes primos seleccionados nunca es mejor que uno más pequeño que ya hace el trabajo). Lo que queda después de expandir y reducir es cada forma válida de cubrir la función; elige la opción sobreviviente que use menos implicantes primos, y menos literales totales como criterio de desempate.

Ejecuta este ejemplo específico a través de ese proceso y se resuelve limpiamente en una cobertura de 4 términos:

F = A′CD′ + A′BC′ + AB′C + ABD

Cuatro implicantes primos, cada uno cubriendo exactamente dos minterms, particionando juntos los ocho minterms sin ninguna superposición — el mínimo genuino, alcanzado sin ningún implicante primo esencial en el que apoyarse en todo el proceso.

Por qué esto importa para una herramienta que afirma ser "mínima"

Tablas cíclicas como esta no son un caso extremo raro inventado para libros de texto — aparecen siempre que la estructura de una función resulta ser lo suficientemente simétrica como para que ningún implicante primo sea insustituible. Un simplificador que solo implementa la extracción de PI esenciales o bien se quedará atascado con minterms que no puede resolver, o — peor — recurrirá a una heurística codiciosa que elige una cobertura válida pero no mínima, sin señalar que lo hizo. Este solucionador ejecuta el método de Petrick sobre lo que queda después de la extracción esencial en cada ocasión, específicamente para que una tabla cíclica como la anterior siga resolviéndose al mínimo verdadero en lugar de una aproximación "suficientemente buena".

Pruébalo en el solucionador

Trabaja los ejemplos anteriores directamente — ingresa los mismos minterms o expresión en la herramienta en vivo.

Abrir el K-Map Solver