Академический Документы
Профессиональный Документы
Культура Документы
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.
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
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.
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
Por ejemplo:
10
11
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
12
P Q
Demostrar que
( P Q) (P Q)
13
14
( p q ) (p q )
15
[[( p q ) r ] q ]
16
17
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).
18
pq Si llueve, entonces las calles se mojan q Las calles no se mojan __________________________________________________ p Luego, no llueve
19
20
pVq
21
22
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
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.
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.
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}
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
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.
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.
31
2. Conjuntos
Teorema1. Para cualquier conjunto S:
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.
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.
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)}
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}.
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}.
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.
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 }
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.
40
2. Conjuntos
Identidades de Conjuntos
41
Diagramas de Venn
42
Diagramas de Venn
43
Diagramas de Venn
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}.
45
{A,+, .}
46
47
48
Diagrama de Hasse de B3
49
51
52
Teorema 8. Involucin
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
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
57
58
60
61
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: ,
62
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:
63
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:
64
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:
65
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
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.
67
Lo anterior se cumple para cualquier mintrmino, es decir, en general el complemento de un mintrmino es el maxtrmino correspondiente:
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
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
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
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:
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.
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:
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:
En forma similar se pueden encontrar grupos de 8, 16, etc. (potencias de 2) que permiten eliminar 3, 4 variables, etc.
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).
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,
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.
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
De acuerdo a lo expuesto por Euler, el recorrido tiene solucin? Ahora analicemos el grafo correspondiente a un sobre abierto
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}.
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:
85
Ejemplo:
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.
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
88
89
90
Isomorfismo
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)}
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.
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.
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
95
Representacin de grafos
-Si el grafo est etiquetado la matriz de adyacencia contendr los valores de las aristas Ejemplo
96
Representacin de grafos
97
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.
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).
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
112
113
S Condicin
No
Iteraccin Fija
para var= valor inicial hasta valor final hacer accin1 Para var:lim_inf. hasta lim_sup. accin2 ... Instrucciones accin n
114
Condicional al final
115
116
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.
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
120
Ejemplo
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.
122
123
procedure rpal(palabra P = 12 . . . n1n) if n 1 return true ; if 1 = n return rpal(23 . . . n2n 1); else return false
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 ;
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.
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.
127
128
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.
130
131
133
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.
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)
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").
141
142
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.
143
144