Вы находитесь на странице: 1из 144

Matemticas Discretas y Algortmica

Matemticas Discretas y Algortmica

Indice de Unidades
1. 2. 3. 4. 5. 6. 7. Lgica matemtica. Teora de conjuntos. Retculas y lgebra Booleana. Preliminares de la teora de grafos. Algoritmos y lenguajes de programacin. Mtodos y anlisis de algoritmos. Limitaciones y robustez.

Matemticas Discretas y Algortmica

1. Lgica matemtica
La lgica ha adquirido un papel cada vez ms importante en la infomtica. La lgica tiene tres 3 distintas e importantes aplicaciones : 1. En programacin para construir expresiones lgicas. 2. Para escribir pre y postcondiciones que describen el comportamiento de los programas. 3. Como fundamento para el diseo del computador. La Lgica es el estudio del razonamiento; en particular, se analiza si un razonamiento es correcto. Ejemplos: Todos los matemticos utilizan sandalias Cualquier persona que utilice sandalias es algebrista. Por lo tanto, todos los matemticos son algebrista.
Matemticas Discretas y Algortmica
3

1. Lgica matemtica
La Lgica se centra en las relaciones entre los enunciados y no en el contenido de un enunciado en particular. El tipo de expresiones que interesan a la lgica son aquellas cuyo contenido puede ser evaluado como falso o verdadero. A este tipo de expresiones se le denomina proposicin, sentencia o enunciado. Existen diversos tipos de lgica, pero en este curso en particular se explorarn las de Lgica Proposicional

Matemticas Discretas y Algortmica

1. Lgica proposicional
Una Proposicin es un enunciado, declaracin, sentencia que puede tomar valores de verdadero o falso. Ejemplo de proposiciones : Bogota es la capital de Colombia. Madrid es la capital de Espaa. 3 + 5 = 7. 2 + 1 = 3. La tierra es el nico planeta en el universo que tiene vida. Los nicos enteros positivos que dividen a 7 son 1 y el propio 7.

Matemticas Discretas y Algortmica

1. Lgica proposicional
Son proposiones ? Qu hora es?. Cierra la puerta!. x + 1 = 2. x + y = z. Ella es muy inteligente. compre dos boletos para el concierto de rock para el viernes Para representar las proposiciones se utilizan letras tales como P, Q, R, etc. Por ejemplo, sea: P: Hoy es martes. Q: Hay clase de matemticas

Matemticas Discretas y Algortmica

1.1 y 1.2 Proposiciones simples y compuestas


En cualquier lgica, las proposiciones se clasifican en simples o compuestas. Las proposiciones simples tambin conocidas como primitivas se identifican porque no contienen otras afirmaciones que la compongan (tomos) Las proposiciones compuestas se obtienen al combinar proposiciones simples para expresar afirmaciones ms complejas

Matemticas Discretas y Algortmica

1.3 Operadores lgicos bsicos


La combinacin de las proposiciones simples se efecta a travs de los operadores (conectivos) lgicos bsicos:

Matemticas Discretas y Algortmica

1.3 Operadores lgicos bsicos


Las proposiciones tienen la siguiente jerarquia:

y son asociativas por la izquierda

Por ejemplo:

La formula resultante sera:

Matemticas Discretas y Algortmica

1.4 Tablas de verdad


Las Tablas de verdad son un instrumento empleado en la lgica proposicional, para indicar las diferentes interpretaciones de una frmula y el resultado de las mismas. La tabla de verdad o veracidad de una proposicin compuesta P = P (P1,....Pn) enumera todas las posibles combinaciones de los valores de verdad para P1,....Pn. Se denota por T (true) el valor verdadero y F (false) el falso.

Matemticas Discretas y Algortmica

10

1.5 1.5 Tautologas y Contradicciones


Las tablas de verdad nos permiten clasificar las expresiones logicas en: Tautologa: es una expresin logica que es verdadera para todas las asignaciones posibles Contradiccin: es una expresin logica que es falsa para todas las asignaciones posibles Contingencia: es una expresin logica que no es ni tautologa ni contradiccin

Matemticas Discretas y Algortmica

11

1.8 Algebra de proposiciones

Digamos que s, t, y u denotan las siguientes sentencias primitivas: s: l va a caminar. t: La luna sale . u: Est lloviendo. A continuacin tenemos un ejemplo de una proposicin compuesta expresada como

(t u ) s
Que expresada en idioma espaol queda s: Si la luna sale y no est llloviendo entonces el va a caminar

Matemticas Discretas y Algortmica

12

1.8 Algebra de proposiciones Equivalencia lgica y Leyes del algebra de proposiciones


Equivalencia lgica Si P y Q son dos expresiones lgicas y si P y Q tienen siempre la misma tabla de verdad, entonces se dice que P y Q son lgicamente equivalentes, y escribimos

P Q
Demostrar que

( P Q) (P Q)

Matemticas Discretas y Algortmica

13

1.8 Algebra de proposiciones Equivalencia lgica y Leyes del algebra de proposiciones


Leyes del Algebra de proposiciones La lgica proposicional satisface varias leyes que se listan en la siguiente tabla

Matemticas Discretas y Algortmica

14

1.9 Demostrar teoremas mediante algebra de proposiciones


Obtener la expresin equivalente simplificada de

( p q ) (p q )

Matemticas Discretas y Algortmica

15

1.9 Demostrar teoremas mediante algebra de proposiciones


Obtener la expresin equivalente simplificada de

[[( p q ) r ] q ]

Matemticas Discretas y Algortmica

16

1.10 Reglas de Inferencia Lgica


-La inferencia es la forma en la que obtenemos conclusiones en base a datos y declaraciones establecidas. - Un argumento, por ejemplo es una inferencia, donde las premisas son los datos o expresiones conocidas y de ellas se desprende una conclusin. - Una inferencia puede ser: Inductiva, deductiva, transductiva y abductiva.

Matemticas Discretas y Algortmica

17

1.10 Reglas de Inferencia Lgica


-MODUS PONENDO PONENS (PP) / MODUS PONENS

pq Si llueve, entonces las calles se mojan p Llueve __________________________________________________ q Luego, las calles se mojan

(premisa) (premisa)

(conclusin)

El condicional o implicacin es aquella operacin que establece entre dos enunciados una relacin de causa-efecto. La regla ponendo ponens significa, afirmando afirmo y en un condicional establece, que si el antecedente (primer trmino, en este caso p) se afirma, necesariamente se afirma el consecuente (segundo trmino, en este caso q).

Matemticas Discretas y Algortmica

18

1.10 Reglas de Inferencia Lgica


MODUS TOLLENDO TOLLENS (TT) / MODUS TOLLENS Tollendo tollens significa negando, niego, y se refiere a una propiedad inversa de los condicionales, a los que nos referamos en primer lugar.

pq Si llueve, entonces las calles se mojan q Las calles no se mojan __________________________________________________ p Luego, no llueve

Matemticas Discretas y Algortmica

19

1.10 Reglas de Inferencia Lgica


Si de un condicional, aparece como premisa el consecuente negado (el efecto), eso nos conduce a negar el antecedente (la causa), puesto que si un efecto no se da, su causa no ha podido darse. Esto nos permite formular una regla combinada de las ambas anteriores, consecuencia ambas de una misma propiedad de la implicacin; la regla ponendo ponens slo nos permite afirmar si est afirmado el antecedente (el primer trmino de la implicacin), y la regla tollendo tollens slo nos permite negar a partir del consecuente (segundo trmino de la implicacin); ambas consecuencias se derivan de que la implicacin es una flecha que apunta en un nico sentido, lo que hace que slo se pueda afirmar a partir del antecedente y negar slo a partir del consecuente.

Matemticas Discretas y Algortmica

20

1.10 Reglas de Inferencia Lgica


MODUS TOLLENDO PONENS (TP) La disyuncin, que se simboliza con el operador V, representa una eleccin entre dos enunciados. Ahora bien, en esa eleccin, forma parte de las posibilidades escoger ambos enunciados, es decir, la verdad de ambos enunciados no es incompatible, si bien, ambos no pueden ser falsos. A partir de lo anterior, se deduce la siguiente regla, denominada tollendo ponens (negando afirmo): si uno de los miembros de una disyuncin es negado, el otro miembro queda automticamente afirmado, ya que uno de los trminos de la eleccin ha sido descartado.

pVq

He ido al cine o me he ido de compras

q No he ido de compras __________________________________________________________ p Por tanto, he ido al cine

Matemticas Discretas y Algortmica

21

1.10 Reglas de Inferencia Lgica


SILOGISMO HIPOTTICO (SH) Dados dos implicaciones, de las cuales, el antecedente de la una sea el consecuente de la otra (el mismo enunciado), podemos construir una nueva implicacin cuyo antecedente sea el de aquella implicacin cuya consecuencia sea el antecedente de la otra implicacin, y cuyo consecuente sea el de sta ltima, cuyo antecedente era consecuencia del primero.

Matemticas Discretas y Algortmica

22

1.10 Reglas de Inferencia Lgica


Expresado de otro modo, si una causa se sigue una consecuencia, y sta consecuencia es a su vez causa de una segunda consecuencia, se puede decir que esa primera causa es causa de esa segunda consecuencia, del mismo modo que, si una bola de billar roja golpea a otra bola blanca que a su vez golpea a una bola negra, la bola roja es causa del movimiento de la bola negra. Expresado en forma de inferencia lgica:

pq mueve qr

Si la bola roja golpea a la bola blanca, la bola blanca se Si la bola blanca golpea a la bola negra, la bola negra se

mueve ____________________________________________________________________ pr Si la bola roja golpea a la bola blanca, la bola negra se mueve

Matemticas Discretas y Algortmica

23

1.13 Cuantificadores
Cuantificacin universal La cuantificacin universal de P(x) es la proposicin P(x) es verdad para todos los valores de x en el universo de discurso. La notacin xP(x) denota la cuantificacin universal de P(x). Aqu Es llamado el cuantificador universal. La expresin xP(x) es tambin expresada como: para todo x P(x) o para cada x P(x) Ejemplo1 Plantear la expresin: cada alumno en esta clase estudia calculo como una cuantificacin universal. 1. Sea P(x) que denota la expresin x estudia calculo entonces se puede expresar como: xP(x), donde el universo de discurso consiste de los alumnos en esta clase.
Matemticas Discretas y Algortmica
24

1.13 Cuantificadores
Cuantificacin universal Ejemplo2 Sea Q(x) la expresin x<2 cual es el valor de verdad de la cuantificacin xP(x), donde el universo de discurso es el conjunto de los numeros reales ? Q(x) no es verdadera para todos los numeros reales x.por ejemplo Q(3) es falsa. As xQ(x) es falsa.

Matemticas Discretas y Algortmica

25

1.13 Cuantificadores
Cuantificacin existencial La cuantificacin existencial de P(x) es la proposicin existe un elemento x en el universo de discurso tal que P(x) es verdad. La notacin xP(x) denota la cuantificacin existencial de P(x). Aqu Es llamado el cuantificador existencial. La expresin xP(x) es tambin expresada como: hay un x tal que P(x) hay al menos un x tal que P(x) o para algun x P(x) Ejemplo 1 Sea Q(x) que denota la expresin x = x +1 Cual es el valor de verdad de xQ(x), donde el universo de discurso es el conjunto de los numeros reales ? Puesto que Q(x) es falso para cada numero real x, la cuantificacin existencial de Q(x), la cual es xQ(x), es falsa.
Matemticas Discretas y Algortmica
26

1.13 Cuantificadores
Ejemplo2 Cual es el valor de verdad de xP(x), donde P(x) es la expresin x2 > 10 y el universo de discurso consiste de los enteros positivos que no sobrepasan al 4 ? La expresin xP(x) es la misma como la disyuncin P(1) v P(2) v P(3) v P(4). Ya que P(4) la cual es la expresin 42 > 10 es verdad, entonces se sigue que xP(x) es verdad.

Matemticas Discretas y Algortmica

27

2. Conjuntos
Conjuntos Definicin 1 Son usados para agrupar objetos juntos. Usualmente los objetos en un conjunto tienen propiedades similares. Definicin 2 Los objetos en un conjunto son tambin llamados los elementos del conjunto. Un conjunto es indicado para contener sus elementos. Hay muchas formas para describir un conjunto. Una manera es listar todos los miembros del conjunto, cuando es posible. Ejemplo1: El conjunto O de los enteros positivos impares menores que 10 pueden ser expresado por O = {1, 3, 5, 7, 9}

Matemticas Discretas y Algortmica

28

2. Conjuntos
Ejemplo3: A continuacion se listan conjuntos de gran importancia en las matemticas discretas (esos conjuntos son denotados por usando letras en negrilla) N = {0, 1, 2, 3, .....} el conjunto de los nmeros naturales Z = {......, -2, -1, 0, 1, 2, .....} el conjunto de los enteros Z+= {1, 2, .....} el conjunto de los enteros positivos Q = {p/q pZ,.qZ, q0} el conjunto de los nmeros racionales R = el conjunto de los nmeros reales Definicin 3 Dos conjuntos son iguales si y solamente si ellos tienen los mismos elementos. Ejemplo1: El conjunto {1, 3, 3, 3, 5, 5, 5} es igual al conjunto {5, 3, 1}. Note que ni el orden en que son listados los elementos ni si estos son listados mas de una vez importa

Matemticas Discretas y Algortmica

29

2. Conjuntos
Otra forma de describir un conjunto es usar la notacin del conjunto constructor (los elementos del conjunto seran caracterizados por propiedades). Esta notacin es usada principalmente cuando es imposible listar todos los elementos del conjunto Ejemplo2: El conjunto de todos los nmeros reales puede ser escrito como: R = { x | x es un numero real } Diagramas de Venn Los conjuntos tambin pueden ser representados grficamente a travs de los diagramas de Venn. En estos, el conjunto universal U, el cual contiene todos los elementos en consideracin es representado por un rectangulo. Dentro de este rectngulo, crculos u otras figuras geomtricas son usados para representar conjuntos.

Matemticas Discretas y Algortmica

30

2. Conjuntos
Escribimos a A para indicar que a es un elemento del conjunto A. La notacin a A indica que a no es un miembro del conjunto A. Hay un conjunto especial que no tiene elementos, el cual es llamado el conjunto vaco o conjunto nulo y es denotado por (tambin puede ser denotado por {}) Definicin 4 Se dice que un conjunto A es un subconjunto de B si y solo si cada elemento de A es tambin un elemento de B. Se usa la notacin A B para indicar que A es un subconjunto del conjunto B. Claramente se percibe que A B si y solo si la cuantificacin x(x A x B) es verdad Ejemplo1: El conjunto de los enteros impares menores que 10 es un subconjunto de los enteros positivos menores que 10.

Matemticas Discretas y Algortmica

31

2. Conjuntos
Teorema1. Para cualquier conjunto S:

Los conjuntos pueden tener otros conjuntos como sus miembros.

Matemticas Discretas y Algortmica

32

2. Conjuntos
Conjunto Finito y Cardinalidad Definicin 5 Sea S un conjunto. Si hay exactamente n elementos distintos en S donde n es un entero no negativo, decimos que S es un conjunto finito y que n es la cardinalidad de S. La cardinalidad es denotada por |S|. Ejemplo: Puesto que el conjunto nulo no tiene elementos, entonces | |= 0. Definicin 6 Se dice que un conjunto es infinito si no es finito.

Matemticas Discretas y Algortmica

33

2. Conjuntos
Definicin 7 Dado un conjunto S, el conjunto potencia de S es el conjunto de todos los subconjuntos de el conjunto S. El conjunto potencia de S es denotado por P(S). Ejemplo: Cual es el conjunto potencia de el conjunto {0, 1, 2}? P({0,1,2}) = { , {0}, {1}, {2}, {0,1}, {0,2}, {1,2}, {0,1,2}} Si un conjunto tiene n elementos, entonces su conjunto potencia tiene 2n elementos.

Matemticas Discretas y Algortmica

34

2. Conjuntos
Definicin 9 Sean A y B conjuntos. El producto cartesiano de A y B denotado por A x B, es el conjunto de todas las parejas ordenadas (a,b) donde a A y b B. Por lo tanto, A x B = { (a,b) | a A b B } Ejemplo: Cual es el producto cartesiano de A={1, 2} y B={a, b, c}? A x B = {(1,a), (1,b), (1,c), (2,a), (2,b), (2,c)}

Matemticas Discretas y Algortmica

35

2. Conjuntos
Operaciones de conjuntos Unin Definicin 1 Sean A y B conjuntos. La unin de los conjuntos A y B denotada por A U B, es el conjunto que contiene los elementos que estn ya sea en A o en B, o en ambos. Un elemento x pertenece a la unin de los conjuntos A y B si y solo si x pertenece a A o x pertenece a B. AU B = {x | x A v x B } Ejemplo1: Cual es la unin de los conjuntos {1,3,5} y {1,2,3}? AUB = {1,2,3,5}.

Matemticas Discretas y Algortmica

36

2. Conjuntos
Operaciones de conjuntos Interseccin Definicin 2 Sean A y B conjuntos. La interseccin de los conjuntos A y B denotada por AB, es el conjunto que contiene los elementos que estan en ambos A y B. Un elemento x pertenece a la interseccin de los conjuntos A y B si y solo si x pertenece a A y x pertenece a B. A B = {x | x A x B } Ejemplo1: Cual es la interseccin de los conjuntos {1,3,5} y {1,2,3}? A B = {1, 3}.

Matemticas Discretas y Algortmica

37

2. Conjuntos
Operaciones de conjuntos Diferencia Definicin 3 Sean A y B conjuntos. La diferencia de A y B denotada por A-B, es el conjunto que contiene los elementos que estan en A pero no en B. La diferencia de A y B es tambin el complemento de B con respecto a A. Un elemento x pertenece a la diferencia de A y B si y solo si xA y x B.

Ejemplo1: La diferencia de {1, 3, 5} y {1, 2, 3} es el conjunto {5}.

Matemticas Discretas y Algortmica

38

2. Conjuntos
Operaciones de conjuntos Complemento Definicin 4 Sea U el conjunto universal. El complemento del conjunto A, denotado por , es el complemento de A con respecto a U. En otras palabras, el complemento del conjunto A es U-A. Un elemento pertenece a si y solo si x A. = {x | x A } Ejemplo1: Sea A el conjunto de los enteros positivos mayores a 10 y U el conjunto de todos los enteros positivos. Entonces = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

Matemticas Discretas y Algortmica

39

2. Conjuntos
Identidades de Conjuntos Como se podr apreciar a continuacin existen similitudes entre las identidades de conjuntos y las equivalencias lgicas. Adems, las identidades de conjuntos pueden ser probadas directamente de las equivalencias lgicas correspondientes.

Matemticas Discretas y Algortmica

40

2. Conjuntos
Identidades de Conjuntos

Matemticas Discretas y Algortmica

41

Diagramas de Venn

Matemticas Discretas y Algortmica

42

Diagramas de Venn

Matemticas Discretas y Algortmica

43

Diagramas de Venn

Matemticas Discretas y Algortmica

44

3. Algebra Booleana
lgebra de Boole (tambin llamada Retculas booleanas) en informtica y matemtica, es una estructura algebraica que se basa en las operaciones lgicas Y(AND), O (OR) y NO (NOT), as como el conjunto de operaciones unin, interseccin y complemento. El lgebra de Boole es una estructura algebraica que puede ser considerada desde distintos puntos de vista matemticos: Como retcula El lgebra de Boole es una retcula (A, . , +), donde el conjunto A esta formado por dos elementos A={0, 1}.

Matemticas Discretas y Algortmica

45

3. Algebra Booleana. Retcula (Lattice)


La retcula es un sistema algebraico con dos operaciones binarias + y . , y elementos arbitrarios a, b, c de A satisfacen los siguientes cuatro axiomas Indempotencia conmutatividad Asociatividad Absorcion

{A,+, .}

Matemticas Discretas y Algortmica

46

3. Algebra Booleana. Retcula (Lattice)


Conjunto ordenado Tengamos que R es una relacin binaria en un conjunto A. If cualesquiera elemtos a,b,c en A satisfacen las siguientes tres coondicines 1) Ley Reflectiva: a R a 2) Ley Antisimetrica: Si a R b y b R a entonces a = b 3) Ley Transitiva: Si a R b y b R c, entonces a R c Entonces R es una relacin ordenada o es una relacin parcialmente ordenada Diagramas de Hasse Un ordenamiento parcial puede ser representado grficamente a travs de un diagrama de Hasse. El diagrama de un conjunto parcialmente ordenado A representa los elementos de A como puntos en un el plano y la relacin de ordenamiento es una lnea reflejando el orden desde un nivel inferior a un nivel superior.

Matemticas Discretas y Algortmica

47

3. Algebra Booleana. Retcula (Lattice)


Diagramas de Hasse Ejemplo Para los elementos 0, a, b, 1 pertenecientes a A de acuerdo a las siguiente relacin 0 a, 0 b, a 1, b 1 el diagrama de Hasse sera

Matemticas Discretas y Algortmica

48

3. Algebra Booleana. Retcula (Lattice)


Diagramas de Hasse Ejemplos

Diagrama de Hasse de B3

Diagrama de Hasse de P{0,1,2}

Matemticas Discretas y Algortmica

49

3. Algebra Booleana. Postulados y Teoremas


POSTULADOS DEL LGEBRA DE BOOLE Postulado 1. Definicin. El lgebra booleana es un sistema algebraico definido en un conjunto A, el cual contiene dos o ms elementos y entre los cuales se definen dos operaciones denominadas "suma u operacin OR" ( + ) y "producto o multiplicacin u operacin AND" ( ), las cuales cumplen con las siguientes propiedades: Postulado 2. Existencia de Neutros. Existen en A el elemento neutro de la suma, denominado 0 y el neutro de la multiplicacin, denominado 1, tales que para cualquier elemento x de s: (a) x + 0 = x (b) x. 1 = x Postulado 3. Conmutatividad. Para cada x, y en A: (a) x+y = y+x (b) x y =y x Postulado 4. Asociatividad. Para cada x, y, z en A: (a) x + (y + z) = (x + y) + z (b) x (y z) = (x y) z Postulado 5. Distributividad. Para cada x, y, z en A: (a) x+(y z)=(x+y) (x+z) (b) x (y+z)=(x y)+(x z) Postulado 6. Existencia de Complementos. Para cada x en A existe un elemento nico denotado x (tambin denotado x), llamado complemento de x tal que (a) x+x = 1 (b) x x = O
Matemticas Discretas y Algortmica
50

3. Algebra Booleana. Teoremas


Antes de presentar los teoremas es conveniente mencionar el siguiente principio que se derivadirectamente de la manera en que fueron presentados los seis postulados fundamentales, es decir, delhecho de que cada postulado tiene dos incisos los cuales son duales uno del otro. Principio de Dualidad. Si una expresin booleana es verdadera, su expresin dual tambin lo es. Expresiones duales. Dos expresiones se dicen duales una de la otra, si una se puede obtener de la otra cambiando las operaciones ( + ) por (.) y viceversa y cambiando los O's por 1 's y viceversa. Ejemplo. La expresin A + B = 1 es dual de la expresin A.B = O, Todas las expresiones de los incisos (a) de los postulados del lgebra booleana son duales de las expresiones de los incisos (b) correspondientes.

Matemticas Discretas y Algortmica

51

3. Algebra Booleana. Teoremas


Teorema 1. Multiplicacin por cero a) A.0 = 0 b) A+1 = 1 Teorema 2. Absorcin a) A + AB = A b) A(A + B) = A Teorema 3. Cancelacin a) A + AB = A + B b) A( A + B) = A B Teorema 6. Consenso

Matemticas Discretas y Algortmica

52

3. Algebra Booleana. Teoremas


Teorema 7. Teorema de De Morgan

Teorema 8. Involucin

Teorema 9. Complementos de los neutros

Matemticas Discretas y Algortmica

53

Algebra Booleana FUNCIONES BOOLEANAS En forma similar a como se define en los cursos de lgebra de nmeros reales, es posible definir una relacin de dependencia de una variable booleana o variable lgica con otras variables booleanas A independientes. Es decir, es posible definir funciones booleanas o funciones lgicas. Definicin. Sean X1,X2,...,Xn, variables booleanas, es decir, variables que pueden tomar el valor de 0 o de 1, entonces la expresin Y = f(X1,X2,...,Xn) denota una dependencia funcional de la variable dependiente Y respecto a las variables independientes

Matemticas Discretas y Algortmica

54

Algebra Booleana Ejemplo: La siguiente es una funcin booleana Y= f(A,B,C) = AB + AC + AC Esta funcin se puede evaluar para diversos valores de sus variables independientes A, B, C: Si A = 1, B = 0, C = 0 entonces Y= f(1,0,0) = 1.0 + 0.0 + 1.1 = 1, Si A = 1, B = 1, C = 0 entonces Y= f(1,1,0) = 1.1 + 0.0 + 1.1 = 1, Si A = 0, B = 1, C = 0 entonces Y= f(0,1,0) = 0.1 + 1.0 + 0.1 = 0, etc. A diferencia de las funciones de variable real, las cuales no pueden representarse completamente usando una tabla de valores, las funciones booleanas s quedan totalmente especificadas por una tabla que incluya todas las posibles combinaciones de valores que pueden tomar las variables independientes, dicha tabla se denomina tabla de verdad y es completamente equivalente a la expresin booleana, ya que incluye todas sus posibilidades.
Matemticas Discretas y Algortmica
55

Algebra Booleana
Ejemplo. La siguiente es la tabla de verdad para la funcin del ejemplo anterior A B C f(A,B,C) 000 0 001 1 A 010 0 011 1 100 1 101 0 110 1 111 1
En general para una funcin 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 funcin 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.
Matemticas Discretas y Algortmica
56

Reduccin de Funciones Boolenas usndo Algebra Booleana


Utilizando los postulados y teoremas del algebra booleana reducir las siguientes expresiones

Matemticas Discretas y Algortmica

57

Reduccin de Funciones Boolenas usando Algebra Booleana


Utilizando los postulados y teoremas del algebra booleana reducir las siguientes expresiones

Matemticas Discretas y Algortmica

58

Funciones de una y dos variables


FUNCIONES BOOLEANAS DE UNA y DOS VARIABLES En el caso de funciones de variable real sera imposible tratar de mencionar todas las posibles funciones de una o ms 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 nmero de variables. a continuacin se hace una lista de stas para los casos de 0, 1 y 2 variables independientes: Funciones de cero variables. Estas son las funciones constantes y slo hay dos: f0 = 0 Funcin constante cero f1 = 1 Funcin constante uno Funciones de una variable. Adems de las funciones constantes ahora se pueden definir otras dos: f0(A) = 0 Funcin constante cero f1(A) = A Funcin identidad f2(A) = A Funcin complemento, negacin f3(A) = 1 Funcin constante uno
Matemticas Discretas y Algortmica
59

Funciones de una y dos variables


Funciones de dos variables. En este caso se pueden definir 16 funciones diferentes, las cuales incluyen las cuatro anteriores y otras doce ms. En las siguiente tabla se muestra un resumen de las diecisis funciones de dos variables, incluyendo su nombre, su tabla de verdad, y su expresin lgica (booleana).

Matemticas Discretas y Algortmica

60

Mapas de Karnaugh. Conceptos iniciales


La herramienta fundamental para la simplificacin de funciones booleanas es y seguir siendo el lgebra de Boole; sin embargo, como ya lo ha mostrado la experiencia, el lgebra de Boole tiene las siguientes desventajas: - No es un mtodo sistemtico (no hay un algoritmo paso a paso a seguir). - No es fcil saber cuando la expresin ya est lo ms reducida posible. -Es fcil cometer errores y es difcil revisar el procedimiento. Por ello, es importante contar con un mtodo como el que se presentar aqu, el cual es un mtodo sistemtico y adems grfico, por lo cual es ms sencillo y poderoso para la simplificacin de funciones booleanas. Previamente a la presentacin del mtodo se requieren algunas definiciones que se usarn de aqu en adelante.

Matemticas Discretas y Algortmica

61

Mapas de Karnaugh. Conceptos iniciales


FORMAS CANNICAS Trmino Producto.- Se llama trmino producto una expresin booleana que solamente incluye operaciones AND entre sus variables (afirmadas o negadas) Ejemplos de trminos producto:

Forma SP.- Una funcin booleana se dice que esta en la forma de suma de productos (SP) si est formada exclusivamente por la suma (OR) de trminos producto. Ejemplos de funciones en forma SP son: ,

Matemticas Discretas y Algortmica

62

Mapas de Karnaugh. Conceptos iniciales

Mintrmino.- Es un trmino producto que contiene todas las variables de la funcin. Tcnicas de Reduccin de Funciones Lgicas Ejemplos de mintrminos para una funcin de 4 variables A, B, C, D:

Forma Cannica SP.- Si los trminos producto de una funcin booleana en la forma SP son todos mintrminos, se dice que est en la forma cannica SP. Ejemplos de funciones en forma cannica SP son:

Matemticas Discretas y Algortmica

63

Mapas de Karnaugh. Conceptos iniciales


Trmino Suma.- Se llama trmino suma a una expresin booleana que solamente incluye operaciones OR entre sus variables (afirmadas o negadas) Ejemplos de trminos suma:

Forma PS.- Una funcin booleana se dice que esta en la forma de producto de sumas (PS) si est formada exclusivamente por el producto (AND) de trminos suma. Ejemplos de funciones en forma PS son:

Matemticas Discretas y Algortmica

64

Mapas de Karnaugh. Conceptos iniciales


Maxtrminos.- Son trminos suma que contienen todas las variables de la funcin. Ejemplos de maxtrminos para una funcin de 4 variables A, B, C, D son:

Forma Cannica PS.- Si los trminos suma de una funcin booleana en la forma PS son todos maxtrminos, se dice que est en la forma cannica PS. Ejemplos de funciones en forma cannica PS son:

Matemticas Discretas y Algortmica

65

Mapas de Karnaugh. Conceptos iniciales


Una manera de simplificar la escritura de las funciones en forma cannica consiste en representar sus trminos por nmeros bianrios, en base a la siguiente convencin

Por ejemplo, usando esta notacin la funcin f3(A,B,C) puede escribirse como

O en forma ms compacta: f3(A,B,C) = m(2,3,6,7) A la representacin anterior se le llama notacin en Lista de mintrminos.
Matemticas Discretas y Algortmica
66

Mapas de Karnaugh. Conceptos iniciales


En forma similar, la funcin f7(A,B,C) puede escribirse como

O en forma ms compacta: f7(A,B,C) = M(0,1,4,5) A la representacin anterior se le llama notacin en Lista de maxtrminos.

Matemticas Discretas y Algortmica

67

Mapas de Karnaugh. Conceptos iniciales


RELACIN ENTRE MINTRMINOS Y MAXTRMINOS Usando el teorema de DMorgan podemos obtener la equivalencia entre mintrminos y maxtrminos como sigue. Tomemos como ejemplo el mintrmino m2 de la funcin f3(A,B,C) y obtengamos su complemento:

Lo anterior se cumple para cualquier mintrmino, es decir, en general el complemento de un mintrmino es el maxtrmino correspondiente:

Matemticas Discretas y Algortmica

68

Mapas de Karnaugh.
MAPAS DE KARNAUGH Los Mapas de Karnaugh (MK) no son ms que una extensin de los conceptos de tablas de verdad,diagramas de Venn y mintrminos. A continuacin se ilustrar la manera en que estos tres conceptos se entrelazan para obtener lo que llamaremos un Mapa de Karnaugh. Para ello, consideremos el Diagrama de Venn de dos conjuntos A y B y localicemos en el los subconjuntos o regiones correspondientes a los cuatro mintrminos

es decir, los mintrminos m0, m1, m2 y m3.

Matemticas Discretas y Algortmica

69

Mapas de Karnaugh. una manera ms cmoda de representar el mismo diagrama con slo conjuntos rectangulares es como se muestra en la siguiente figura

Matemticas Discretas y Algortmica

70

Mapas de Karnaugh.
Sin embargo, la representacin anterior an se puede mejorar eliminando las letras m y observando que se puede tabular en forma horizontal la pertenencia o no pertenencia de una regin al conjunto A y en forma vertical a B como se muestra en la siguiente figura

La figura anterior se denomina Mapa de Karnaugh de las variables A y B. En forma similar se pueden obtener los Mapas de tres y cuatro variables, correspondientes a diagramas de Venn de tres y cuatro conjuntos, como se muestra en la siguiente figura
Matemticas Discretas y Algortmica
71

Mapas de Karnaugh.

2 3

6 7

4 5

Matemticas Discretas y Algortmica

72

Mapas de Karnaugh.
REPRESENTACIN DE FUNCIONES EN MAPAS DE KARNAUGH Como habr podido advertirse, los Mapas de Karnaugh (M. K.) vienen siendo versiones modificadas de las tablas de verdad, ya que poseen una celda por cada mintrmino posible, as como una tabla de verdad posee un rengln por cada mintrmino posible. De manera que la representacin de funciones booleanas expresadas en forma cannica es directa, por ejemplo, consideremos la funcin siguiente f(A,B,C) =S m(0,3,4,5,) Para representarla en un M. K., simplemente transcribimos la tabla de verdad de la funcin colocando unos en las celdas correspondientes a los mintrminos 0, 3 y 5, considerando que las celdas vacas tienen ceros:

Matemticas Discretas y Algortmica

73

Mapas de Karnaugh.
Ejemplo: Dibujar sobre un MK la funcin siguiente

Para el primer trmino localizamos en el M.K. las celdas que forman la interseccin de los conjuntos A,B y C y las marcamos con 1s en este caso corresponde a las celdas 12 y 13, en forma similar se procede para el segundo y tercer trminos, obteniendo el M.K. siguiente.

Matemticas Discretas y Algortmica

74

Mapas de Karnaugh.
SIMPLIFICACION DE FUNCIONES USANDO MAPAS DE KARNAUGH La simplificacin de funciones booleanas mediante Mapas de Karnaugh est basada en el concepto de adyacencia lgica. Dos mintrminos se dicen adyacentes (desde el punto de vista lgico) si difieren solamente en una variable, por ejemplo, los siguientes pares de mintrminos para una funcin de las cuatro variables:

La propiedad ms interesante de los mintrminos adyacentes es que al sumarlos se simplifican en un trmino producto que no contiene la variable que cambia de uno a otro, por ello se le llama variable redundante; por ejemplo:

Matemticas Discretas y Algortmica

75

Mapas de Karnaugh.
En forma similar a los pares adyacentes tambin puede haber cuartetos de mintrminos adyacentes, cuando, de manera que al sumarlos se eliminen 2 variables, por ejemplo, los cuatro mintrminos:

son adyacentes, ya que al sumarlos, se eliminan dos variables

En forma similar se pueden encontrar grupos de 8, 16, etc. (potencias de 2) que permiten eliminar 3, 4 variables, etc.

Matemticas Discretas y Algortmica

76

Mapas de Karnaugh.
La principal propiedad de los mintrminos adyacentes es que al representarlos en un Mapa de Karnaugh forman un grupo de celdas que resultan adyacentes geomtricamente (es decir, resultan ser vecinos) Observacin.- En un Mapa de Karnaugh se considera que el todo el borde izquierdo es adyacente con el derecho, as como el borde inferior lo es con el superior. El mtodo de simplificacin usando Mapas de Karnaugh se puede resumir en: 1) Formar los grupos de unos del mximo tamao posible (el nmero de celdas por grupo debe ser potencia de 2) . 2) Agrupar todos los unos del mapa usando el menor nmero posible de grupos. (Un uno puede ser usado tantas veces como sea necesario).

Matemticas Discretas y Algortmica

77

Mapas de Karnaugh.
Ejemplos: a).- Dada la funcin f(A,B,C,D) = m(1,2,4,6,9), dibujar el M.K. correspondiente.

Para encontrar las expresiones denotadas en la figura para cada grupo en el mapa usamos su interpretacin como diagrama de Venn y expresamos los grupos en trminos de intersecciones de los conjuntos involucrados), de esta manera, obtenemos la funcin simplificada sumando las expresiones as obtenidas, es decir,

Matemticas Discretas y Algortmica

78

Mapas de Karnaugh.
b).- Simplificar la funcin f(A,B,C) = m(1,2,3,6).

Entonces, la funcin simplificada queda f(A,B,C) = Obsrvese que alguien con falta de experiencia podra haber comenzado agrupando las celdas 2 y 3 y posteriormente formar los grupos 2,6 y 1,3 obteniendo entonces 3 grupos y por lo tanto una funcin con tres trminos producto que no sera mnima. Para evitar lo anterior los primeros mintrminos que se deben agrupar son los implicantes primos (IP) que se definen como aquellos mintrminos que no pueden ser agrupados mas que de una manera.
Matemticas Discretas y Algortmica
79

Mapas de Karnaugh.
Por ejemplo, en el problema anterior los mintrminos 6 y 1 son implicantes primos (IP) y deben ser los primeros en agruparse. En ese problema no se requieren ms de dos grupos porque con dos grupos quedan agrupados todos los IP.

Matemticas Discretas y Algortmica

80

4. Grafos
Los puentes de Knigsberg Knigsberg (actualmente Kaliningrado, Rusia) era una ciudad de Prusia del siglo XVIII. El problema que nos ocupa tiene como protagonista a un ro, el ro Pregel, que cruzaba la ciudad, a dos islas que se encontraban en el mismo y a siete puentes que comunicaban las dos partes de la ciudad con las mismas. Concretamente la situacin era como se describe en la imagen ( y son las dos partes de la ciudad y y las dos islas):

El problema consista en comenzar en un punto, pasar por los siete puentes sin repetir ninguno y volver al punto de partida.
Matemticas Discretas y Algortmica
81

4. Grafos
Euler enfoc el problema representando cada parte de tierra por un punto y cada puente, por una lnea, uniendo los puntos (nodo) que se corresponden. Entonces, el problema anterior se puede trasladar a la siguiente pregunta: se puede recorrer el dibujo terminando en el punto de partida sin repetir las lneas?

Euler demostr que no era posible. La explicacin es la siguiente: si un nodo tiene un nmero impar de lneas que inciden en l, necesariamente ha de ser el primer o ltimo nodo del recorrido. Por lo tanto no se podr encontrar una ruta que resuelva el problema si existen ms de 2 nodos con nmero impar de lneas incidentes (ya que no puede haber ms de un inicio y un final en una ruta continua). En el caso de los puentes de Kronisberg hay 4 nodos que tienen nmero de lneas incidentes impar, por lo que no se puede encontrar una solucin al problema.
Matemticas Discretas y Algortmica

82

El problema del sobre y similares


Analicemos recorrer el siguiente grafo que asemeja a un sobre. Como en el caso de los puentes de Knigsberg el recoorido no permite pasar por una misma arista ms de una vez.

De acuerdo a lo expuesto por Euler, el recorrido tiene solucin? Ahora analicemos el grafo correspondiente a un sobre abierto

Cul es la solucin al recorrido solicitado?


Matemticas Discretas y Algortmica
83

Definicin de Grafo
Definicin Un grafo es un conjunto de puntos llamados vrtices (vertex) o nodos en el espacio, que estn conectados por un conjunto de lneas llamadas aristas (edge) o arcos.
Un grafo es un objeto matemtico que se utiliza para representar circuitos, redes, etc. Los grafos son muy utilizados en computacin, ya que permiten resolver problemas muy complejos. Los conceptos bsicos son: Dos vrtices son adyacentes si comparten la misma arista. Los extremos de una arista son los vrtices que comparte dicha arista. Se llama lazo a una arista que une un vrtice consigo mismo. Un grafo se dice que es finito si su numero de vrtices es finito. Matemticamente Un grafo G = (V, A, j) consta de un conjunto de vertices V y un conjunto de aristas A, j es una aplicacin que hace corresponder a cada elemento de A un par de elementos de V. Una arista en general se representa por {a,b}.

Matemticas Discretas y Algortmica

84

Grafos planos
Esta definicin da lugar a una representacin grfica, en donde cada vrtice es un punto del plano, y cada arista es una lnea que une a sus dos vrtices.

Si el dibujo puede efectuarse sin que haya cruce de lneas, se dice que G es un grafo plano. Por ejemplo, el siguiente es un grafo plano:

puesto que es equivalente a este otro:

Matemticas Discretas y Algortmica

85

Orden y tamao de Grafo


El nmero de vrtices de G |V(G)|, es el orden del grafo y el nmero de aristas |E(G)|es su tamao. El grado del vrtice de un grafo (gr) es el numero de aristas que tienen por extremo dicho vrtice.

Ejemplo:

Matemticas Discretas y Algortmica

86

Clases de Grafos
Clases de grafos Se dice que un grafo es simple si para cualesquiera dos vrtices existe a lo sumo una arista que los une. En otro caso se denomina multigrafo. Un multigrafo es un grafo con varias aristas entre dos vrtices. Un pseudografo es un grafo en el que hay aristas que tienen el mismo extremo (lazos). Un digrafo o grafo dirigido es un grafo donde a cada arista se le indica un sentido mediante una flecha. Los multidigrafos o pseudomultidigrafos son combinaciones de los anteriores. Un subgrafo es un grafo que esta contenido dentro de otro grafo y que se obtiene eliminando algunas aristas y vrtices del grafo principal. Un grafo es regular si todos sus vrtices tienen el mismo grado k (k-regular). Un grafo es conexo (conectado) si hay un camino entre cualquier par de vrtices Un grafo es completo si cada par de vrtices son los extremos de una arista.

Matemticas Discretas y Algortmica

87

Clases de Grafos
Clases de grafos Grafo regular: Aquel con el mismo grado en todos los vrtices. Si ese grado es k lo llamaremos k-regular. Por ejemplo, el primero de los siguientes grafos es 3-regular, el segundo es 2-regular y el tercero no es regular Grafo bipartito: Es aquel con cuyos vrtices pueden formarse dos conjuntos disjuntos de modo que no haya adyacencias entre vrtices pertenecientes al mismo conjunto

Matemticas Discretas y Algortmica

88

Teoremas de los grafos 1


Teoremas Dos grafos son isomorfos si tienen el mismo numero de vrtices y aristas y, estas se corresponden con los mismos extremos. Si dos grafos son isomorfos, los vrtices que se corresponden tienen el mismo grado. Dos grafos completos con el mismo numero de vrtices son isomorfos.

Matemticas Discretas y Algortmica

89

Clasificacn de los grafos. Ejemplos

Matemticas Discretas y Algortmica

90

Isomorfismo

Matemticas Discretas y Algortmica

91

Ejemplos
Dibujar los grafos G1, G2 y G3 definidos como: G1 = (V1, A1) V1 = {1, 2, 3, 4} A1 ={ (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)} G2 = (V2, A2) V2 = {1, 2, 3, 4, 5, 6} A2 = {(1, 2), (1, 3), (2, 4), (2, 5), (3, 6)} G3 = (V3, A3) V3 = {1, 2, 3} A3 = { (1, 2), (2, 1), (2, 3)}

Matemticas Discretas y Algortmica

92

Caminos
Un camino en un grafo es una sucesin finita en la que aparecen alternadamente vrtices y aristas de dicho grafo. Otras definiciones bsicas son: - Los extremos son los vrtices inicial y final del camino. - La longitud de un camino es el numero de aristas que contiene, y es igual al nmero de vrtices que contiene el caminos -1. - Un camino es cerrado si sus extremos coinciden. Un ciclo es un camino cerrado donde los nicos vrtices repetidos son el primero y el ultimo. - Un camino es simple si en la sucesin de vrtices no hay ninguno repetido. - Un circuito es un camino cerrado que no repite aristas. - Si en un grafo existe un camino que conecta dos vrtices distintos, entonces existe un camino simple con extremos en dichos vrtices. - Un grafo es conexo si para cada par de vrtices, existe un camino con extremos en dichos vrtices.

Matemticas Discretas y Algortmica

93

Tipos de caminos
Tipos de caminos Camino euleriano: es un camino o circuito que contiene todas las aristas apareciendo cada una de ellas exactamente una vez. Un grafo que admite dicho circuito se denomina grafo euleriano, y sus vrtices o tienen grado par o dos de los vrtices tienen grado impar. Camino hamiltoniano: es un camino simple que contiene todos los vrtices apareciendo cada uno de ellos exactamente una vez. Un ciclo que a su vez es un camino hamiltoniano se denomina ciclo hamiltoniano, y un grafo que contiene un ciclo hamiltoniano se denomina grafo hamiltoniano.

Matemticas Discretas y Algortmica

94

Representacin de grafos
Matriz de adyacencia Un grafo puede ser representado por una matriz de adyacencia. En particular si un grafo tiene vrtices v1, . . . , vn, entonces la matriz de adyacencia es de tamao n xn. El valor en el rengln i, columna i es 1si hay una arista vivj y es 0 si no existe tal arista. Cuando se trata de grafos ponderados en lugar de 1 el valor que tomar ser el peso de la arista. Por ejemplo: A continuacin tenemos un grafo y su matriz de adyacencia

Matemticas Discretas y Algortmica

95

Representacin de grafos
-Si el grafo est etiquetado la matriz de adyacencia contendr los valores de las aristas Ejemplo

Matemticas Discretas y Algortmica

96

Representacin de grafos

Matemticas Discretas y Algortmica

97

Tarea Grafos Eulerianos Grafos Hamiltonianos Arboles Matriz de adyacencia

Matemticas Discretas y Algortmica

98

rboles

Spanning Trees A subgraph T of a connected graph G is called a spanning tree of G if T is a tree and T includes all the vertices of G. Figure 8-18 shows a connected graph G and spanning trees T1, T2, and T3 of G.

Matemticas Discretas y Algortmica

99

rboles rboles. Un rbol se define como un tipo de grafo que no contiene ciclos, es decir es un grafo tambin acclico, pero a su vez es conexo. Tal es el caso de los siguientes dos grafos en donde se puede notar que ninguno de los dos contiene repeticiones (ciclos).

Matemticas Discretas y Algortmica

100

5. Algoritmos y Lenguajes de alto nivel Qu son los Algoritmos? Por qu vale el esfuerzo el estudio de los algoritmos? Bsicamente un algoritmo es, una descripcin del procedimiento para realizar una tarea: la resolucin de un problema concreto. Por procedimiento entendemos una secuencia de instrucciones tales que hechas en el orden adecuado llevan al resultado deseado Formalmente definimos un algoritmo como: Es el conjunto finito de instrucciones precisas para llevar a cabo un clculo, procesamiento o resolver un problema.
Matemticas Discretas y Algortmica
101

5. Algoritmos y Lenguajes de alto nivel En computacin un algoritmo es la idea detrs de un programa. consecuentemente los programas son implementaciones de los algoritmos. Ejemplo: algoritmo para ordenar una lista de nmeros.

Matemticas Discretas y Algortmica

102

Algoritmos. Caractersticas Adems de estar constituido por una secuencia de operaciones que llevan a la resolucin de un tipo concreto de problemas dentro de un modelo prefijado, en un algoritmo es preciso que se verifique:
Existencia de un conjunto de entradas. Debe existir un conjunto especfico de objetos cada uno de los cuales son los datos iniciales de un caso particular del problema que resuelve el algoritmo. Este conjunto se llama conjunto de entradas del problema. Definibilidad. Cada paso debe ser definible de forma precisa y sin ninguna ambigedad.

Efectividad. Todas las operaciones a realizar en el algoritmo han de ser suficientemente bsicas para que se puedan hacer en un tiempo finito en el procesador que ejecuta el algoritmo.

Matemticas Discretas y Algortmica

103

Algoritmos. Caractersticas Finitud. El algoritmo debe acabar en un nmero finito de pasos. Un mtodo de clculo puede no tener esta restriccin. Correccin. El algoritmo debe ser capaz de encontrar la respuesta correcta al problema planteado. Predecibilidad. Siempre consigue el mismo resultado para un mismo conjunto de entradas. Existencia de un conjunto de salidas. El resultado del algoritmo asociado al conjunto de entradas. Tambin se consideran caractersticas importantes de un algoritmo la claridad y la concisin: Un algoritmo claro y breve resulta ms sencillo de programar, a la vez que es ms sencillo comprobar si es correcto.

Matemticas Discretas y Algortmica

104

Algoritmos. Caractersticas Con esta definicin comprobamos que una receta de cocina puede no encajar totalmente con la nocin de algoritmo. La receta tiene un conjunto de entradas (ingredientes) y de salidas (el plato guisado); las instrucciones pueden, en principio, hacerse efectivas (se supone que se dispone de los utensilios convenientesel hardwarey que el cocinero conoce las tcnicas de cocina); se verifica la finitud, pero falla la definibilidad, ya que son ambigas frases tpicas de una receta como aadir una pizca de sal, revolver lentamente, o bien, esperar que se haya reducido el lquido, y tambin falla su predecibilidad.

Matemticas Discretas y Algortmica

105

Algoritmos. Ejemplo Describir un algoritmo para obtener el nmero cuyo valor sea el mximo dentro de una lista de nmeros enteros. Solucin:
1. Hacer el mximo temporal igual al primer nmero entero de la lista. 2. Comparar el siguiente nmero entero en la lista con el mximo temporal y si ste es mayor que el mximo temporal, asignar al msimo temporal ste ltimo nmero. 3. Repetir el paso anterior si hay ms nmeros en la lista. 4. Detenerse cuando ya no haya nmeros en la lista. Al finalizar, el maximo temporal ser igual al mximo numero en la lista.

Matemticas Discretas y Algortmica

106

Representacin de Algoritmos Las formas ms comunes de representar un algoritmo son: - Diagramas de flujo - Pseudocdigo Los diagramas de flujo son una herramienta grfica para descripcin de algoritmos. Un diagrama de flujo consta de una serie de smbolos estndar, que representan las distintas acciones del algoritmo, conectados mediante lneas que indican el orden en el cual deben realizarse las operaciones.

Matemticas Discretas y Algortmica

107

Representacin de Algoritmos
Un diagrama de flujo debe reflejar :
El comienzo del programa Las operaciones que el programa realiza El orden en que se realizan las operaciones El final del programa

Los smbolos utilizados han sido normalizados por las organizaciones ANSI (American National Standard Institute) y por ISO (International Standard Organization) y son los siguientes: Indican el inicio y el fin del algoritmo. Del primero slo puede salir una lnea y al segundo slo puede llegar una lnea.

Matemticas Discretas y Algortmica

108

Representacin de Algoritmos
Indica una accin a realizar. Tiene una nica lnea de entrada y otra de salida.

Indica una accin de entrada (lectura de datos desde el teclado) o salida (escritura de un dato por pantalla). Tiene una nica lnea de entrada y otra de salida.

Se usan para tomar una decisin, dependiendo de cierta condicin. Tiene una lnea de entrada y dos de salidas (una por la cual salir, si lacondicin es cierta, y otra, si es falsa).

Matemticas Discretas y Algortmica

109

Representacin de Algoritmos
Se usan para conectar los smbolos anteriores y especifican el flujo del algoritmo.

Se usan para conectar distintos puntos de los diagramas de flujo, evitando cruces de flechas.

Matemticas Discretas y Algortmica

110

Representacin de Algoritmos En la representacin es conveniente seguir las siguientes reglas: - El comienzo del programa figurar en la parte superior del diagrama. - Los smbolos de comienzo y fin debern aparecer una nica vez. - El flujo de las operaciones ser de arriba a abajo y de izquierda a derecha. - Se debe guardar cierta simetra en la representacin de bifurcaciones y bucles. - Se evitarn los cruces de lneas de flujo, utilizando conectores.

Matemticas Discretas y Algortmica

111

Pseudo Cdigo
Entendemos por pseudocdigo un lenguaje semiformal que facilita la descripcin algortmica de un programa. El uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un lenguaje de programacin) relativamente fcil. La ventaja del pseudocdigo es que en su uso en la planificacin de un programa, el programador se puede concentrar en la lgica y en las estructuras de control y no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil modificar el pseudocdigo si se descubren errores o anomalas en la lgica del programa, adems de todo esto es fcil su traduccin a lenguajes como Pascal, C o Basic. El pseudocdigo utiliza para representar las acciones sucesivas, palabras reservadas (similares a sus homnimos en los lenguajes de programacin), tales como inicio, fin, si-entonces-sino, mientras, repita-hasta.etc. Adems utiliza una estructura con sangras para mostrar los diferentes niveles en forma de bloques que integran el programa.

Matemticas Discretas y Algortmica

112

Pseudo Cdigo. Estructuras


Secuencia Inicio accin1 accin2 . .. accin n Fin Decisin Simple si condicin entonces accin1 accin2... accin n
No

Inicio Accin 1 Accin 2 Fin

Condicin S Tarea a realizar

Matemticas Discretas y Algortmica

113

Pseudo Cdigo. Estructuras


Decisin Doble si condicin entonces accin1 accin2... en caso contrario accin1 accin2

S Condicin

No

Tarea a Realizar si la condcin es verdadera

Tarea a Realizar si la condcin es falsa

Iteraccin Fija

para var= valor inicial hasta valor final hacer accin1 Para var:lim_inf. hasta lim_sup. accin2 ... Instrucciones accin n

Matemticas Discretas y Algortmica

114

Pseudo Cdigo. Estructuras


Condicional al inicio mientras condicin hacer accin1 accin2 ...accin n
No Condicin S Tarea a realizar

Condicional al final

repita accin1 accin2 ... accin n mientras que condicin


Matemticas Discretas y Algortmica
Tarea a realizar No Condicin S

115

Pseudo Cdigo. Estructuras


Seleccin casos selector de valor1 : accin1 accin2 valor2 : accin1 accin2 ... valor n : accin1 accin2 si no accin a realizar si no se produjo ninguno de los valores anteriores

Matemticas Discretas y Algortmica

116

Pseudo Cdigo. Programacin Estructurada


La programacin estructurada es un estilo de programacin en el cual, la estructura de un programa se hace tan clara como sea posible utilizando tres estructuras: 1. Secuencia Simple 2. Seleccin 3. Iteracin Estos tres tipos de estructuras de control pueden combinarse para producir programas con cualquier tipo de informacin que se vaya a procesar. Un programa estructurado tiene como caracterstica que puede leerse de arriba hacia abajo lo que hace que el programa sea ms fcil de leer y comprender por otros programadores facilitando as su mantenimiento. Un programa estructurado se compone de segmentos. Cada segmento est constituido por una entrada y una salida, tal segmento define un programa propio.

Matemticas Discretas y Algortmica

117

Metodolga de Programacin
Desarrollo de un programa - El desarrollo de un programa que resuelva un problema dado es una tarea compleja,ya que es necesario tener en cuenta de manera simultnea muchos elementos. Por lo tanto, es indispensable usar una metodologa de programacin. - Una metodologa de programacin es un conjunto o sistema de mtodos, principios y reglas que permiten enfrentar de manera sistemtica el desarrollo de un programa que resuelve un problema algortmico. Estas metodologas generalmente se estructuran como una secuencia de pasos que parten de la definicin del problema y culminan con un programa que lo resuelve.

Matemticas Discretas y Algortmica

118

Metodolga de Programacin
Desarrollo de un programa

A continuacin se presenta de manera general los pasos de una metodologa: - Entendimiento del problema. Con la cual se busca comprender totalmente el problema a resolver. - Especificacin. Con la cual se establece de manera precisa las entradas, salidas y las condiciones que deben cumplir. - Diseo. En esta etapa se construye un algoritmo que cumpla con la especificacin. - Codificacin. Se traduce el algoritmo a un lenguaje de programacin. - Prueba y Verificacin. Se realizan pruebas del programa implementado para determinar su validez en la resolucin del problema.
Matemticas Discretas y Algortmica
119

Ejemplo

Matemticas Discretas y Algortmica

120

Ejemplo

Matemticas Discretas y Algortmica

121

Diseo de Algoritmos
La fase de diseo del algoritmo, es decir, la fase en la que se construye el algoritmo que permitir encontrar la solucin al problema, est dividida en dos pasos importantes: Divisin (Divide and conquer): En el que a partir de la especificacin del algoritmo se divide el proceso (algoritmo en abstracto) en varios subprocesos hasta llegar al nivel de instruccin. Abstraccin: En el que se revisa que porciones del algoritmo se repiten o son muy utilizadas y con las cuales se construyen funciones y/o procedimientos.

Matemticas Discretas y Algortmica

122

Algoritmos recursivos e iterativos


Un algoritmo recursivo es un algoritmo donde una parte del algoritmo utiliza a si misma como subrutina. En muchos casos es ms fcil entender la funcin de un algoritmo recursivo y tambin demostrar que funcione correctamente. Un algoritmo que en vez de llamarse a si mismo repite en una manera cclica el mismo cdigo se dice iterativo.

Matemticas Discretas y Algortmica

123

Algoritmos recursivos e iterativos


Como ejemplo, veremos dos algoritmos para verificar si o no una dada palabra (una sola palabra de puras letras; en espaol, tpicamente ignorando los acentos de las letras) es un palndromo, o sea, que se lee igual hacia adelante que hacia atrs. Un ejemplo de tal palabra es reconocer. Un algoritmo recursivo simplemente examinara la primera y la ltima letra. Si son iguales, el algoritmo los quita de la sucesin de letras y llama a si mismo para ver si el resto tambin lo es. Al recibir una sucesin de un smbolo o vaco, el algoritmo da la respuesta s:

procedure rpal(palabra P = 12 . . . n1n) if n 1 return true ; if 1 = n return rpal(23 . . . n2n 1); else return false

Matemticas Discretas y Algortmica

124

Algoritmos recursivos e iterativos Una versin iterativa examinara al mismo tiempo desde el inicio y desde el fin verificando para cada letra si son iguales: procedure ipal(palabra P = 12 . . . n1n) i = 1; j = n; while i < j if i <> j return false ; else i := i + 1; j := j 1; return true ;

Matemticas Discretas y Algortmica

125

Lenguajes de Programacin
El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina, consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar cualquier accin. Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto nivel. Lenguajes de bajo nivel Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas.

Matemticas Discretas y Algortmica

126

Lenguajes de Programacin
Al estar prcticamente diseados a medida del hardware, aprovechan al mximo las caractersticas del mismo. Dentro de este grupo se encuentran: El lenguaje mquina: este lenguaje ordena a la mquina las operaciones fundamentales para su funcionamiento. Consiste en la combinacin de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho ms rpido que los lenguajes de alto nivel. La desventaja es que son bastantes difciles de manejar y usar, adems de tener cdigos fuente dficiles de depurar donde encontrar un fallo es muy difcil. El lenguaje ensamblador es un derivado del lenguaje mquina y esta formado por abreviaturas de letras y nmeros llamadas mnemonicos.

Matemticas Discretas y Algortmica

127

Lenguajes de Programacin. Lenguajes de Alto Nivel


Lenguajes de alto nivel Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje mquina. Estn dirigidos a solucionar problemas mediante el uso de EDD's. Nota: EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en todos los lenguajes de programacin. Son estructuras que pueden cambiar de tamao durante la ejecucin del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa. Se tratan de lenguajes ms independientes de la arquitectura del ordenador que los lenguajes de bajo nivel. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, se puede migrar de una mquina con una plataforma a una de otra plataforma (microprocesadores de arquitectura diferente). Estos lenguajes permiten al programador olvidarse del funcionamiento interno de la maquina/s para la que estn diseando el programa. Tan solo necesitan un traductor que entiendan el cdigo fuente como las caractersticas de la maquina. Ejemplos: Java, C++, C#, Basic

Matemticas Discretas y Algortmica

128

Lenguajes de Programacin. Generaciones


Generaciones La evolucin de los lenguajes de programacin se puede dividir en 5 etapas o generaciones. Primera generacin: Lenguaje maquina. Segunda generacin: Lenguajes ensambladores. Tercera generacin: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol Cuarta generacin. Son los lenguajes capaces de generar cdigo por si solos, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aqu tambin se encuentran los lenguajes orientados a objetos, haciendo posible la reutilizacin d partes del cdigo para otros programas. Ej. Visual Basic, Visual C++ . Quinta generacin: aqu se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todava estn poco desarrollados. Ej. LISP

Matemticas Discretas y Algortmica

129

Lenguajes de Programacin.
Tarea Investigar 1. Qu es un programa ensamblador? 2. Qu es un compilador? 3. Qu es un intrprete? 4. Proporcionar dos ejemplos de lenguajes interpretados y de lenguajes compilados.

Matemticas Discretas y Algortmica

130

Lenguajes de Programacin. Elementos


De una forma muy genrica, podemos decir que un lenguaje de programacin ofrece los siguientes elementos fundamentales: Estructuras de datos Instrucciones Instrucciones de control de flujo Tipos y estructuras de datos Las estructuras de datos permiten definir variables o elementos de datos donde se almacenan valores de tipo numrico, textual, etc. Prcticamente todos los lenguajes ofrecen soporte para variables de tipo numrico de todos los tipos (enteros, nmeros reales, etc), variables de tipo textual (cadenas de caracteres), as como soporte a estructuras complejas que combinan algunas de las anteriores: vectores, matrices, estructuras, etc

Matemticas Discretas y Algortmica

131

Lenguajes de Programacin. Elementos


Instrucciones Los lenguajes ofrecen instrucciones ya predefinidas que van desde operadores bsicos (algebricos, bolanos, etc) con los tipos de datos propios del lenguaje, hastainstrucciones de procesamiento como puede ser, por ejemplo, la instruccin para volcar a pantalla un texto Control de flujo Los lenguajes ofrecen, asimismo, instrucciones de control de flujo, que permiten alterar el camino de ejecucin del programa en funcin de, pro ejemplo, el valor de ciertas variables. Instrucciones de control de flujo tpicos son las estructuras condicionales como el tpico ifthenelse (si sucede algo ejecutar el siguiente conjunto de instrucciones y si sucede lo contrario ejecutar otro conjunto de instrucciones), bucles (instrucciones del tipo for o while), o estructuras selectivas que son una generalizacin de la condicional pero para muchos cursos de accin posibles.
Matemticas Discretas y Algortmica
132

Lenguajes de Programacin. Compiladores


El programador, con ayuda de una herramienta de edicin de textos (un editor) genera, en el lenguaje de alto nivel elegido, el programa (que incluye todas las definiciones de variables y estructuras de datos, as como el procesamiento a realizar). Esto constituye el denominado cdigo fuente. A continuacin otro programa, realiza la traduccin de este cdigo fuente al lenguaje mquina propio del microprocesador. Los programas que realizan esta labor son los compiladores e intrpretes.

Matemticas Discretas y Algortmica

133

Lenguajes de Programacin. Compiladores


En qu se diferencia un compilador de un intrprete ? La diferencia fundamental es la siguiente: Los compiladores realizan la traduccin en tiempo de desarrollo. Es decir, el programa an no se est ejecutando. El compilador recibe todo el cdigo fuente, lo analiza, lo optimiza y lo traduce a lenguaje mquina dejando un programa completo listo para su ejecucin. Tpicos lenguajes compilados son el C o el Pascal. Los intrpretes realizan la traduccin en tiempo de ejecucin. Es decir, a medida que el programa se va ejecutando, el intrprete va traduciendo instrucciones al lenguaje mquina. Ejemplos de intrpretes son los lenguajes de lneas de comandos de los sistemas operativos.

Matemticas Discretas y Algortmica

134

La mquina de Turing Para dar una definicin matemticamente precisa de lo que es un algoritmo, Turing ide un dispositivo imaginario al que denomin Mquina de computacin lgica LCM ("Logical Computing Machine"), pero que ha recibido en su honor el nombre de mquina de Turing. Aunque su propuesta es anterior a la aparicin de los computadores digitales (1936 "On computable numbers, with an application to the Entscheidungproblem"), actualmente es el objeto central de estudio de los tericos de la computacin. Una mquina de Turing es un autmata que se mueve sobre una secuencia lineal de datos. En cada instante la mquina puede leer un solo dato de la secuencia (generalmente un carcter) y realiza ciertas acciones en base a una tabla que tiene en cuenta su "estado" actual (interno) y el ltimo dato ledo. Entre las acciones est la posibilidad de escribir nuevos datos en la secuencia; recorrer la secuencia en ambos sentidos y cambiar de "estado" dentro de un conjunto finito de estados posibles.
Matemticas Discretas y Algortmica
135

La mquina de Turing

En realidad la mquina de Turing es ms una abstraccin matemtica que un dispositivo fsico o mecnico. El hecho que se le denomine "mquina" se debe a que su funcionamiento puede ser descrito en trminos de operaciones individuales muy sencillas que sugieren una implementacin real muy simple, lo que ha motivado que existan muchas versiones prcticas del mismo.

Matemticas Discretas y Algortmica

136

La mquina de Turing

La mquina de Turing Existen diversas "variedades" de una mquina de Turing, pero la ms simple puede ser descrita diciendo que es cualquier dispositivo que cumple las siguientes condiciones: Tiene una cinta sobre la que puede desplazarse a izquierda y derecha un cabezal de lectura/escritura. La cinta contiene una serie de celdas, y en cada una de ellas puede escribirse un smbolo de un conjunto finito; este conjunto de smbolos se denomina el alfabeto de la mquina. En principio todas las celdas que no se hayan escrito antes contienen un carcter especial nulo o vaco (que se representa por 0 o #). La cinta puede contener tantas celdas a derecha e izquierda del cabezal como sean necesarias para el funcionamiento de la mquina.
Matemticas Discretas y Algortmica
137

La mquina de Turing
El cabezal puede moverse a derecha (R) a izquierda (L) de su posicin actual, as como leer el contenido de una celda o escribir en ella cualquier carcter de su alfabeto. Existe un registro de estado que almacena el estado de la mquina. El nmero de estados posibles es finito, y no se exige ningn estado especial con el que sea iniciada la mquina. Existe una tabla de accin , que contiene las instrucciones de lo que har el autmata. Estas instrucciones representan en cierta forma el "programa" de la mquina. Las ejecucin de cada instruccin de la tabla de accin incluye cuatro pasos: Leer un carcter en la posicin actual. Escribir un nuevo smbolo en esta posicin (puede ser el mismo que haba). El smbolo a escribir es alguno del alfabeto de la mquina, y depende del carcter ledo y del estado actual. Desplazar el cabezal una celda a derecha o izquierda (R/L); en algunos modelos el desplazamiento puede ser nulo (detener H). Decidir cual ser el nuevo estado en funcin del carcter que se acaba de leer y del estado actual. Si la tabla de accin no contiene ninguna correspondencia con el estado actual y el smbolo ledo, entonces la mquina detiene su funcionamiento.

En los modelos didcticos computarizados la tabla suele definirse mediante una matriz de cinco columnas que contiene:
Estado/Carcter-ledo/Carcter-a-escribir/Movimiento/Nuevo-estado Matemticas Discretas y Algortmica
138

La mquina de Turing
A continuacin se muestra de una tabla que describe el comportamiento de una mquina de Turing que es capaz de sumar 1 a cualquier nmero unario ( 0.1)

Matemticas Discretas y Algortmica

139

La mquina de Turing
Tambin es posible representar la tabla de accin mediante un grafo. Los diferentes estados internos se representan por crculos. Los cambios de estado con flechas a las que se aade una leyenda. A partir de la tabla anterior se obtiene el siguiente grafo

la accin depende de dos factores: el estado interno y la informacin externa que puede "ver" a travs de su cabezal
Matemticas Discretas y Algortmica
140

La mquina de Turing
La consecuencia es que es imposible predecir su comportamiento de la simple inspeccin de su tabla de accin, ya que el comportamiento depende tambin de la entrada recibida. El hecho que el nmero de estados posibles y su alfabeto sea finitos, califica a estos autmatas como mquinas de estados finitos FSM ("Finite State Machine").

Matemticas Discretas y Algortmica

141

La mquina de Turing. Ejemplo


Supongamos una mquina de Turing con un alfabeto unario, en la que el nulo (ausencia de dato) lo sealamos con 0. La mquina puede tener cinco estados que denominamos {e0, e1, e2, e3, e4}. El estado inicial es e0; su tabla de accin se muestra

Matemticas Discretas y Algortmica

142

La mquina de Turing. Ejemplo

Observe que la tabla debe contener al menos tantas filas como estados distintos. La primera columna representa lo que podamos denominar "estado mental" de la mquina. La segunda columna indica el carcter ledo; representa la entrada (input) al autmata. Las siguientes (en otro color) representan el comportamiento o respuesta de la mquina para la combinacin estado/carcter-ledo. Esta respuesta tiene tres componentes:
Una salida (escribir en la cinta). Indicado en la columna W. Un movimiento de avance o retroceso del cabezal sobre la cinta (indicado en la columna M). Un cambio del estado interno actual del autmata a otro nuevo (columna N).

Observe que las filas pueden repetir el primer elemento; significan las acciones a tomar en cada estado segn el carcter ledo. Cada vez que se alcanza un estado para el que no exista una entrada para el carcter ledo, la mquina se detiene. En nuestro autmata la tabla seala acciones concretas para cualquier carcter ledo (0 o 1) en cualquiera de los estados e1, e2, e3 y e4, pero si en el estado e0 se lee un 0, la mquina se detiene.

Matemticas Discretas y Algortmica

143

La mquina de Turing. Ejemplo


La sucesin de pasos de cmputo es la siguiente (suponemos un estado inicial cualquiera ex): 1.- Se lee un carcter c (en nuestro caso es necesariamente 0 o 1) 2.- Se mira en la tabla que fila corresponde a la combinacin ex/c. 3a.- Si no existe entrada la mquina se detiene. 3b.- Si existe entrada se ejecuta la instruccin (columnas en marrn claro) en el siguiente orden: 3b1.- Se escribe en la posicin actual el carcter sealado (puede ser el mismo que haba). 3b2.- Se mueve el cabezal una posicin a izquierda o derecha. 3b3.- Se pasa al estado sealado en la ltima columna (puede implicar no cambiar de estado). 3b4.- Se repite el ciclo desde el punto 1.

Matemticas Discretas y Algortmica

144

Вам также может понравиться