Realizado por:
Alfonso López 17.666.726
Introducción
Principio de dualidad
El concepto de dualidad permite formalizar este hecho: a toda relación o ley lógica le
corresponderá su dual, formada mediante el intercambio de los operadores unión (suma
lógica) con los de intersección (producto lógico), y de los 1 con los 0.
Además hay que cambiar cada variable por su negada. Esto causa confusión al aplicarlo
en los teoremas básicos, pero es totalmente necesario para la correcta aplicación del
principio de dualidad. Véase que esto no modifica la tabla adjunta.
Adición Producto
1
2
3
4
5
6
7
8
9
Funciones Booleanas
Y= f(A,B,C) = AB + AC + A C
Esta función se puede evaluar para diversos valores de sus variables independientes A,
B, C:
En general para una función de n variables, puesto que hay n variables y cada variable
tiene dos posibles valores, hay 2n maneras de asignar estos valores a las n variables, así
la tabla de verdad tendrá 2n renglones.
Por ejemplo en el ejemplo anterior f(A,B,C) es una función de 3 variables, por lo que
tenemos 23 = 8 diferentes combinaciones de las entradas y por lo tanto 8 renglones de la
tabla de verdad.
En el caso de funciones de variable real sería imposible tratar de mencionar todas las
posibles funciones de una o más variables, sin embargo, en el caso de funciones
booleanas se puede hacer un listado completo de todas y cada una de las funciones para
cierto número de variables. a continuación se hace una lista de éstas para los casos de 0,
1 y 2 variables independientes:
Const.
CERO AND Identidad Identidad EXOR OR
A B 0 A.B A B A A B B A Å B A + B
0000000000
0100001111
1000110011
1101010101
NOR EQUIVAL
ENCIA NOT NOT NAND Const.
UNO
ABA+BA?BBA+BAA+BA.B1
0011111111
0100001111
1000110011
1101010101
OBSERVACIÓN.
Ciertamente, las expresiones lógicas que aparecen en la tabla anterior no son únicas, ya
que una misma función lógica puede tener diferentes representaciones algebraicas.
Circuitos Logicos
Se dice que una variable tiene valor booleano cuando, en general, la variable contiene
un 0 lógico o un 1 lógico. Esto, en la mayoría de los lenguajes de programación, se
traduce en false (falso) o true (verdadero), respectivamente.
Una variable puede no ser de tipo booleano, y guardar valores que, en principio, no son
booleanos; ya que, globalmente, los compiladores trabajan con esos otros valores,
numéricos normalmente aunque también algunos permiten cambios desde, incluso,
caracteres, finalizando en valor booleano. ..
El 0 lógico
El valor booleano de negación suele ser representado como false, aunque también
permite y equivale al valor natural, entero y decimal (exacto) 0, así como la cadena
"false", e incluso la cadena "0".
El 1 lógico
FUNCION NOT
NOT (Verdadero) = Falso
NOT (Falso) = Verdadero
FUNCION OR
FUNCION AND
Veamos un ejemplo:
F(a,b,c,d) = Σ m (5,6,9,10,13,14)
= a · b· c ·d + a · b·c·d +a · b· c ·d +a · b· c ·d +a · b· c ·d +a · b · c ·d (1)
= a · b· c ·d + a · b·c·d +a · c ·d · (b + b) +a · c ·d · (b + b)
= a · b · c ·d + a · b·c·d +a · c · d +a · c·d
= c·d ·(a · b +a) +c·d · (a +a · b)
= c ·d · (a + b) + c· d · (a + b)
= (c ·d +c·d) · (a + b) (2)
= a · c ·d +a ·c·d + b· c ·d + b·c·d (3)
(1) 6 AND de 4 entradas + 1 OR de 6 entradas.
(2) 2 OR de 2 entradas + 3 AND de 2 entradas.
(3) 4 AND de 3 entradas + 1 OR de 4 entradas.
Observaciones: El circuito (2) es más simple pero debe notarse que las señales A y B en
el caso (2) pasan a través de 3 niveles previo a procesar la salida.
Ejemplo:
A) Sea f(a,b,c) = Σm (0,1,4,6)
= a · b · c +a · b ·c +a · b · c +a·b· c
Notemos que los 2 primeros términos se combinan para dar:
a · b · c +a · b ·c = a · b ·(c +c)
=a·b
y los otros 2 dan:
a · b· c +a · b· c = a · c(b + b)
=a·c
Por lo tanto, f= a · b +a· c
Observaciones:
i) m0 y m1 son adyacentes, en ellos sólo cambia la variable “c”.
ii) al unir m0 y m1 observamos que no aparece la variable que marca la distancia entre
ambos minterm, es decir la variable “c”.
iii) igual caso entre m4 y m6.
B) Sea f(a,b,c,d) = Σm(5,7,10,13,15)
= a · b· c ·d +a · b·c·d +a · b· c·d +a ·b· c ·d +a · b·c·d
m5 m7 m10 m13 m15
m13 y m15 son adyacentes
m5 y m7 son adyacentes
ambos grupos son adyacentes entre sí.
m5+m7+m13+m15 = a · b· c ·d + a · b·c·d +a · b· c ·d +a · b·c·d
= bd
Luego, en la agrupación restante se han eliminado A y C, las
cuales son las variables que cambian de valor. Así agrupando 2k minterm
adyacentes pueden eliminarse k variables de una función.
Por lo tanto,
f(a,b,c,d)= b·d +a · b· c ·d
Leyes
1. Ley de idempotencia:
2. Ley de involución:
3. Ley conmutativa:
4. Ley asociativa:
5. Ley distributiva:
6. Ley de cancelación:
7. Leyes de De Morgan:
Teorema de Morgan
Las leyes de De Morgan declaran que la suma de n variables globalmente negadas (o
invertidas) es igual al producto de las n variables negadas individualmente; y que
inversamente, el producto de n variables globalmente negadas es igual a la suma de las
n variables negadas individualmente.
Demostración formal
si y solo si y .
para cualquier x: ó
ó
Por lo tanto
inclusión:
Con proposiciones
Aplicaciones
Debido a que los computadores trabajan con información binaria, la herramienta
matemática adecuada para el análisis y diseño de su funcionamiento en el algebra de
boole en su forma bivalente, aunque fue desarrollada inicialmente para el estudio de la
lógica. Ha sido a partir de 1938, fecha en que C.E. Shanon publico su obre Analisis
simbólico de circuitos con reles, estableciendo los primeros conceptos de la actual teoría
de computación, cuando se ha producido un aumento considerable en el numero de
trabajos de aplicación del algebra de boole a los computadores digitales. Hoy en día,
esta herramienta resulta fundamental para el desarrollo de computadores ya que, con su
ayuda, el análisis y síntesis de combinaciones complejas de circuitos logicos puede
realizarse con rapidez y eficacia.
La relación que existe entre la lógica booleana y los sistemas de cómputo es fuerte, de
hecho se da una relación uno a uno entre las funciones booleanas y los circuitos
electrónicos de compuertas digitales. Para cada función booleana es posible diseñar un
circuito electrónico y viceversa, como las funciones booleanas solo requieren de los
operadores AND, OR y NOT podemos construir nuestros circuitos utilizando
exclusivamente éstos operadores utilizando las compuertas lógicas homónimas Un
hecho interesante es que es posible implementar cualquier circuito electrónico
utilizando una sola compuerta, ésta es la compuerta NAND. Para probar que podemos
construir cualquier función booleana utilizando sólo compuertas NAND, necesitamos
demostrar cómo construir un inversor (NOT), una compuerta AND y una compuerta OR
a partir de una compuerta NAND, ya que como se dijo, es posible implementar
cualquier función booleana utilizando sólo los operadores booleanos AND, OR y NOT.
Para construir un inversor simplemente conectamos juntas las dos entradas de una
compuerta NAND. Una vez que tenemos un inversor, construir una compuerta AND es
fácil, sólo invertimos la salida de una compuerta NAND, después de todo, NOT ( NOT
(A AND B)) es equivalente a A AND B. Por supuesto, se requieren dos compuertas
NAND para construir una sola compuerta AND, nadie ha dicho que los circuitos
implementados sólo utilizando compuertas NAND sean lo óptimo, solo se ha dicho que
es posible hacerlo. La otra compuerta que necesitamos sintetizar es la compuerta lógica
OR, esto es sencillo si utilizamos los teoremas de De Morgan, que en síntesis se logra
en tres pasos, primero se reemplazan todos los "•" por "+" después se invierte cada
literal y por último se niega la totalidad de la expresión:
A OR B
A AND B.......................Primer paso para aplicar el teorema de De Morgan
A' AND B'.....................Segundo paso para aplicar el teorema de De Morgan
(A' AND B')'..................Tercer paso para aplicar el teorema de De Morgan
(A' AND B')' = A' NAND B'.....Definición de OR utilizando NAND
Si se tiene la necesidad de construir diferentes compuertas de la manera descrita, bien
hay dos buenas razones, la primera es que las compuertas NAND son las más
económicas y en segundo lugar es preferible construir circuitos complejos utilizando los
mismos bloques básicos. Observen que es posible construir cualquier circuito lógico
utilizando sólo compuertas de tipo NOR (NOR = NOT(A OR B)). La correspondencia
entre la lógica NAND y la NOR es ortogonal(o sea que esta en ángulo recto) entre la
correspondencia de sus formas canónicas. Mientras que la lógica NOR es útil en
muchos circuitos, la mayoría de los diseñadores utilizan lógica NAND.
Conclusión