Documente Academic
Documente Profesional
Documente Cultură
Digitales
Introducción
En matemáticas las expresiones booleanas se simplifican por numerosas
razones:
- Cada variable se usa una vez en cada término. A dichos términos se les llama
términos canónicos.
Metodo de Quine-McCluskey
Il metodo di Quine-McCluskey (o metodo degli implicanti primi) è un algoritmo
sviluppato da Willard Van Orman Quine ed Edward McCluskey che viene utilizzato
nelle reti combinatorie a due livelli di logica per la minimizzazione di una funzione
booleana di n variabili. Il metodo è funzionalmente identico alla mappa di Karnaugh,
ma la sua forma tabellare lo rende più efficiente per essere realizzato al computer;
inoltre fornisce anche un modo deterministico per testare la minimizzazione di una
funzione booleana.
Complessità
Sebbene sia più pratico rispetto alle mappe di Karnaugh per funzioni con più di 4
variabili, il metodo di Quine-McCluskey ha comunque un intervallo limitato di utilizzo,
poiché il problema che l'algoritmo risolve (la soddisfacibilità booleana) è NP-difficile: il
suo runtime cresce esponenzialmente all'aumentare del numero degli ingressi. Si può
dimostrare che per una funzione di n variabili il limite superiore sul numero di
implicanti primi è 3n/n. Se n = 32 ci possono essere più di 6.5 * 10 15 implicanti primi.
Pertanto, le funzioni con un grande numero di variabili booleane deve essere
minimizzato con metodi euristici, come ad esempio il minimizzatore logico Espresso.
Metodo
Il metodo consiste in due fasi principali: la ricerca degli implicanti primi e la successiva
ricerca della copertura ottimale. Consideriamo la minimizzazione in forma di somma di
prodotti (detta anche SOP, dall'acronimo inglese sum of products), ma il tutto è
facilmente estendibile alla forma di prodotto di somme (o POS, product of sums).
cioè la proprietà distributiva del prodotto rispetto alla somma, dove P indica un
qualsiasi termine prodotto (mintermine). Ovviamente il metodo è estendibile anche a
funzioni non completamente specificate e anche a circuiti multiuscita. La prima fase
consiste dei passi:
Al punto della costruzione della tabella è facile vedere che non dobbiamo
necessariamente confrontare tutti i termini tra loro, ma effettivamente solo quei termini
adiacenti che differiscono per un solo bit 1. Quindi raggruppiamo nella tabella i termini
che hanno un numero uguale di 1 nel mintermine.
Esempio
a b c d Pi
0 0 0 1 1 ...
1 0 0 1 9 ...
1 0 1 1 11 ...
1 1 0 0 12 ...
1 1 0 1 13 ...
1 1 1 0 14 ...
1 1 1 1 15 ...
Vediamo dalla tabella che il mintermine 1 va confrontato solo con il mintermine 9, che
ha due 1 nel suo prodotto e non con gli altri che differiscono di due bit. Confrontando il
mintermine 1 con quello 9 vediamo che differiscono solo per il primo bit: la prima riga
della successiva tabella deve quindi essere -001 semplicando per l'appunto il primo bit.
Il confronto di 1 con 12 non è compatibile perché i due mintermini non differiscono per
un solo bit. Viceversa 9 si confronta con 11 e 13 ma non con 14, e 12 si confronta con
13 e 14 ma non con 11. Infine 11, 13, 14 si confrontano con 15. Il risultato finale è
tabellato nella successiva tabella.
a b c d Pi
− 0 0 1 1,9 ...
1 0 − 1 9,11 ...
1 − 0 1 9,13 ...
1 − 1 1 11,15 ...
a b c d Pi
1 − − 1 9,11,13,15 ...
1 1 − − 12,13,14,15 ...
A questo punto non sono possibili altre riduzioni. Gli implicanti primi sono:
P1(9,11,13,15) = ad
P2(12,13,14,15) = ab
Copertura
La seconda fase riguarda la scelta ottimale degli implicanti. Per fare questo costruiamo
una tabella detta tabella di copertura che consiste in una matrice in cui gli indici di riga
rappresentano gli implicanti primi identificati, mentre gli indici di colonna
rappresentano tutti i mintermini Pi della funzione. Gli elementi della tabella di copertura
sono caselle segnate con 1 se l'implicante Pi copre il mintermine j-esimo, altrimenti
sono 0. In alternativa si usa semplicemente una "x" per identificare solo gli uno in
tabella.
1 9 11 12 13 14 15
-------------------------------
P0 | x x |
P1 | x x x x |
P2 | x x x x|
-------------------------------
Esempio
ABCD f
m0 0 0 0 0 0
Wilber Araujo Quispe
4
Universidad José Carlos Mariá tegui Sistemas
Digitales
m1 0 0 0 1 0
m2 0 0 1 0 0
m3 0 0 1 1 0
m4 0 1 0 0 1
m5 0 1 0 1 0
m6 0 1 1 0 0
m7 0 1 1 1 0
m8 1 0 0 0 1
m9 1 0 0 1 -
m10 1 0 1 0 1
m11 1 0 1 1 1
m12 1 1 0 0 1
m13 1 1 0 1 0
m14 1 1 1 0 -
m15 1 1 1 1 1
Dalla tabella si può ricavare la forma canonica della funzione sotto forma di somma di
prodotti (disgiuntiva) semplicemente sommando i mintermini con uscita "1" (ma
tralasciando quelli con uscita don't care "-"):
A questo punto, si può iniziare a combinare i mintermini tra di loro. Se due mintermini,
appartenenti a classi diverse, hanno una distanza di Hamming pari a 1 (ossia
differiscono per una sola variabile), allora possono essere uniti, inserendo nella variabile
non in comune un don't care. I mintermini che non possono essere combinati tra di loro
sono indicati nell'esempio con un asterisco ("*"). Una volta esauriti tutti gli implicanti
del 4º ordine, si passa all'eventuale semplificazione di quelli del 3º ordine, dove in
questo caso vanno uniti tra loro i mintermini con distanza di Hamming pari a 2. Alla
fine si perviene alla seguente tabella:
-------------------------------|--------------------------|-------------------------
1 m4 0100 | m(4,12) -100* | m(8,9,10,11) 10--*
m8 1000 | m(8,9) 100- | m(8,10,12,14) 1--0*
-------------------------------| m(8,10) 10-0 |-------------------------
2 m9 1001 | m(8,12) 1-00 | m(10,11,14,15) 1-1-*
m10 1010 |--------------------------|
m12 1100 | m(9,11) 10-1 |
-------------------------------| m(10,11) 101- |
3 m11 1011 | m(10,14) 1-10 |
m14 1110 | m(12,14) 11-0 |
-------------------------------|--------------------------|
4 m15 1111 | m(11,15) 1-11 |
| m(14,15) 111- |
Una volta terminata la ricerca degli implicanti primi, questi vengono riportati in una
tabella apposita, scrivendo sulle righe gli implicanti e sulle colonne i mintermini.
4 8 10 11 12 15
m(4,12)* X X -100
m(8,9,10,11) X X X 10--
m(8,10,12,14) X X X 1--0
m(10,11,14,15)
X X X 1-1-
*
Per poter procedere alla scelta delle coperture si applicano i seguenti criteri:
In questo caso, il secondo implicante primo può essere coperto dal terzo e dal quarto,
mentre il terzo implicante primo può essere coperto dal secondo e dal primo, quindi
entrambi non sono essenziali. In alcuni casi, "si presentano situazioni di mappe cicliche
in cui non sono presenti condizioni di dominanza né di essenzialità, per cui vanno
utilizzate altre procedure per la semplificazione. Un modo sistematico ed efficiente è
rappresentato dal metodo di Petrick. In quest'esempio, gli implicanti primi essenziali
non coinvologono tutti i mintermini, quindi si possono combinare gli implicanti
essenziali con i due non essenziali, ottenendo le seguenti due equazioni:
Algoritmo de Quine-McCluskey
El método implica dos pasos: Encontrar todos los implicants de la prima de la función.
Utilizar esos implicants primeros en una carta implicant de la prima del para encontrar los
implicants primeros esenciales de la función, así como otros implicants primeros que sean
necesarios cubrir la función.
Complejidad
Aunque más sea práctico que Karnaugh el trazado al ocuparse de más de cuatro variables, el
algoritmo de Quine-McCluskey también tiene una gama limitada de uso puesto que el problema
que soluciona es el NP-duro: el tiempo de pasada del algoritmo de Quine-McCluskey crece el
exponencial con el tamaño de la entrada. Puede ser demostrado que para una función de las
variables del n el límite superior en el número de implicants primeros es 3 el n del n /. Si el n = 32
allí puede estar sobre 6.5 * 1015, implicants primeros. Las funciones con una gran cantidad de
variables tienen que ser reducidas al mínimo con métodos heurísticos potencialmente no-
óptimo, cuyo el minimizer heurístico de la lógica del café express es el estándar de hecho del
mundo.
Ejemplo
Paso 1: encontrar implicants primeros
A B C D f m0 0 0 0 0 0 m1 0 0 0 1 0 m2 0 0 1 0 0 m3 0 0 1 1 0 m4 0 1 0 0 1 m5 0 1 0 1 0 m6 0
1 1 0 0 m7 0 1 1 1 0 m8 1 0 0 0 1 m9 1 0 0 1 x m10 1 0 1 0 1 m11 1 0 1 1 1 m12 1 1 0 0 1 m13
1 1 0 1 0 m14 1 1 1 0 x m15 1 1 1 1 1
Uno puede formar fácilmente la suma canónica de expresión de los productos de esta tabla,
simplemente sumando el Minterms (que deja hacia fuera el no hacer - los términos del cuidado)
donde la función evalúa a una: f_ del
Por supuesto, eso no es ciertamente mínimo. Para optimizar tan, todos los minterms que evalúan
a uno primero se ponen en una tabla del minterm. No hacer - los términos del cuidado también
se agregan en esta tabla, así que pueden ser combinados con los minterms:
A este punto, uno puede comenzar a combinar minterms con otros minterms. Si dos términos
varían por solamente un solo dígito que cambia, ese dígito se puede substituir por una rociada
que indica que no importa el dígito. Los términos que no pueden ser combinados más se marcan
con un " *". Al ir del tamaño 2 a clasificar 4, tratar “-” como tercer valor de pedacito. Ex: -110 y
-100 o -11 - se puede combinar, pero no -110 y 011-. (Truco: Emparejar encima de “-”
primero.)
Ningunos de los términos se pueden combinar más lejos que éste, tan a este punto nosotros
construye una tabla implicant primera esencial. A lo largo del lado van los implicants primeros
acaban de generarse que, y a lo largo de la tapa van los minterms especificados anterior. No
cuidar los términos no se colocan en tapa - se omiten de esta sección porque no son entradas
necesarias.
Algoritmo Quine–McCluskey
El Algoritmo Quine–McCluskey es un método de simplificación de funciones
booleanas desarrollado por Willard Van Orman Quine y Edward J. McCluskey. Es
funcionalmente idéntico a la utilización del mapa de Karnaugh, pero su forma tabular lo
hace más eficiente para su implementación en lenguajes computacionales, y provee un
método determinístico de conseguir la mínima expresión de una función booleana.
Contenido
Pasos
El método consta de dos pasos:
Complejidad
Aunque es más práctico que el mapa de Karnaugh, cuando se trata de trabajar con más
de cuatro variables, el tiempo de resolución del algoritmo Quine-McCluskey crece de
forma exponencial con el aumento del número de variables. Se puede demostrar que
para una función de n variables el límite superior del número de implicantes primos es
3n/n. Si n = 32 habrá más de 6.5 * 1015 implicantes primos. Funciones con un número
grande de variables tienen que ser minimizadas con otros métodos heurísticos.
Ejemplo
Paso 1: Encontrando implicantes primos
A B C D f
m0 0 0 0 0 0
m1 0 0 0 1 0
m² 0 0 1 0 0
m³ 0 0 1 1 0
m4 0 1 0 0 1
m5 0 1 0 1 0
m6 0 1 1 0 0
m7 0 1 1 1 0
m8 1 0 0 0 1
m9 1 0 0 1 X
m10 1 0 1 0 1
m11 1 0 1 1 1
m12 1 1 0 0 1
m13 1 1 0 1 0
m14 1 1 1 0 X
m15 1 1 1 1 1
Uno fácilmente puede formar la expresión canónica suma de productos de esta tabla,
simplemente sumando minitérminos (dejando fuera las redundancias) donde la función
se evalúa con 1:
Por supuesto, esta expresión no es mínima. Para optimizarla, primero son colocados
todos los minitérminos evaluados en la función como 1 en una tabla. Las redundancias
también son agregadas a la tabla, estas pueden combinarse con los minitérminos:
Minter
N. de 1s Representación binaria
m
m4 0100
1
m8 1000
m9 1001
2 m10 1010
m12 1100
m11 1011
3
m14 1110
4 m15 1111
En este punto, uno puede empezar a combinar los minitérminos entre sí. Si dos
minitérminos sólo varían en un solo dígito, ese dígito debe reemplazarse por un guión
"-" indicando que ese bit no importa. Los términos que ya no pueden combinarse más
son marcados con "*". Cuando van de tamaño 2 a 4, tratamos '-' como un valor de bit.
Ejemplo: -110 y -100 o -11- pueden ser combinados, pero no -110 y 011-.
--------------------------------|-------------------------|
4 m15 1111 | m(11,15) 1-11 |
| m(14,15) 111- |
Los términos marcados con "*" ya no pueden combinarse más, en este punto ya
tenemos la tabla de implicantes primos. En el costado van los implicantes primos
recientemente generados, y en la parte superior los minitérminos utilizados. Los
minitérminos correspondientes a las redundancias son omitidos en este paso, no se
colocan en la parte superior.
1 1
4 8 11 12
0 5
X X - 1 0 0
X X X 1 0 - -
X X X 1 - - 0
X X X 1 - 1 -
En esta tabla vemos los minitérminos que "cubre" cada implicante primo. Ninguno de
los implicantes de esta tabla está incluido dentro de otro (esto queda garantizado en el
paso uno), pero si puede estar "cubierto" por dos o más implicantes. Es el caso de
que está cubierto por y o
que está cubierto por y .
Por este motivo, cada uno de estos dos implicantes sólo son esenciales en ausencia del
otro. Un proceso adicional simple para reducir estos implicantes es prueba y error, pero
un proceso más sistemático es el método de Petrick. En el caso que estamos analizando,
los dos implicantes primos y no llegan a incluir todos
los minitérminos por lo que podemos combinar estos implicantes con cada uno de los
implicantes no esenciales para conseguir dos funciones mínimas:
OBSERVACIONES:
1º- Todos los términos de la ecuación deben de contener todas las variables.
2º- Todos los términos de la ecuación que carezcan de alguna o algunas variables, ésta o
éstas se incluyen, realizando el producto lógico entre ese o esos términos canónicos y
los grupos formados por la suma de la o las variables sin negar y negadas.
Los pasos a seguir para la simplificación de funciones por éste método son:
1º- Conseguir que todos los términos contengan todas las variables de la función.
2º- Se sustituyen todos los términos por los bits que representan las variables.(Una
variable sin negar es un “uno” y para una variable negada se pone un “cero”).
3º- Se determina el índice de cada término, siendo éste el número de “unos” que tenga.
Así mismo, y para distinguir entre si los distintos términos de igual índice, se designa a
cada uno de ellos el valor decimal que su código binario representa. Por ejemplo 10011
es de índice 3 y se le asigna el valor once.
4º- Se hace una primera lista de los términos de la ecuación clasificándolos por su
índice.
5º- Se hace una segunda lista combinando los términos anteriores teniendo en cuenta
que los términos a combinar no deben diferir entre sí más que en el estado de una
variable, la cual se sustituye por un guión”. Si hay dos o más términos repetidos, se
eliminan todos menos uno.
6º- Se forma una tercera lista combinando las parejas de términos de acuerdo con la
norma anterior. Las nuevas combinaciones dispondrán, por lo tanto, de dos guiones, el
anterior y el obtenido ahora. Los términos repetidos se eliminan todos menos uno.
7º- Con los términos no eliminados (después de sustituidos de nuevo por letras) se
forma la expresión simplificada.
Wilber Araujo Quispe
13
Universidad José Carlos Mariá tegui Sistemas
Digitales
Ejercicios
Wilber Araujo Quispe
14
Universidad José Carlos Mariá tegui Sistemas
Digitales
4: Problemas resueltos
A+B=A·B
A·B=A+B
Por otra parte, de los diagramas de subconjuntos de A y B que tenemos arriba, vemos
que la suma de los mismos A+B es igual al diagrama superior derecho. Esto comprueba
el otro teorema de DeMorgan que se deseaba verificar.
PROBLEMA: Mostrar todos los términos posibles del doble producto ABC usando un
diagrama de subconjuntos, escribiendo dentro de cada celda el término que le
corresponda (como ABC, ABC, etc.)
Para la resolución de este problema, resulta conveniente tener a la mano los diagramas
de subconjuntos para cada una de las variables considerando que el sistema estará
formado por tres variables en total:
Con estos tres diagramas a la mano, resulta fácil elaborar el diagrama de subconjuntos
mostrando todos los términos posibles del doble producto ABC:
Esta máquina se puede lograr juntando los productos básicos ABC, ABC, ABC y ABC,
pero en este problema se trata de construír una máquina más sencilla.
Salida = AB + AC + BC
Obsérvese que con mera álgebra Boleana no es posible "ver" fácilmente esta
simplificación.
Esta máquina puede ser vista como una máquina analizadora de votos, puesto que la
salida será "1" cuando una mayoría de las entradas A, B, C sean "1". Y desde luego, el
principio de la misma puede ser extendido a más de tres entradas.
Tomando en cuenta las entradas que producen un "1" a la salida, de la Tabla de Verdad
obtenemos el siguiente diagrama de subconjuntos (usando el mismo orden de acomodos
que en los problemas previos) que destaca los seis términos A·B·C, ABC, ABC, AB·C,
ABC y ABC:
Podemos agrupar los términos ABC', ABC y A·B·C obteniendo la región común a las
variables B y C, o sea B+C, y tomando tras esto la intersección de esta región con la
región que corresponde a la variable A:
Sumando las tres regiones obtenemos la expresión final para la máquina simplificada:
Los mapas de Karnaughg para las expresiones dadas serán como se muestra a
continuación:
1)
2)
De acuerdo con la Tabla de Verdad proporcionada, trabajando sobre las salidas con
valor de "1" la salida Boleana del circuito está dada en función de sus minterms por la
siguiente expresión:
__1) AB + A·B·C + BC
__2) ABC + B + BC
1)
2)
Según se puede observar en el mapa, una primera simplificación se puede llevar a cabo
enrollando el mapa horizontalmente alrededor de un cilindro para que varios cuadros
queden cubiertos por la expresión B·C. Sin embargo, esto deja fuera tres "unos".
Buscamos a continuación la mejor manera de agrupar los "unos" restantes como se
muestra en el siguiente agrupamiento:
Estos dos agrupamientos "cobijan" todos los "unos"faltantes. Vemos que los demás
"unos" se pueden agrupar bajo las expresiones AB y B·D. La salida simplificada estará
dada entonces por la siguiente relación:
f = AB + B·C + B·D
Existe, sin embargo, otra solución posible, la cual se indica en el siguiente mapa de
Karnaugh (uno de los agrupamientos se obtiene enrollando el mapa horizontalmente
uniendo el borde derecho con el borde izquierdo):
Wilber Araujo Quispe
29
Universidad José Carlos Mariá tegui Sistemas
Digitales
En este problema, el mapa de Karnaugh nos proporciona dos soluciones diferentes para
un mismo caso, cualquiera de las cuales es igualmente aceptable y válida.
Corresponderá al ingeniero de diseño decidir cuál de las dos soluciones es más
económica de construír con los componentes que tenga disponibles a la mano.
1) (A + B) ∙ (A + B + C) ∙ (A + B + C + D) ∙ (B + C + D)
2) (A + B + C) ∙ (A + C + D) ∙ (B + C + D) ∙ (A + D)
1)
2)
Usando maxterms, la salida del circuito está dada por la siguiente relación:
(A + B + C + D) ∙ (A + B + C + D) ∙ (A + B + C + D) ∙ (A + B + C + D) ∙ (A + B + C +
D)
Salida = (B + C + D) ∙ (A + C + D) ∙ (A + B +D) ∙ (A + B + C)
Haciendo uso del mapa de Karnaugh y diseñando alrededor de los minterms, encontrar
un circuito minimizado que pueda producir las salidas deseadas.
Lo primero que debemos notar es que aunque se trata de un circuito lógico de cuatro
variables, no todas las 16 combinaciones posibles de variables están presentes, tales
como las combinaciones ABCD=1110, ABCD=1101, etc., lo cual podemos tomar como
un indicativo de que tales combinaciones no están presentes por el simple hecho de que
no serán utilizadas para los propósitos que persigue el circuito lógico que está siendo
diseñado. En otras palabras, son combinaciones redundantes, las cuales no importa que
tomen un valor de "1" ó de "0". Y si son redundantes, las podemos meter dentro del
mapa de Karnaugh simbolizadas con una "X", dando a entender con esto que pueden
tomar un valor de "1" ó de "0" sin que ello afecte en lo absoluto los requerimientos
finales del diseño. El mapa de Karnaugh del circuito, mostrando las simplificaciones
posibles que se pueden lograr aprovechando las combinaciones redundantes, es el
siguiente:
Enmarcados en un recuadro de color verde, los minterms AB·CD y AB·C·D junto con
las redundancias ABC·D, ABCD, ABCD, ABCD, ABCD y ABCD se reducen a la
variable A. Enmarcados en un recuadro de color rojo, los minterms ABCD y ABCD
junto con las redundancias ABCD y ABCD se reducen al término BC. Y enmarcados
en un recuadro de color azul, los minterms A'BCD y A'BC'D junto con las redundancias
ABCD y ABCD se reducen al término BD. La salida del circuito minimizado resulta ser
entonces:
Salida = A + BC + BD
PROBLEMA: Escribir, mostrando todas las variables Boleanas en forma explícita, las
expresiones representadas por la siguiente notación compacta:
(4) Z = Σm(0,1,2,4,6)
En el primer caso que involucra a tres variables, la expresión Boleana explícita será:
F(a,b,c) = Σm(000,010,111)
F(A,B,C,D) = Σm(0000,0001,0011,0100,0101,0111,1100,1101,1111)
F(A,B,C,D) = Σm(1111,0111,1110,1010,1100,0110,0100)
Y en el cuarto caso que podemos suponer que involucra a tres variables puesto que el
decimal más grande de todos no excede de 7 (111), designando a dichas variables como
p, q y r la expresión Boleana explícita será:
Z = Σm(000,001,010,100,110)
Usaremos la notación compacta para simplificar los listados que se llevarán a cabo, con
la cual:
Z = Σ(000,001,100,101)
Z = Σm(0,1,4,5)
Agrupando los términos según sus índices, podemos llevar a cabo una simplificación
sucesiva pasando de una primera lista a una segunda lista y tras esto a una tercera lista
de la manera mostrada:
Z = A∙B + B∙C + BC + AB
Por comodidad, usaremos la notación compacta para simplificar los listados que se
llevarán a cabo, con lo cual:
Z = Σm(0000,0010,0100,0101,1000,1001,1100)
Z = Σm(0,2,4,5,8,9,12)
Agrupando los términos según sus índices, podemos llevar a cabo una simplificación
sucesiva pasando de una primera lista a una segunda lista y tras esto a una tercera lista
de la manera mostrada:
Z = Σm(0000,0001,0010,0011,0101,0111,1000,1010,1100,1101,1111)
Z = Σm(0,1,2,3,5,7,8,10,12,13,15)
Agrupando los términos según sus índices, podemos llevar a cabo una simplificación
sucesiva pasando de una primera lista a una segunda lista y tras esto a una tercera lista
de la manera mostrada:
Podemos ver que la solución final de la minimización, con los implicantes primarios
redundantes ya removidos, es entonces:
Agrupando los términos según sus índices, podemos llevar a cabo una simplificación
sucesiva pasando de la primera lista que aparece en el extremo izquierdo a la segunda
lista en donde puede apreciarse que los términos de cuatro variables han sido reducidos
a términos de tres variables, pasando finalmente a la tercera lista en el extremo derecho
en la cual los términos de tres variables han sido reducidos a términos de dos variables:
Z = B∙C + A∙D + CD
PROBLEMA: Así como hay una notación compacta para representar una expresión
Boleana puesta en función de sus minterms como una suma de productos, también hay
una notación compacta para representar una expresión Boleana puesta en función de sus
maxterms como un producto de sumas. Bajo esta notación, la siguiente expresión
Boleana escrita empleando maxterms, como un producto de sumas:
Salida = (A + B + C)(A + B + C)
Salida = ΠM(000,001)
Salida = ΠM(0,1)
(1) F(A,B,C) = (A + B + C) ∙ (A + B + C)
F(A,B,C) = ΠM(101,110)
F(A,B,C) = ΠM(5,6)
F(A,B,C,D) = ΠM(0101,1000,0011,1001)
F(A,B,C,D) = ΠM(5,8,3,9)
Reacomodando:
F(A,B,C,D) = ΠM(3,5,8,9)
Z = ΠM(0010,0110,1110,1010,1000,1001,1011)
Z = ΠM(2,6,14,10,8,9,11)
Reacomodando:
Z = ΠM(2,6,8,9,10,11,14)
los agrupamientos comunes que podrían ser utilizados para formar sub-circuitos
comunes reduciendo con ello la cantidad de componentes y alambrado requerido.
Con ambos mapas de Karnaugh puestos lado a lado, podemos captar de inmediato las
siguientes tres regiones comunes (una encerrada en una línea roja, la otra en una línea
verde, y la otra en una línea azul) que podrían ser utilizadas para formar sub-circuitos:
XÞf
Puede verse que si X Þ f, con g una función booleana, puede anotarse: f=X+g.
Es decir, X es un término o parte de f. También suele decirse que f cubre a X. En una mapa de
f, si X corresponde a un grupo de mintérminos, g corresponderá al resto de los mintérminos de
f, no considerados en X.
Implicantes primos
Un implicante primo es un implicante que no puede ser agrupado con otros implicantes, para
formar un sub-cubo de mayor dimensión.
· XÞf
Básicamente, es un producto de literales que no puede ser combinado con otros para obtener
un término con menos literales. Se dice primo o primitivo en el sentido de ser componente
básica o elemental de una función.
Encontrar los implicantes primos es determinar los grupos de mintérminos que pueden
escribirse con menos literales.
Los mintérminos superfluos pueden emplearse para formar implicantes primos; pero no deben
considerarse para los implicantes primos esenciales.
Ejemplo: Para una función de 4 variables se tienen los siguientes implicantes primos:
0X 10
11 10
D
10 11
C 00 11
AC + BC' + A'B'D
Ejemplo: Para una función de 4 variables se tienen los siguientes implicantes primos:
B
Sólo BD es no esencial.
Método de Quine
Es un método sistemático para encontrar la expresión mínima de una función, que no depende
de la habilidad para reconocer agrupaciones en un mapa de Karnaugh.
Básicamente, es una búsqueda exhaustiva de todas las adyacencias entre los mintérminos de la
función, mediante la aplicación sistemática de:
a=ab+a b̄
· Se vuelve a repetir el paso anterior hasta que no se puedan formar nuevas columnas.
Los términos que originan nuevas entradas, en la próxima columna, sólo necesitan marcarse una
vez. Pero pueden usarse las veces que sea necesario.
Nótese que la segunda columna lista todos los grupos de dos mintérminos. La tercera, lista
grupos de cuatro mintérminos adyacentes, y así sucesivamente. Al finalizar el proceso anterior,
los elementos no marcados en las columnas, corresponden a los implicantes primos.
Ejemplo:
5 ab'c (5,7) ac
6 abc' (6,7) ab
7 abc
No se pueden formar nuevas columnas, por lo tanto los implicantes primos son:
Nótese que en la segunda columna, se han identificado los renglones con los grupos de
mintérminos.
Tabla de implicantes
La tabla de implicantes se forma empleando los implicantes primos en los renglones y los
mintérminos de la función en las columnas. Luego, en cada renglón, se efectúa una marca en las
columnas de los mintérminos pertenecientes al implicante considerado.
Aquellas columnas que tengan sólo una marca, permiten detectar a los implicantes primos
esenciales. En esta tabla puede escogerse el menor número de implicantes primos que cubran
todos los mintérminos de la función. Evidentemente, deben estar presentes todos los implicantes
primitivos esenciales en la expresión mínima de una función.
0 2 5 6 7
a'c'
bc'
ac
ab
Se acostumbra encerrar con un círculo las marcas en las columnas que definen los implicantes
primos esenciales.
Nótese que sólo resta cubrir el mintérmino 6, lo que puede lograrse eligiendo: bc' ó ab
o, alternativamente: f = a'c' + ac + ab
Reducción de tablas
En caso de tener tablas complejas, éstas pueden reducirse mediante el siguiente método.
Cada vez que se selecciona un implicante para formar la función, se remueve el renglón
correspondiente.
Wilber Araujo Quispe
49
Universidad José Carlos Mariá tegui Sistemas
Digitales
Cuando se remueve un renglón, también se eliminan las columnas que tienen marcas en dicho
renglón.
Se comienza eliminando los implicantes primos esenciales. Luego la tabla puede seguir
reduciéndose, aplicando las siguientes reglas:
Un renglón cubre a otro, si tiene marcas en las columnas marcadas del otro, pudiendo además
tener columnas adicionales marcadas. Podría decirse que el renglón eliminado es menos
importante, debido a su menor cobertura de la función.
m1 m2 m3
ipa
ipb
Una columna cubre a otra, si contiene marcas en cada renglón que esa otra columna tiene
marcas.
Ejemplo:
m1 m2 m3
ipa
ipb
ipc
ipd
Se repite la aplicación de las reglas hasta agotar la tabla. Siempre se remueven aquellos
renglones que contengan columnas con una sola marca (se tratan en la tabla reducida, en forma
similar a los implicantes primos esenciales en la tabla completa).
La función se forma con los implicantes de los renglones removidos por contener columnas con
una sola marca.
Excepción a lo anterior la constituyen las tablas reducidas cíclicas, que no pueden reducirse
según el método recién planteado. En éstas se elige un implicante en forma arbitraria y se
remueve el renglón correspondiente.
1 3 4 6 7 9 13 15
ipa
ipb
ipc
ipd
ipe
ipf
ipg
iph
1 3 7 9 13 15
ipa
ipc
ipd
ipe
ipf
ipg
iph
El renglón ipc cubre a ipd; por lo tanto, puede eliminarse el renglón ipd.
1 3 7 9 13 15
ipa
ipc
ipe
ipf
ipg
iph
La tabla resultante es cíclica. Se escoge arbitrariamente al primitivo ipa para formar la función,
esto elimina columnas 1 y 3, quedando:
7 9 13 15
ipc
ipe
ipf
ipg
iph
Ahora, ipe cubre a ipc; e ipg cubre a iph, queda eliminando a ipc e iph:
7 9 13 15
ipe
ipf
ipg
ipe e ipg deben formar parte de la función; pues contienen a las columnas 7 y 9, que en la tabla
reducida sólo tienen una marca. Luego de esto, la tabla queda vacía.
Finalmente:
Existen otras formas mínimas posibles. Estas se obtienen eliminando otro implicante cuando la
tabla resultó cíclica.
1 9 13 15
ipa
ipe
ipf
ipg
iph
ipf cubre a ipe. iph cubre a ipa. Eliminando ipa e ipe, se obtiene:
1 9 13 15
ipf
ipg
iph
El método anterior es adecuado para un número reducido de variables. Una variante del método
tabular recién descrito es el de Quine-McCluskey. Básicamente, representa en forma digital el
método de Quine, y es muy adecuado para ser programado en un computador.
Método de Quine-McCluskey
Se comparan los elementos de cada grupo, buscando adyacencias, y se forman las siguientes
columnas en forma similar al método de Quine. Notando que en la representación decimal,
diferencias de 1, 2, 4, 8 y, en general, de una potencia de 2, indican una diferencia en un bit.
También se mantiene la separación en grupos en las nuevas columnas.
Existen tablas con los números decimales y su número de unos en representación binaria. Para
facilitar la formación de los grupos.
La segunda columna representa todas las agrupaciones posibles de dos mintérminos. La tercera
columna representa grupos de cuatro mintérminos, y así sucesivamente.
El algoritmo permite trabajar con dígitos decimales o binarios. Se anotan en los ejemplos
columnas binarias y decimales.
Pueden combinarse dos términos si ellos difieren solamente en un literal; por esta razón, no
podrán combinarse dos términos en un mismo grupo. Los miembros de un grupo de un solo "1",
difieren en dos variables por lo menos; lo mismo puede establecerse para los otros grupos. Esta
observación organiza la búsqueda de adyacencias, ya que sólo es preciso comparar entre grupos
adyacentes.
Ejemplo:
g(a,b,c,d,e,f) = m(0,2,6,7,8,10,12,14,15,41)
m0 = 000000
m2 = 000010
m8 = 001000
m6 = 000110
m10 = 001010
m12 = 001100
m7 = 000111
m14 = 001110
m41 = 101001
m15 = 001111
Decimal
0 0 0 0 0 0 0 0
2 0 0 0 0 1 0 1
8 0 0 1 0 0 0
6 0 0 0 1 1 0 2
10 0 0 1 0 1 0
12 0 0 1 1 0 0
7 0 0 0 1 1 1 3
14 0 0 1 1 1 0
41 1 0 1 0 0 1
15 0 0 1 1 1 1 4
Los mintérminos del grupo con n unos, se comparan con todos los del grupo con (n+1) unos.
Decimal Binario
0,2 2 0 0 0 0 - 0 0
0.8 8 0 0 - 0 0 0
2,6 4 0 0 0 - 1 0 1
2,10 8 0 0 - 0 1 0
8,10 2 0 0 1 0 - 0
8,12 4 0 0 1 - 0 0
6,7 1 0 0 0 1 1 - 2
6,14 8 0 0 - 1 1 0
10,14 4 0 0 1 - 1 0
12,14 2 0 0 1 1 - 0
7,15 8 0 0 - 1 1 1 3
14,15 1 0 0 1 1 1 -
En el ejemplo no queda marcado el 41, ya que no puede agruparse con ningún otro mintérmino;
en este caso el mintérmino 41 es implicante primo esencial.
Para formar la tercera tabla, que contendrá grupos de cuatro mintérminos; se buscan diferencias
de potencias de dos entre grupos adyacentes, pero además deben tener igual diferencia (o
posición de variable eliminada). Por ejemplo la componente del grupo ‘0,2’ es necesario
compararla solamente con ‘8,10’ del segundo grupo, debido a la diferencia común (2).
No importa el orden de las listas de mintérminos, sólo se anotan una vez. Por ejemplo, entre los
primeros grupos se tiene:
0, 2 (2)
8, 10 (2)
0, 8 (8)
2, 10 (8)
Decimal Binario
0, 2, 8, 10 2,8 0 0 - 0 - 0 0
2, 6, 10, 14 4,8 0 0 - - 1 0 1
8, 10,12,14 2,4 0 0 1 - - 0
6, 7, 14, 15 1,8 0 0 - 1 1 - 2
Nótese que, en la tabla anterior, no hay diferencias comunes entre grupos, por lo tanto, no puede
formarse una siguiente tabla. Es decir, no hay implicantes formados por 8 mintérminos que
estén formando un 3-cubo.
Implicantes 0 2 8 6 10 12 7 14 41 15
primos
41
0, 2, 8, 10
2, 6, 10, 14
8, 10, 12, 14
6, 7, 14, 15
Nótese que todo el proceso podría haberse realizado sólo considerando la información binaria, o
solamente la información decimal.
La exposición de este método permite elaborar algoritmos para efectuar programas para
minimización automática, y también tener las bases para comprender el funcionamiento de las
aplicaciones.
"g(a,b,c,d,e,f) = Suma(0,2,6,7,8,10,12,14,15,41)
MODULE quine
" entradas
a, b, c, d ,e, f PIN;
" salidas
EQUATIONS
0-> 1;
2-> 1;
6-> 1;
7-> 1;
8-> 1;
10-> 1;
12-> 1;
14-> 1;
15-> 1;
41-> 1;
END quine
g = (a & !b & c & !d & !e & f ) # (!a & !b & d & e) # (!a & !b & !d & !f) # (!a & !b & c & !f)
!g = (a & !c) # (d & !e & f) # (a & e) # (!a & !d & f) # (!c & d & !e) # (b) # (a & !f)
Y puede generarse una simulación temporal, que permite obtener las siguientes formas de
ondas:
Para lograr las formas de ondas, se generan los siguientes vectores de prueba: