MATEMATICA DISCRETAProf: Santiago Domingo Moquillaza Henríquez Calculo Proposicional Ejercicios: 1)Demuestre que T ⋀ S puede deducirse de las premisas p -> q , q -> ~r , r , p ⋁ (T ⋀ S) 1) p -> q 2) q -> ~r 3) p -> ~r 4) r -> ~p 5) r 6) ~p 7) p ⋁ (T ⋀ S) 8) ~p -> (T ⋀ S) 9) (T ⋀ S) (premisa) p -> q <-> ~q -> ~p (premisa) (silogismo hipotético) (3, contraposición (15)) (premisa) (4,5,MP(3)) (premisa) (7,condicional (12)) (6,8,MP) p->q ⋀ p->q 2) Demuestre que dado p ⋀ q , p -> r ⋀ q , r -> s ⋁ T , ~s puede deducirse T: 1) p 2) p -> r ⋀ q 3) r ⋀ q 4) r 5) r -> s ⋁ T 6) s ⋁ T 7) ~s -> T 8) ~s 9) T Simplificación Conjuntiva (p ⋀ q -> p) (premisa) (1,2,MP) (Simplificación Conjuntiva) (premisa) (4,5,MP) (6,Condicional) (premisa) (7,8,MP) 3) Proporcione la demostración para la implicación p -> (q -> s) , (~r ⋁ p) , q -> (r -> s ) es decir usted debe llegar a la implicancia r -> s 1) ~r ⋁ p (premisa) 2) r -> p (1,Condicional) 3) p -> (q -> s ) (premisa) 4) r -> (q -> s ) (2,3,Silogismo Hipotético) 5) ~r ⋁ (q -> s ) (4,Disyuncion Condicional) 6) ~r ⋁ (~q ⋁ s ) (5,Disyuncion Condicional) 7) q 8) q ⋀ (~r ⋁ ~q ⋁ s ) (6,7,Intersectando) 9) q ⋀ ~r ⋁ q ⋀ ~q ⋁ q ⋀ s (Distribuyendo) 10) q ⋀ ~r ⋁ F ⋁ q ⋀ s (Falacia) 11) q ⋀ ~r ⋁ q ⋀ s (Identidad) 12) q ⋀ (~r ⋁ s) (Distributiva) 13) ~r ⋁ s (12,Simplificacion) 14) r -> s (13,Condicional) Métodos de Demostración: Método directo o de Hipótesis auxiliar: Se basa en el principio p -> q si se asume como verdad p se debe demostrar que q es verdad. Ejemplo: Si m y n son números enteros impares entonces su producto es impar. p = m y n son números enteros impares q = su producto es impar m = 2k1 + 1 n = 2k2 + 2 (impar,k1 Є Z+) (impar,k2 Є Z+) m*n = (2k1 + 1)(2k2 + 1) = 4k1k2 + 2k1 + 2k2 + 1 = 2(2k1k2 + k1 + k2 ) + 1 -> impar Método por Reducción al Absurdo: Se debe llegar a una falacia, es decir partiendo de un p llegar a un ~p. Ejemplo _ Demostrar que √2 es irracional _ Asumir que √2 es racional. Si es racional p,q ∈ Z+ / además p y q son primos entre si. _ √2 = p/q -> elevando al cuadrado 2 = p2/q2 -> 2q2 = p2 -> p es par, es decir un divisor de 2 p p2 es par -> -> q p es par p -> q <-> ~q -> ~p p es impar p=2k+1 p=2k1 2k12 -> -> -> -> (Método Indirecto) p2 es impar (2k+1) 2 = 4k2 + 4k + 1 par impar 2q2 = (2k1)2 -> q2 = (4k1)2 2 q es par (es decir divisor de 2) Entonces se llega a una contradicción dado que p y q tienen como divisor a 2 por lo tanto p y q no son primos entre si por lo tanto √2 no es un numero racional. Método Indirecto: Se utiliza la contra positiva, a veces conviene demostrar ~q -> ~p que equivale a demostrar p -> q. Ejm: Demuestre que si n es entero y n3 es impar entonces n es par. p = n3 es impar q = n es par ~q n es impar -> -> ~p n3+5 es par Si n es impar se puede representar: n=2k1 +1 n3 = (2k1+1) 3+ (8k13+12k12+6k1+1) n3 + 5 = (8k13+12k12+6k1+1+5) = (8k13+12k12+6k1+6) = 2(4k13+6k12+3k1+3) es par lqqd. Método de Demostración por Inducción Matemática Consiste en demostrar que si la proposición es verdad para un valor inicial (paso base). Se asume como verdad la preposición para un P(k) (hipótesis inductiva) entonces se debe cumplir P(k+1), esta consecuencia ultima es la que se debe demostrar, dándole la forma de P(k). Propiedad del Buen Orden: Todo conjunto de enteros no negativos tiene un elemento mínimo. Inducción Matemática 1) 2) 3) 4) Supongamos que conocemos que P(1) es verdadera. También P(k) -> P(k+1) para todos los enteros positivos k. Hay que demostrar P(N). Asume como verdad 1 y 2. Demostración: Sea P(n) una proposición abierta con las condiciones (1) y (2) y sea F=[T Є Z+/P(T) es falsa] se demostrara por el absurdo. Por el principio de buen orden todo conjunto que pertenece a los enteros tiene un elemento mínimo por ejemplo un T Є conjunto F ahora T ‡ 1 (porque si no estaría en contradicción con la hipótesis 1) entonces T>1 ; si T>1 -> P(T-1)(por la propiedad 2 es verdad ) Pero T-1 F -> P(T-1+1) es P(T) es también verdad por la condición 2. Hay contradicción por lo tanto F es el conjunto vacio, entonces dado P(1) como verdad, P(k) verdad -> n se cumple p(n). Ejercicios: Demostrar temporal. = n(n+1) hallar el algoritmo y la complejidad 2 Para: n=1: =1 1 = 1(1+1) = 1 2 = k(k+1) 2 (Hipótesis Inductiva) Para: n=k: Hay que probar para n=k+1 = + = k(k+1) + k + 1 2 -> = (k+1)(k+2) 2 = (k+1)(k+1+1) 2 -> Tiene la forma de HI Por lo tanto = n(n+1) 2 Complejidad Temporal Ejercicio 2: Deducir la formula, luego compruebe: Realizar el algoritmo, luego la complejidad. 1*1 + 1*2 + ………….. + 1*n + 2*1 + 2*2 + ………….. + 2*n + : : : : : : n*1 + n*2 + ………….. + n*n Sumando: (1+2+3+…+n)(1+2+3+…+n) =n(n+1)*n(n+1) = n2(n+1)2 2 2 4 Ejercicio 3: Demostrar que: Para: n=1: n!>=2n-1 1! >= 21-1 ∀n>=1 n>1 Para: n=k: k! >= 2k-1 … HI Probar: Para: n=k+1 (k+1)!=(k+1)k! Pero: k! >= 2k-1 multiplicando por (k+1) a ambos lados (a>b ^ c>0 -> ac > bc) (k+1)k! >= 2k-1(k+1) (k+1)! >= 2k-1(k+1) >= 2*2k-1 k>1 (k+1) >2 a>b ۸ c -> a+c > b+c 2k-1(k+1) > 2*2k-1 (k+1)! > 2k+1-1 -> n! >= 2k-1 ∀ n>=1 Algoritmo Factorial: Dim r as double Dim a,b,c as integer Console.Writeline(“Ingrese a:”) a=Console.Readline() Console.Writeline(“Ingrese b:”) b=Console.Readline() Console.Writeline(“Ingrese c:”) c=Console.Readline() r=factorial(a-b) factoria(c) Console.Writeline(“El resultado es: {0}”; r) Demostrar por inducción que: n2 + 41n + 41 es un numero primo Para: n=1: 12 + 41*1 + 41 Para: n=2: 4 + 82 + 41 = 127 es primo también es primo Usted comprobara que para cualquier k es un valor primo. Para n=k+1 adopta la misma forma, por lo tanto se cumple para cualquier n. Función factorial(byval x as integer) if x=1 then return 1 else return x*factorial(x-1) Algoritmo: 1)Lee num 2)Primo=0 , i=2 3)if num>0 mientras(i<=sqrt(num) ^ primo==0) if(resto(num/i)==0) { primo=0 } i=i+1 fin_mientras if(primo==1) imprime (“numero no es primo”) else imprime (“el numero no es valido, debe ser positivo”) fin_if fin Ejemplo: p I1 p p q T ~q r ~r r I2 (p ⋁ q ⋁ r) ⋀ (p ⋁ T ⋁ q ⋁ ~q) ⋀ (p ⋁ ~q ⋁ r) Rpta: [p⋁r ⋀ (q ⋀ T ⋁ ~q ] Prueba de Validez del Argumento: Si 2 lados de un triangulo son iguales entonces los ángulos opuestos son iguales, si 2 lados de un triangulo no son iguales entonces los ángulos opuestos de un triangulo no son iguales. Evalué si es tautología o falacia: Funciones Booleanas y Circuitos Computacionales f: Bn -> B cuyo dominio son variables booleanas y cuyo rango son 0 y 1 para cada uno de las variables se pueden asumir como variables un valor sea 0 o 1. Ejm: Al margen de utilizar el algebra booleana para reducir circuitos computacionales usted puede utilizar los mapas de karnaugh. Dichos mapas reducen los circuitos computacionales que revisten alta complejidad. Consiste en agrupar grupos de 2, 4, 8, etc … (potencias de 2) 1s (adyacentes o extremos adyacentes). Mapa de 2 variables: Mapa de 3 variables: Ejemplo: Simplificar utilizando mapas de karnaugh: F=x’yz + x’yz’ + xy’z’ + xy’z donde x’ indica complemento de x. Se debe poner 1 en la celda de intersección y luego agruparlas de 2 en 2 o potencias de 2 con la condición de que sean adyacentes o extremos adyacentes. Solución: -> f = x’y + xy’ Simplificar: F = x’yz + xy’z’ + xyz + xyz’ -> f =yz’+xy+ Simplificar: F(x,y,z) = ∑(0,2,4,5,6) -> f(x,y,z) = z’ + xy’ Reducir el circuito para un codificador de 4 entradas y 2 salidas, se conoce la tabla. En este tipo de problemas hago 2 mayas de karnaugh, 1 para la salida S1 y otra para S2. -> S1 = e2 + e3 -> S2 = e2’e1 + e3 Reduzca la función por karnaugh f1 = {0,1,2,3,16,17,18,19,10,14,15,13,24,30,31,29} f = C’B’ + A’BDE’ + BCD + BCE + AC’D’E’ Cuantificadores P(x) es verdadero para todos los valores de x en el universo del discurso, el cuantificador universal se denota como ∀x P(x). Cuantificador Existencial: al menos una x/P(x) es verdadera y se denota por medio de la notación xP(x) Regla de Especificación Universal: Es la regla de inferencia que establece que es posible concluir que P(c) es verdadero si xP(x) es verdadero, donde c es un miembro arbitrario del universo del discurso, esta regla recibe el nombre también de instanciación universal. Regla de Especificación Existencial: Es la regla que permite concluir que P(c) es verdadero si xP(x) que sea verdadero, donde c no es un miembro arbitrario del universo, sino para el que P(c) es verdadero se sabrá que o cual c, pero si que existe. Regla de Generalización de Universo: Es la regla que establece xP(x) es verdadero, si P(c) lo es, donde c es un miembro arbitrario del universo de discurso. Regla de Generalización Existencial: Es una regla que se usa para concluir que xP(x) es verdadero, cuando P(c) lo es, donde x es un miembro particular del universo en discurso. Negación utilizando cuantificadores: Ejemplos: E1 ~ ( xp(x)) es equivalente a decir x ~p(x) E2 ~ ( xq(x)) es equivalente a decir x ~q(x) Utilizando las reglas vistas en la clase anterior demostrar: x(p(x) ⋁ q(x)) -> xp(x) ⋁ xq(x) 1) Comenzamos negando la tesis, para luego llegar a una contradicción p^ ~p entonces: ~ ( xp(x) ⋁ xq(x)) 2) x~p(x)^ x ~ q(x) Utilizando 1 y Prop de Morgan negacion 3) x ~p(x) Por 2 y Simplificación Conjuntiva 4) x ~q(x) Por 2 y Simplificación Conjuntiva 5) ~p(a) Por 3 y GE 6) ~q(a) Por 4 y GU 7) ~p(a) ⋀ ~q(a) (5,6) 8) ~(p(a) ⋁ q(a)) (7, Morgan) 9) x (p(x) ⋁ q(x)) De la hipótesis o premisa 10) p(a) ⋁ q(a) Por 9 y EU 11) Llegamos a una contradicción ~(p(a) ⋁ q(a)) ^ p(a) ⋁ q(a) por 8 y 10 y falacia. ~p ^ p Por lo tanto se debe concluir que la hipótesis tomada inicialmente es falsa por lo tanto se cumple: x(p(x) ⋁ q(x)) -> xp(x) ⋁ xq(x) ALGORITMOS CON MATRICES Ejemplo: Analizar la suma de 2 matrices P1: P2: for i = 1 to n for j = 1 to n Lee A[i,j] fin for fin for Captura A[i,j] for i = 1 to n for j = 1 to n Lee B[i,j] fin for fin for Captura B[i,j] P3: for i = 1 to n for j = 1 to n S[i,j] = A[i,j] + B[i,j] fin for fin for P4: for i = 1 to n for j = 1 to n IMPRIME (S[i,j]) fin for fin for APLICACIÓN EN .NET Sub Main() Dim i,j,n as integer Dim A[10,10], B[10,10], S[10,10] as integer Console.writeline(“Ingrese la primera matriz”) for i = 1 to n for j = 1 to n A[i,j] = Console.readline(); next next Console.writeline(“Ingrese la segunda matriz”) for i = 1 to n for j = 1 to n B[i,j] = Console.readline(); next next for i = 1 to n for j = 1 to n S[i,j] = A[i,j] + B[i,j] next next for i = 1 to n for j = 1 to n Console.writrline(“{0}, S[i,j]”) next next MULTIPLICACION DE MATRICES for i = 1 to n for j = 1 to n r(i,j) = 0 for R = 1 to n r[i,j] = r(i,j) + a[i,R] + B[R,j] next next next ALGORITMO DE FIBONACCI 0,1,1,2,3,5,8,……… Fib(n) = Fin(n-1) + Fib(n-2) Funcion F(n) INICIO si n = 1 retornar (0) sino si n=2 retornar (1) sino retornar F(n-1) + F(n-2) fin si fin si FIN APLICACIÓN EN .NET Dim N,R as integer N = Integer.parse(textbox1.text) R = Fibo(n) Textobox2.text = R Function Fibo(Byval n as Integer) if n = 1 then return (0) else if n = 2 then return (1) else return Fibo(n-1) + Fibo(n-2) end if end if TECNICAS DE CONTEO Regla de la Suma: Si una primera tarea puede realizarse de “m” formas mientras que una segunda tarea de “n” formas, y no es posible realizar ambas tareas simultaneamente, entonces podra llevar a cabo cualquiera de “m+n” tareas. E1: Durante una campaña local hay 8 candidatos republicanos y 5 democratas que se nominan para presidente del consejo escolar Si el presidente va a ser alguno de estos candidatos , cuantas posibilidades hay para escoger alguno de estos candidatos para la presidencia R = {a,b,c,d,e,f,g,h} D = {1,2,3,4,5} 8 posibilidades de los republicanos 5 posibilidades de los democratas En total entonces tiene 13 posibilidades Entonces por el principio de la suma se tiene Regla del Producto: Si un procedimiento se puede descomponer en 2 etapas 1° y 2°, y si existen “m” resultados posibles de la 1° etapa, y si para c/u de estos resultados existan “n” resultados posibles para la 2° etapa, entonces el procedimiento total se puede realizar en el orden dado de m*n formas E1: El club de teatro de un grupo de estudiantes realizan ensayos para una obra. Si hay 6 hombres y 8 mujeres, ensayan para los papeles principales (femenino y masculino), de cuantas formas puede elegirse a la pareja principal? M = {M1,M2, ……..., M8} H = {H1,H2,...…,H6} Usted puede decidir que se puede formar parejas para M1 M1 H1 H2 . . H6 6 posibles formas para la primera mujer, en general seria 6*8 formas posibles de formar la pareja principal DIAGRAMA DE VENN Y TECNICAS DE CONTEO Dado A y B de un universo finito U, se cumplen por teoria de conjuntos. a) Si A y B son disjuntos, es decir: AnB= |A u B| = |A| + |B| Las 2 indican cantidad de sus elementos b) Si A y B no son disjuntos: |A u B| = |A| + |B| - |A n B| Ejemplo: Dado el cuadro siguiente: Hallar: a) Cuantos sujetos son femeninos o endomorfos b) Cuantos sujetos no son masculinos y mesomorfos a) |F u E| = |F| + |E| - |F n E| = 164 + 139 - 62 = 236 ______ __ ___ __ ___ __ ___ b) |M n Me| = |M| u |Me| = |M| + |Me| - |M n Me| = 164 + 252 - 126 = 290 PRODUCTO CARTESIANO Definición: Sea A y B dos conjuntos dados llamaremos productos cartesiano de A por B y le representamos por AxB={(a,b)/a ∈ A,b ∈ B} Si A=B denotaremos con A2 a A x A. Ejemplo: Sean A={1,2} y B={a,b} AxB={(1,a),(1,b),(2,a),(2,b)} Es como ud. Observa el producto de 1 a 1 de lo “a ” que pertenecen a A con los ”b” que pertenecen a B. RELACIONES Una relación es el subconjunto cartesiano. Se dividen en : a)Relación Reflexiva b) Relación Simétrica c) Relación Transitiva d) Relación Anti simétrica del producto Relación Reflexiva: Una relacion reflexiva es reflexiva si ∈ R (x,x) ∈ R Ejemplo: Sea A ={1,2,3} R1={(1,1)(2,2)(3,3)(1,2)} Es reflexiva R2={(1,1),(2,2),(1,2)} No es refelxiva faltaria (3,3) Relación Simétrica: Una relacion sobre el conjunto A es simétrica si (x,y) ∈ R Entonces (y,x) ∈ R ∀ x,y ∈ A. Ejemplo: Si A={1,2,3} R1={(1,2),(2,1),(1,3),(3,1),(3,2)} es simétrica Relación Transitiva: Posee un conjunto A una relacion R sobre A es transitiva si ∀ x, y ,z A (x,y) (y,z) ∈ R entonces (x,z) ∈ R Ejemplo Si A={1,2,3} R1= { (1,2)(2,3(1,3) } Observe que : (a,b) (1,2) (b,c) (2,3) (a,c) (1,3) Anti simétrica: Es anti simétrica si : a R b y bRa ó (b,a) ∈ R Donde : a=b además : a y b ∈ R o bien (a,b) ∈ R PERMUTACIONES Una permutacion de “n” objetos diferentes tomados de “r en r” es una ordenacion de “r” objetos entre los “n” dados y atendiendo a la ordenacion. El numero de permutaciones de “n” objetos, de n en n se representa por Pr n, P(n,r) o Pn,r y viene dado por: n! P(n,r) = ----------(n-r)! E1: En un grupo de 10 estudiantes se eligieron a 5 para una foto. Cuantas disposiciones posibles hay? 10! P(10,5) = -----------(10 - 5)! Tambien lo pueden razonar asi: 10 9 8 7 6 --- --- --- --- --Luego multiplicando por las posiciones se obtiene: 10*9*8*7*6 = 30040 COMBINACIONES Una combinacion de n objetos diferentes tomados de n en r es una relacion de los n objetos sin atender a la ordenacion de los mismos. El numero de combinaciones de “n” objetos tomados de n en r se representa por C(n,r), Cn,r; y viene dado por: n! P(n,r) C(n,r) = ------------ = ------------(n-r)!r! r! E1: De cuantas formas puede elegirse un comité de 2 personas si hay un total de 4 personas. Personas: {A,B,C,D} A B C D C B D C Usando formula: D 4! C(n,r) = ------------ = 6 (4-2)!2! EJERCICIOS 1) De un grupo de 12 alumnos deben formarse 3 equipos de 4 participantes para que asistan a 3 pruebas distintas. Cuantas clasificaciones distintas pueden formarse? C(12,4) * C(8,4) * C(4,4) = ?? 2) Hay que colocar 5 hombres y 4 mujeres en una fila de modo que las mujeres ocupan los lugares pares. De cuantas maneras puede hacerse? H1 M1 H2 M2 H3 M3 H4 M4 H5 M5 1 2 3 4 5 6 7 8 4! * 5! = 2880 maneras 9 10 3) Cuantas permutaciones de los digitos 0,1,2,……,9 empiezan con 3 o terminan en 7 o cumplen ambas coincidencias. 3 0 1 2 3 4 5 6 7 8 9 7 0 1 2 3 4 5 6 7 8 9 3 7 0 1 2 3 4 5 6 7 8 9 Si asociamos: A = comienze en 3 B = termine en 7 |A u B| = |A| + |B| - |A n B| = 9! + 9! – 8! 4) Un estudiante tiene que contestar 8 de las 10 preguntas de un examen. Cuantas formas diferentes puede contestar?, Y si las 3 primeras son obligatorios?. Y si de las 5 primeras ha de contestar 4? a) C(10,8) b) C(7,5) c) C(5,4) * C(5,4) 5) Cuanta palabras de 10 letras diferentes pueden formarse con 5 vocales y 5 consonantes de las 21 existentes de manera que no haya 2 vocales juntas ni 2 consonantes. V C V C V C V C V C ó C V C V C V C V C V 2! * P(5,5) * P(21,5) = 586051200 ALGEBRA RELACIONAL Projeccion (Π): Devuelve un atributo vertical (columna),crea una nueva relación a partir de otra,se puede extraer más de una columna, se eliminan las tuplas duplicadas que pudieran resultar. Su equivalente en SQL: Select T1.A,T1.C from T1 Select (σ): Permite seleccionar las tuplas de una relación que cumplen una determinada condición. Da como resultado una nueva relación. Select T1.A, T1.B,T1.c from T1 Where T1.B>=2 Unión (U): La unión de dos tablas R y S es el conjunto de las tuplas que están en R, en S o en las dos. Si existe alguna tupla repetida sólo se escribirá una vez en el resultado. Requiere que R y S tengan el mismo rango. Interseccion(n): Dadas dos tablas R y S, su intersección es el conjunto de las tuplas que están en R y en S. Requiere que R y S tengan el mismo rango. Diferencia(-): La diferencia de dos tablas R y S es una nueva relación en la que se encuentran las tuplas que pertenecen a R y que no pertenecen a S. PRODUCTO CARTESIANO Crea una nueva relación, a través de dos tablas R y S, cuyas tuplas se obtienen concatenando cada tupla de R con cada tupla de S. Ejemplo: Dada las relaciones, estudiante(sujeto) lleva(verbo) cursos(predicado a) Utilizando el algebra relacional muestre el Cod_Est,Nom_Est,Ape_Est.El Nom_Cur y la Nota para todos los estudiantes que han llevado CalculoI y cuya nota es >13 1)T4=T3*T1 2)T5=T4*T2 3)T6= Π(T5) ENTEROS Y DIVISION Definicion Si a y b son enteros , a diferente de cero decimos que a \b y ∃c ∈ Enteros /b=ac Propiedades: 1) Si a\b y a\c entonces a\(b+c) 2) Si a\b entonces a\b c entero c 3) Si a\b y b\c entonces a\ c El algoritmo de la división sea a un entero y b un entero positivo , existen 2 únicos enteros q y r a=d*q+r. 0<=r<d / MAXIMO COMUN DIVISOR Definición: Sean a y b enteros no nulos el mayor entero d/a y d/b se denomina máximo común divisor de a y b y se denota como MCD(a,b) Algoritmo: Function MCD(x,y) Mientras (x ≠y) if(x>y)then x=x-y else y=y-x End if Fin mientras Return x end function Para hallar el MCD de mas UD puede sobrecargar la función. RELACIONES RECURSIVAS O DE RECURRENCIA LINEALES CON COEFICIENTES CONSTANTES Una relación recursiva de orden K es una función de la forma . Sn =δ(Sn-1 ,Sn-2 … ,Sn-k,n) Es decir donde el n-esimo termino Sn, de una sucesión es una función de los k términos precedentes Sn-1 ,Sn-2 … ,Sn-k(y posiblemente en n ) en particular una relación recursiva lineal de orden k con coeficientes constantes es una relación recursiva de la forma. Sn = C1Sn-1 + C2Sn-2 + … + CkSn-k+f(n) Donde C1,C2,…,CK son constantes los Ck ≠0 y f(n) es una función de n. A continuación se proporciona el significado de los términos lineal y coeficientes constantes . -Lineal se refiere cuando no hay potencias o productos de los aj. -Coeficientes constantes: Los C1,C2,…Ck son constantes(no dependen de n). Considere c/u de las siguientes relaciones de recurrencia. Sn = 5Sn-1 -4Sn-2 + n2 Es no homogénea debido a la n2 a) b) Sn = 2Sn-1 *Sn-2 + n2 Es no homogénea debido a la n2 además el producto Sn-1 *Sn-2 significa que la relación de recurrencia es no lineal c) Sn = nSn-1 +3Sn-2 Se trata de una relación de recurrencia lineal homogénea de segundo orden, pero sin coeficientes constantes por que el coeficiente de Sn-1 es n d) Sn = 2Sn-1 +5Sn-2 -6Sn-3 Se trata de recurrencia lineal homogenea de tercer orden con coeficiente constantes. SOLUCIÓN DE RELACIONES DE RECURRENCIA LINEALES HOMOGÉNEAS DE SEGUNDO ORDEN Teorema 1: Suponga que el polinomio característico Δ(x)=x2-5x-t de la relación de recurrencia Sn=5Sn-1 +tSn-2 Tiene raíces distintas r1 y r2 entonces las solución general de la relación de recurrencia es la siguiente C1 y C2 son constantes arbitrarias . Sn=C1rn +C2r2n Ejemplo: Sea Sn=2Sn-1 +3Sn-2 La solución general se obtiene al resolver el polinomio característico. X2=2x+3 X2-2x-3=0 (x-3)(x+1)=0 r1=3,r2=-1 La ecuación es: Sn=C1r1n+C2r2n Sn=C1(3)n+C2(-1)n Cuando n=0 entonces S0=1 S0=C1(3) 0+C2(-1)0 1=C1+C2 (I) n=1 2=C1(3)+C2(-1) (II) C1=3/4 C2=1/4 Sn=3/4*(3)n+1/4*(-1)n E2: Considere la sucesión de fibonacci Sn=Sn-1+Sn-2 con So=0,S1=1 X2-x-1=0 r1=(1+√5)/2 r2=(1-√5)/2 Sn=C1(1+√5)/2+C2(1-√5)/2 Reemplazando valores de las condiciones iníciales S0=0 y S1=1 La ecuación queda así: Los valores de C1=1/ √5 y C2=-1/ √5, al resolver las 2 ecuaciones con 2 incognitas Por loi tanto la solucion queda: Sn=(1/ √5 )((1+√5 )/2)n-(1/√5 )((1- √5 )/2 )n Cuando las raíces del polinomio característico son iguales. TEOREMA 2 Supóngase que el polinomio característico. Δ(x)=x2-5x-t solo tiene una raiz ro Entonces para Sn=5Sn-1+tSn-2 Se concluye que la solucion general de la relacion de recurrencia donde C1 y C2 son constantes arbitrarias es: Sn=C1(ro)n+C2n(ro)n Las constantes C1 y C2 son constantes arbitrarias se determinan en forma única mediante las condiciones iníciales. E1:Sn=6Sn-1-9Sn-2, S1=3 y S2=27 x2-6x+9=(x-3)2 Sn=C1(3)n+nC2(3)n Como para n=1 , S1=3 Y para n=2 y S2=27 Remplazando se llega a :C2=2 y C1=-1 Entonces: Sn=(-1)(3)n+2n(3)n OBSERVACION Si r es una raiz de multiplicidad m del polinomio característico Δ(x): Luego cada uno de los siguientes rn, nrn,n2(rn),….(nn-1)(rn) Es una solución .Luego cualquier combinación C1(rn)+C2(nrn)+…+Cm((nm-1)(rn)) E1: Considere la siguiente relación homogénea de recurrencia de tercer orden. Sn=11Sn-1-39Sn-2+45Sn-3 Δ(x)=x3-11x2+39x-45=(x-3)2(x-5) Luego Δ(x) tiene 2 raíces r1=3 de multiplicidad 2,y r2=5,luego por la observación, la siguiente es la solución general de la recurrencia. Sn=C1(3)n+C2n(3)n+C3(5)n Supongamos que tenemos condiciones iníciales S0=5,S1=11,S2=25, llegamos a C1=4,C2 =-2 C3=1 Al resolver las ecuaciones entonces Sn=(4-2n)(3n)+5n FUNCIONES ARBOLES Sea A un conjunto , y T es un árbol si existe un vértice Vo en A con la propiedad de que existe una única trayectoria en T de Vo hacia cualquier otro vértice en A. *El nivel mas grande de un árbol es la altura de este. *Los vértices del árbol que no tienen hijos son las hojas del árbol. ALGORITMO DE DIJSTRA Algoritmo Teniendo un grafo dirigido ponderado de N nodos no aislados, sea x el nodo inicial, un vector D de tamaño N guardará al final del algoritmo las distancias desde x al resto de los nodos. Inicializar todas las distancias en D con un valor infinito relativo ya que son desconocidas al principio, exceptuando la de x que se debe colocar en 0 debido a que la distancia de x a x sería 0. Sea a = x (tomamos a como nodo actual). Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos a estos vi. Si la distancia desde x hasta vi guardada en D es mayor que la distancia desde x hasta a sumada a la distancia desde a hasta vi; esta se sustituye con la segunda nombrada, esto es: si (Di > Da + d(a,vi)) entonces Di = Da + d(a,vi) Marcamos como completo el nodo a. Tomamos como próximo nodo actual el de menor valor en D (puede hacerse almacenando los valores en una cola de prioridad) y volvemos al paso 3 mientras existan nodos no marcados. Una vez terminado al algoritmo, D estará completamente lleno. ALGORITMO DE KRUSKAL Funciona de la siguiente manera: se crea un bosque B (un conjunto de árboles), donde cada vértice del grafo es un árbol separado se crea un conjunto C que contenga a todas las aristas del grafo mientras C es no vacío eliminar una arista de peso mínimo de C si esa arista conecta dos árboles diferentes se añade al bosque, combinando los dos árboles en un solo árbol en caso contrario, se desecha la arista Al acabar el algoritmo, el bosque tiene un solo componente, el cual forma un árbol de expansión mínimo del grafo. Este algoritmo fue publicado por primera vez en Proceedings of the American Mathematical Society, pp. 48–50 en 1956, y fue escrito por Joseph Kruskal. ÁRBOLES GENERALES (N-ARIOS) Definición Un árbol A se define como un conjunto de elementos llamados nodos o vértices, de forma que: - A es vacío, en cuyo caso se llama árbol vacío o árbol nulo, o - A contiene un nodo distinguido v0 llamado raíz de A y los nodos restantes de A forman un conjunto de árboles A1, A2 , A3, ..., An Cada árbol Ai tiene como raíz al nodo vi Un árbol se representa mediante un grafo en donde la raíz v0 es el nodo en A en la parte superior. Una línea hacia abajo de izquierda a ÁRBOLES GENERALES (N-ARIOS) Ejemplo: Considere el árbol A siguiente: Nivel 0 1 Nivel 1 Nivel 2 Nivel 3 Nivel 4 2 5 3 6 7 12 4 8 13 17 9 14 18 10 11 15 16 19 ÁRBOLES GENERALES (N-ARIOS) Raíz: 1 Momento: 19 Peso: 10 Altura: 4 Grado(3): 2 Grado(4): 3 Descendientes de 8: Descendientes propios de 8: Antecesores de 8: Antecesores propios de 8: 1 y 3 8, 13, 14, 17 y 18 13, 14, 17 y 18 1, 3 y 8 Á RBOLES GENERALES (N-ARIOS) Ejemplo: Sea el árbol de vértices V y altura h Definimos h(u) la altura del subárbol con raíz u Si V = h = -1 V = {a} h=0 V = {a, b} h=1 a a V= {a, b, c, d, e} h=2 h(a) = h = 1 h(a) = h = 2 a h(b) = h(c) =1 b b c h(d) = h(e) = 0 h(b) = 0 d e ÁRBOLES GENERALES (N-ARIOS) TEOREMA Sea A un grafo con n vértices Las siguientes afirmaciones son equivalentes 1. A es un árbol 2. A es conexa y acíclica 3. A es conexa y tiene n-1 aristas 4. A es acíclica y tiene n-1 aristas TEOREMA Si a, b son vértices distintos de un árbol A, entonces existe un único camino que conecta estos vértices. Se puede demostrar que como A es conexo, existe al menos un camino de a hacia b. Si hubiera más caminos de este tipo, por medio de dos de ellos, algunas aristas podrían tener Más Ejemplos A A D E F C B C B G D E Árbol completo de nivel 2 Árbol no completo de nivel 2 Cada nodo del nivel n es una hoja Un nodo del nivel n-1 es una hoja REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Representación mediante lista de hijos Cuando los nodos están etiquetados con mayor información, es conveniente utilizar una estructura de listas, en donde cada nodo es una estructura de la forma Registro Nodo Inicio T Valor Nodo *sig FinRegistro Este modelo presenta la restricción que el REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Representación mediante lista de hijos RAÍZ es un arreglo de tamaño n (tamaño de V) RAÍZ(i) es la cabeza de la lista que contiene los hijos del nodo i. Lista de hijos RAÍZ 1 2 3 * 2 4 5 * 3 9 10 * 6 7 4 * 5 6 * 7 * 8 * 9 * 10 * 8 1 2 4 3 5 6 7 9 8 10 * REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Acción Recorrido(N) Inicio Para I desde 1 hasta N p = Raíz(I) Mientras p Nulo Escribir p Valor p p sig FinMientras FinPara Fin REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Raíz(i) es la cabeza de la lista de los hijos deli nodo i Raíz(i) Hijos del nodo i 1 Raíz(1) 2, 3 2 Raíz(2) 4, 5 3 Raíz(3) 9, 10 4 Raíz(4) = Nulo No tiene 5 Raíz(5) 6, 7, 8 6 Raíz(6) = Nulo No tiene 7 Raíz(7) = Nulo No tiene 8 Raíz(8) = Nulo No tiene 9 Raíz(9) = Nulo No tiene 10 Raíz(10) = Nulo No tiene REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES La acción recorre todo el vector RAÍZ, aunque alguna raíz sea nula, por tanto no tiene hijos. Este recorrido resulta innecesario, y se puede solucionar haciendo que el vector Raíz sea una lista enlazada que contenga un nodo por cada nodo del árbol que no es hoja RAÍZ Lista de hijos 1 2 3 * 2 4 5 * 3 9 10 5 6 7 * 8 * REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Puntero al hijo de más a la izquierda– hermano derecho (HI-HD) Los nodos tienen dos apuntadores uno al hijo de más a la izquierda y el otro al hermano derecho. Puntero al hermano derecho Puntero al hijo más a la izquierda Valor del nodo REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Ejemplo: El árbol de la figura (a) puede representarse mediante el modelo HI-HD mostrado en la figura (b) (a) (b) REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Representación mediante cursores hijo más a la izquierda-hermano derecho La variable CABEZA apunta a la dirección de la raíz del árbol (VALOR(i)). HIJO(i) apunta a la posición (NODO(HIJO(i)) donde se encuentra la dirección del hijo de más a la izquierda. SIG(i) apunta a la posición (NODO(i)) donde se encuentra la dirección del hermano derecho. A B D E C F G REPRESENTACIÓN EN MEMORIA DE ÁRBOLES GENERALES Representación mediante cursores hijo más a la izquierda-hermano derecho 1 VALOR SIG F HIJO * 2 CABEZA 5 NODO 1 2 7 5 3 B 2 3 4 E * 4 5 A 6 5 4 8 6 G * 6 3 7 7 D * 7 8 * 8 C 9 8 1 * 9 6 * 9 Mediante hijo más a la izquierda-hermano derecho RAIZ variable global apunta a la raíz del árbol VALOR(i) contiene el valor del nodo con dirección i HI(i) contiene la dirección del hijo más a la izquierda del nodo i HD(i) contiene la dirección del hermano derecho HI VALOR del nodo i 1 HD0 F 0 2 RAIZ 5 3 7 B 8 4 0 E 1 5 3 A 0 6 0 G 0 7 0 D 4 8 6 C 0 9 A B D E C F G RECORRIDO CON LOS ARBOLES Recorrido Preorden: Visitar la raíz , descender por la izquierda, así hasta donde se pueda continuar, moverse a la derecha y comenzar nuevamente o volver hacia atrás hasta que se pueda mover a la derecha y continuar J-E-A-H-T-M-V 31-22-18-23-22-19-2429-19 31 B 22 22 D C 24 19 18 2 3 F G 2 9 19 Recorrido Inorden: En este caso se visita primero el subárbol izquierdo hasta donde se pueda, después se visita la raíz y por ultimo el subárbol derecho moviéndose un nodo a la derecha y continuar. A-E-H-J-M-T-V 18-22-23-31-19-22-2924-19 RECORRIDO POS ORDEN En este caso se visita primero el subárbol izquierdo, así hasta donde se pueda, cuando no se puede continuar al subárbol derecho hasta que se pueda, y por ultimo visitar la raíz ,volver hacia atrás y comenzar nuevamente. T-J A-H-E-M-V- 18-23-22-19-29-19-2422-31 ÁRBOLES BINARIOS DE BÚSQUEDA (ABB) Definición Es una estructura sobre la que se pueden desarrollar eficientemente las operaciones de: Búsqueda Inserción Eliminación Definición formal: “Para todo nodo T del árbol debe cumplirse que todos los valores de los nodos del subárbol izquierdo de T deben ser menores o iguales al valor del nodo T. De forma análoga, todos los valores de los nodos del subárbol derecho de T deben ser mayores o iguales al valor del nodo T” Ejemplo 120 87 140 43 22 99 65 56 93 130 135 BÚSQUEDA EN UN ÁRBOL ABB accion BUSQUEDA (Nodo, Val_bus) si (Nodo <> null) entonces si (Val_bus < Nodo->valor) entonces BUSQUEDA (Nodo->hijo_izq , Val_bus) sino si (Val_bus > Nodo->valor) entonces BUSQUEDA (Nodo->hijo_der , Val_bus) sino Escribir (“El nodo ha sido hallado en el árbol”) fin_si fin_si sino Escribir (“El nodo no se encuentra en el árbol”) fin_si fin_accion BÚSQUEDA EN UN ÁRBOL ABB accion buscarNodo (Raiz, Val_bus) BUSQUEDA (Raiz, Val_bus) fin_accion Ubicar 65 y 170 en el siguiente árbol: 120 87 140 43 22 99 65 56 93 130 135 INSERCIÓN EN UN ÁRBOL ABB o Los pasos que deben realizarse para insertar un elemento a un árbol binario de búsqueda son los siguientes: Debe compararse la clave a insertar con la raíz del árbol. Si es mayor, debe avanzarse hacia el subárbol derecho. Si es menor, debe avanzarse hacia el subárbol izquierdo. Repetir sucesivamente el primer paso hasta que se cumpla alguna de las siguientes condiciones: El subárbol derecho es igual a vacío, o el subárbol izquierdo es igual a vacío, en cuyo caso se procederá a insertar el elemento en el lugar que le corresponde. La clave que quiere insertarse es igual a la raíz del árbol, en cuyo caso no se realiza la inserción. INSERCIÓN EN UN ÁRBOL ABB accion INSERCION (Nodo, Val) si (Nodo <> null) entonces si (Val < Nodo->valor) entonces INSERCIÓN (Nodo->hijo_izq, Val) sino si (Val > Nodo->valor) entonces INSERCIÓN (Nodo->hijo_der, Val) sino Escribir (“El nodo ya se encuentra en el árbol”) fin_si fin_si sino n <- nuevo Nodo n->hijo_izq <- null n->hijo_der <- null n->valor <- Val Nodo <- n fin_si fin_accion INSERCIÓN EN UN ÁRBOL ABB accion insertarNodo (Raiz, Val) INSERCION (Raiz, Val) fin_accion Insertar 120, 87, 43, 65, 140, 99, 130, 22, 56 120 120 87 120 87 43 INSERCIÓN EN UN ÁRBOL ABB Insertar 120, 87, 43, 65, 140, 99, 130, 22, 56 120 120 87 43 87 43 65 65 140 INSERCIÓN EN UN ÁRBOL ABB Insertar 120, 87, 43, 65, 140, 99, 130, 22, 56 120 120 140 87 99 43 65 140 87 99 43 65 130 INSERCIÓN EN UN ÁRBOL ABB 120 Insertar 120, 87, 43, 65, 140, 99, 130, 22, 56 120 140 87 43 43 99 65 99 130 22 22 140 87 65 56 130 ELIMINACIÓN EN UN ÁRBOL ABB o Consiste en eliminar un nodo sin violar los principios que definen un árbol binario de búsqueda. Se deben distinguir los siguientes casos: o o o o Si el elemento a borrar es terminal u hoja, se procede a eliminarlo. Si el elemento a borrar tiene un solo descendiente, entonces tiene que sustituirse por ese descendiente. Si el elemento a borrar tiene los dos descendientes, entonces se tiene que sustituir por el nodo que se encuentra más a la izquierda en el subárbol derecho o por el nodo que se encuentra más a la derecha en el subárbol izquierdo. Además, antes de eliminar un nodo debe garantizarse de que éste exista en el árbol. ELIMINACIÓN EN UN ÁRBOL ABB accion ELIMINACION (Nodo, Val) si (Nodo <> null) entonces si (Val < Nodo->valor) entonces ELIMINACION (Nodo->hijo_izq, Val) sino si (Val > Nodo->valor) entonces ELIMINACION (Nodo->hijo_der, Val) sino n <- Nodo si (n->hijo_der = null) entonces Nodo <- (n->hijo_izq) sino si (n->hijo_izq = null) entonces Nodo <- (n->hijo_der) sino AUX <- (Nodo->hijo_izq) bandera <- Falso ELIMINACIÓN EN UN ÁRBOL ABB mientras (AUX->hijo_der <> null) hacer TEMP <- AUX AUX <- (AUX->hijo_der) bandera <- Verdadero fin_mientras (Nodo->valor) <- (AUX->valor) n <- AUX si bandera = VERDADERO entonces (TEMP->hijo_der) <- (AUX->hijo_izq) sino (Nodo->hijo_izq) <- (AUX->hijo_izq) fin_si fin_si fin_si fin_si fin_si sino Escribir (“El nodo no se encuentra en el árbol”) fin_si fin_accion ELIMINACIÓN EN UN ÁRBOL ABB accion eliminarNodo (Raiz, Val) ELIMINACION (Raiz, Val) fin_accion 120 Eliminar 22, 99, 87, 120, 140, 135, 56 140 87 43 22 99 65 56 130 135 ELIMINACIÓN EN UN ÁRBOL ABB Eliminar 22, 99, 87, 120, 140, 135, 56 120 87 140 43 22 99 65 56 93 130 135 ELIMINACIÓN EN UN ÁRBOL ABB Eliminar 22, 99, 87, 120, 140, 135, 56 120 87 140 43 99 93 65 56 93 130 135 ELIMINACIÓN EN UN ÁRBOL ABB Eliminar 22, 99, 87, 120, 140, 135, 56 120 87 65 43 93 65 56 56 140 130 135 ELIMINACIÓN EN UN ÁRBOL ABB Eliminar 22, 99, 87, 120, 140, 135, 56 120 93 65 43 140 93 56 130 135 ELIMINACIÓN EN UN ÁRBOL ABB Eliminar 22, 99, 87, 120, 140, 135, 56 93 65 43 140 130 135 130 56 135 ELIMINACIÓN EN UN ÁRBOL ABB Eliminar 22, 99, 87, 120, 140, 135, 56 93 65 43 130 135 56 ELIMINACIÓN EN UN ÁRBOL ABB Eliminar 22, 99, 87, 120, 140, 135, 56 93 65 43 56 130 Arboles AVL Los árboles AVL surgen con la idea de el rendimiento de los árboles ABB, al reacomodos o balanceos después de o eliminar elementos. mejorar realizar insertar Definición formal: “Un árbol AVL se define como un ABB en el cual se cumple que para todo nodo T del árbol debe cumplirse que la altura de los subárboles izquierdo y derecho no debe diferir en más de una unidad” Definición El FACTOR DE EQUILIBRIO (FE) de un nodo T se calcula como la altura del subárbol derecho menos la altura del subárbol izquierdo. FE = =H HSD HSISI FE SD -- H Definición Colocar el FE a los nodos del siguiente árbol: -1 100 1 0 47 111 0 69 Registro registro Nodo valor FE : tipoDato : entero izq, der : Nodo fin_registro {-1, 0, 1} INSERCIÓN EN UN ÁRBOL AVL Inserción en un árbol AVL o o El subárbol izquierdo (SI) y el subárbol derecho (SD) del árbol tienen la misma altura, es decir: H SD = HSI o Si se inserta por el SI, entonces HSI > HSD o Si se inserta por el SD, entonces HSD > HSI El subárbol izquierdo (SI) y el subárbol derecho (SD) del árbol tienen alturas diferentes, es decir: H SD <> HSI o Si la HSI > HSD o Si se inserta por el SI, entonces se rompe el equilibrio y es necesario reestructurar. o Si se inserta por el SD, entonces H SD = HSI, mejorando el equilibrio del árbol. Si la HSI < HSD o o o Si se inserta por el SI, entonces H SD = HSI, mejorando el equilibrio del árbol. Si se inserta por el SD, entonces se rompe el equilibrio y es necesario reestructurar. Llevando a un arbol AVL o Para reestructurar un árbol que ha violado el principio de equilibrio (FE <> {-1,0,1}) hay que efectuar un proceso conocido como rotación, el cual se puede realizar de 4 maneras diferentes: o Rotación derecha (DD) 2 nodos o Rotación izquierda (II) o Rotación derecha-izquierda (DI) 3 nodos o Rotación izquierda-derecha (ID) Llevando a un árbol AVL o Rotación derecha (DD) C 2 C NOD O 1 RESULTANDO B NODO1 B NOD O 0 A A NODO→der echa← NODO1→izquierda NODO1→izquierda←NODO Reestructurar un árbol AVL o Rotación izquierda (II) C C -2 NOD O B -1 NOD O B RESULTANDO NODO1 A 0 A NODO→izquierda NODO1→derecha ← NODO1→derecha ←NODO Llevando a un arbol AVL o Rotación derecha-izquierda (DI) C NOD O NOD O 2 C -1 B RESULTANDO B NODO1 0 A A NODO2 NODO1→izquierda ←NODO2→derecha NODO2→derecha ←NODO1 NODO→derecha ← NODO2→izquierda NODO2→izquierda ← NODO Llevando a un árbol AVL o Rotación izquierda-derecha (ID) NODO C -2 C RESULTANDO B 1 NODO1 NOD O B A 0 A NODO2 NODO1→derecha ← NODO2→izquierda NODO2→izquierda ← NODO1 NODO→izquierda← NODO2→derecha NODO2→derecha←NODO GRAFOS Esta formado por vértices y aristas. G=(V,E) V={V V ,… V } E={e e ,… e } V:vértices e:aristas 1, 1, 2 2 n n GRAFOS NO DIRIGIDOS 1)e={v,w} ó {w,v} Es decir es lo mismo del vértice v al w ó del vértice w a v. 2) GRAFO DIRIGIDO e={v,w} ≠ {w,v} v v w w Grafo no dirigido Grafo dirigido 3)Grafo no simple Grafo no dirigido que tiene lazos y lados paralelos. e1 e V V e5 V 3 e2 e4 e1 y e2 aristas paralelas e5:Lazo 1 2 3 GRAFO PONDERADO Se presentan pesos de cada arista y se puede obtener la longitud de una ruta, que es la suma de todos los pesos de las aristas. GRAFO SIMPLE No contiene ni lazos ni aristas paralelas ni aristas dirigidas. GRAFO COMPLETO Es aquel grafo con N vértices en los que existe una arista entre cada par de vértices(no hay paralelas). GRAFO DE SIMILITUD Son aquellos grafos de los que se pueden derivar subgrafos. Obsérvese que el subgrafo es extraído del grafo GRADO DE UN VERTICE: Comprende al numero de aristas que inciden en dicho vértice. Camino o Trayectoria CICLO DE EULER Reconocen todas las aristas del grafo sin repetirlas. a,b,c,d,b,e,d,f,e,c,a Cuando partiendo de un vértice a y se llega al mismo se dice que es el circuito de Euler. CIRCUITO DE HAMILTON Recorre todos los vértices sin repetirlos excepto el Vi y Vf que son el mismo. Un circuito de Hamilton posible es: a,e,b,g,c,h,j,f,i,d,a Obsérvese que parte de a y recorriendo todos los vértices llega a a. OJO: Ud debe recorrer todos los vértices. MATRIZ DE ADYACENCIA Y DE INCIDENCIA NO DIRIGIDA Ejemplo: LISTA DE ADYACENCIA Entonces la lista de adyacencias A:C B:D,E C:A,D,E D:B,C E:B,C,F F:E ALGORITMO DE PRIM El algoritmo de Prim es un algoritmo perteneciente a la teoría de los grafos para encontrar un árbol recubridor mínimo en un grafo conexo, no dirigido y cuyas aristas están etiquetadas. En otras palabras, el algoritmo encuentra un subconjunto de aristas que forman un árbol con todos los vértices, donde el peso total de todas las aristas en el árbol es el mínimo posible. Si el grafo no es conexo, entonces el algoritmo encontrará el árbol recubridor mínimo para uno de los componentes conexos que forman dicho grafo no conexo. Pseudo código del algoritmo: La idea básica consiste en añadir, en cada paso, una arista de peso mínimo a un árbol previamente construido. Más explícitamente: Paso 1. Se elige un vértice u de G y se considera el árbol S={u} Paso 2. Se considera la arista e de mínimo peso que une un vértice de S y un vértice que no es de S, y se hace S=S+e Paso 3. Si el nº de aristas de T es n-1 el algoritmo termina. En caso contrario se vuelve al paso 2 MAQUINA DE ESTADO FINITA Una maquina de estado finita es un sistema que puede aceptar una entrada de datos y en base a estos dato obtener obtener una salida. Entrada Salida La maquina de estados finita se aplican en el diseño de circuitos digitales al nivel de matemática discreta se maneja bajo el concepto de grafos. MAQUINA DE ESTADO FINITA (Ejemplos): 0 1 S0 S0 S1 S1 S1 S0 S0 S1 MAQUINA DE ESTADO FINITA (Ejemplo1): Ej: Dada la tabla: F S\E a b S0 S1 S2 S1 S2 S1 S2 S2 S3 S3 S1 S0 Dibuje el diagrama de estados para el FSA(Autómata Finito Deterministico) para la cual los estados de aceptación son S1 y S3. Determine si la cadena aaababbab es aceptada. MAQUINA DE ESTADO FINITA (Ejemplo1): Para que la cadena sea aceptada debe terminar la cadena en S1 ó S3 a S0 b S1 a a b b S3 b S S S S S S S S S 1 2 2 3 1 1 1 2 3 a a a b a b b a b S2 a Como S3 es un estado final se dice que la cadena es aceptada por FSA. MAQUINA DE ESTADO FINITA (Ejemplo2): Ejm: Diseñe un autómata que detecte palabras que terminen en aba. a b S0 a a b a b ab ab a a b MAQUINA DE ESTADO FINITA (Ejemplo3): Ejm: Diseñe un autómata que detecte palabras que terminen en baa. a b a S0 b S1 a S2 a b b S3 MAQUINA DE ESTADO FINITA (Ejemplo4): • Ejm: Dibuje el diagrama de estados para el NFA, cuya tabla de estados se presentan a continuación y los estados de aceptación son S1 y S3, determine el lenguaje aceptado para este NFA. Solución: S0 a b 1 a • S F S\E a b S0 S2 S1 S1 S1, S2 S3 S2 Ø Ø S3 S2, S3 S2 a a a S3 S2 b L(M)= { ban n≥0 U bamban / m, n ≥0 } b Conversión de un NFA a un DFA Ejemplo 1: F(S0,a)={S1} , F(S0,b)= {S0} F(S1,a)={Ø} F(S1,b)=S1 ó S2, esto es {S1,S2}; F(S2,a)={Ø} En consecuencia: F({S1,S2},a)= {Ø} y F({S1,S2},b)={S1,S2} U Ø={S1,S2} b b S0 a S1 b S2 Conversión de un NFA a un DFA (Ejemplo 1) Para pasar este NFA a un DFA se hace la matriz de transición. S/E a b {S0} {S1} {S0} {S1} Ø {S1,S2} {S1,S2} Ø {S1,S2} Para pasar el NFA al DFA hay que cubrir todos los estados. b b {S0 } a {S1 } b {S1, S2} Conversión de un NFA a un DFA (Ejemplo 2): Encuentre el DFA equivalente al NFA para el cual la tabla de estados se indica,S2 es ele estado de aceptación. bbb S\E a F a b S0 S0, S1 S2 S1 S0 S1 S2 S1 S0, S1 b S0 a S1 a b b b a S2 Conversión de un NFA a un DFA (Ejemplo 2):a S\E b b {S0 } {S1 } a a {S0} {S0, S1} {S2} {S1} {S0} {S1} {S2} {S1} {S0, S1} {S0, S1} {S0, S1} {S1, S2} {S1, S22} {S {S0, S1} {S0, S1} } b a {S0, S1} b b {S1, S2} a a, b ELEMENTOS BASICOS DE EXPRESIONES REGULARES CERRADURA DE KLEENE: Se representa con el símbolo “*”. La cadena se forma al realizar 0 ó mas repeticiones, en concatenación de los símbolos o caracteres que enmarcan. Ejm: b* = { ,b , bb, bbb, bbbb, …, etc.} CERRADURA POSITIVA: Se representa con el símbolo “+”. La cadena se forma al realizar por lo menos 1 ó mas repeticiones en concatenación de los símbolos o caracteres que enmarcan. Ejm: Lu+ = {lu, luu, luuu, luuuu, …, etc.} APARICION: Se representa con el símbolo “?”. Indica si el carácter que lo procede puede aparecer o no dentro de una cadena. Ejm: (Inter)? milan = {Intermilan, milan} ALTERNATIVA: Se representa con el símbolo “/”. Indica que puede existir alguna alternativa dentro de los símbolos o caracteres que contiene una expresión. Ejm: (d/s) ueño= {dueño, sueño} AGRUPACION: Se utiliza los paréntesis “()” para agrupar los caracteres del alfabeto que se utilizan. Hay que tener en cuenta la procedencia de los operadores que se utilizan (precedentes internos o siguientes). Ejm: (mi)? bol(sa/a)= {mi bolsa, mi bola, bolsa} (a/b) c = {ac, bc} AGRUPACION DE CARACTERES: Se utiliza los corchetes “[]” para agrupar clases de caracteres así se define una gama de símbolos relacionados entre si utilizando uno de ellos. Ejm: [A - Z] = {A, B, C, Y, M, ….. } [0 - 9] = digito GRAMATICA DE ESTRUCTURA DE FRASE Una gramatica de estructura de frase o simplemente gramática G se define como: G= {Vn, Vt, S, P} donde i) Vn: Es un conjunto finito de símbolos no terminales de un vocabulario V, que puede sustituirse por otros símbolos. ii) Vt: es un conjunto finito de símbolos terminales de V, que no pueden sustituirse por otros símbolos. iii) S: Es un símbolo especial de Vn que se denomina como el símbolo de inicio, a partir del cual siempre se empieza a construir palabras. iv) P: Es el conjunto de reglas de producción (reglas gramaticales) cada uno de la forma W0 W1, lo cual significa que W0 puede sustituirse por w1, W0 debe contener al menos un simbolo no terminal en tanto que W1 puede consistir en cualquier combinación de símbolos no terminales y terminales. Las reglas de produccion se escriben por ejemplo: SaAB , A Bba (que quiere decir, S deriva en aAB) B bB , B C FORMA DE BACKUS_NAUR Hay otra notación que se denomina forma de BACKUS NAUR, que algunas veces se usa para describir las producciones de una gramática libre de contexto (tipo 2) específicamente. i) “::=“ se usa en lugar de “” ii) Cualquier no terminal se escribe entre corchetes [ ]. iii) Toda la producción con el mismo miembro izquierdo no terminal se combinan en una proposición con todos los miembros derechos enumerados a la derecha de “::=” separadas por barra verticales. Por ejemplo: A aB , Ab , ABC Se combinan en BACKUS NAUR como: A::= a[B] |b| [B][C] GRAMATICAS INDEPENDIENTES DEL CONTEXTO En este tipo de gramática se puede reemplazar un no terminal por otra derivación ya sea con símbolos no terminales o terminales. En la gramática dependiente del contexto influye el entorno para poder derivarlos. Ejm: Sea: A aBb B C Observe que el no terminal B esta rodeado por los terminales a y b, es una gramática dependiente del contexto Ud. Puede reemplazar B por esta derivación siempre y cuando este rodeado por a y b. Por Ejm: AaCb , A abb Es una gramática independiente del contexto. Ud. Puede reemplazar por otra derivación no importando las restricciones. Por Ejm(1): A B ABC B C A CC C a A aa DERIVACION Derivar es desarrollar la gramática G={(S,A,B),(a,b),(S,P)} donde p es el conjunto de producciones S→AB, S→AA ,A→aB,A →ab,B→b} Solucion S → AB → aBB, → abB →abb ó S →AA →aBA →abA →abab ó S →AA →aBaB →abaB →abab En consecuencia: L(G)={abb,abab} DERIVACION G={(S),(0,1),S, P}, donde P consiste en la producción: {S →11S, S →0} SOLUCION S →0 ó S →11S →110 ó también S →11S →1111S →11110 ó etcétera En consecuencia L(G)={12n0} donde n>=0 DERIVACION MAS A LA IZQUIERDA Si G={(S,A),(a,b),S,P}, donde P consiste en las producciones {S→ aAS, S →a, A →SbA, A →ba} genere la cadena aabbaa S → aAS →aSbAS(La A mas a la izquierda se sustituye por SbA) → aabAS(la S más a la izquierda se sustituye por a) →aabbaS (la A más a la izquierda se sustituye po ba) →aabbaa (S se sustituye por a) DERIVACION MAS A LA DERECHA Si G={(S,A),(a,b),S,P}, donde P consiste en las producciones {S→ aAS, S →a, A →SbA, A →ba} genere la cadena aabbaa S → aAS →aAa(La S mas a la derecha se sustituye por a) → aSbAa(la A más a la derecha se sustituye por SbA) →aSbbaa (la A más a la derecha se sustituye por ba) →aabbaa (S máa a la derecha se sustituye por a) ANALISIS GRAMATICAL DE ARRIBA HACIA ABAJO Determine el análisis gramatical de arriba hacia abajo p si la cadena ‘abab’ pertenece a la gramática; se conoce: Si G={(S,A,B),(a,b),S,P}, y P consiste en las produccion {S→ AB, AB →BA, A →aA, B →Bb, A →a,B →b} Entonces si derivamos S → AB →aAB → aABb →aBAb →abAb →abab ANALISIS GRAMATICAL DE ABAJO HACIA ARRIBA Determine el análisis gramatical de arriba hacia abajo p si la cadena ‘abab’ pertenece a la gramática; se conoce Si G={(S,A,B),(a,b),S,P}, y P consiste en las produccion {S→ AB, AB →BA , A →aA , B →Bb , A →a, B →b} Entonces si derivamos de abajo hacia arriba , esto es pa Cadena: abab ← aBab ← aBAb ← aABb ← ABb ←AB De manera la cadena ‘abab’ pertenece a L(G) DERIVACION POR LA IZQUIERDA A Bzwa : B es un no terminal, usted debe derivar a partir de B que esta mas a la izquierda. E E→E+T E →T E T →T*F T T →F F →id Id →a|b|c T + T F * F F id Id b a id c DERIVACION POR LA DERECHA A Bzw0 : w0 es un no terminal, usted debe derivar a partir de W que esta mas a la derecha. E→E+T E →T E T →T*F T →F E F →id T T Id →a|b|c F F id Id id c + a T * b F Ejemplo: Crear las reglas de producción que reconozca: double a; Solución: <VAR><TIPO> <id>; <tipo> double <id> a <VAR> ; <TIPO> double <id> a Ejemplo: <var> <tipo> Crear las reglas de producción que reconozca: int a,b,c; <var><tipo><vars>; <vars><unaV> <vars><unaV>,<vars> <unaV> id <tipo> int <tipo> double <id> a|b|c <vars> ; <int> <unaV> ,<vars> <id> <unaV>,<vars> a <unaV> id b id c TIPOS DE GRAMATICA Las gramáticas se clasifican según los tipos de producción que se le permiten. La siguiente clasificación de gramáticas se debe a NOAM CHOMSKY. -Una gramática es de tipo 0 si no tiene restricciones en las producciones. Ejemplo : S aAB, AB a , A b, B AB -Una gramática “G” es de tipo 1 si cualquier producción es de la forma αβ donde | α | <=| β | (Las || indican cardinalidad) , o de la forma α ג )ג es cadena vacía) Ejemplo: S aAB, AB bB, B b, A aB -Una gramática “G” es de tipo 2 si cualquier producción es de la forma A β donde el miembro izquierdo A es un no terminal. Ejemplo: S aA, A aAB, B b, A a - Una gramática “G” es de tipo 3 si toda producción es de la forma A a o AaB, Es decir donde el miembro izquierdo A es un solo no terminal y el lado derecho es un solo terminal , o un terminal seguido por un no terminal , o de la forma S ג S aB, B bA, B b, B a, A aB, A a TIPOS DE GRAMATICA(Observación) Las gramáticas constituyen una jerarquía, toda gramática toda gramática tipo 3 es de tipo 2, toda gramática de tipo 2 es de tipo 1 y toda gramática tipo 1 es de tipo 0. A) Una gramática es sensible al contexto si las producciones son de la forma αA α‘ α β α’ B) Una gramática es libre de contexto si las producciones son de la forma A β La expresión libre del contexto proviene del hecho de que es posible sustituir la variable A por β sin tomar en cuenta donde aparece A. C) Una gramática es regular si las producciones son de la forma: Aa, A a B, S ג Observación: Una gramática libre del contexto es lo mismo que una gramática tipo 2, una gramática regular es similar al tipo 3. AUTOMATAS Y GRAMATICAS Decimos que una gramática G es equivalente a un automata M(G≡M) si el lenguaje reconocido por el automata es igual al lenguaje generado por la gramática, es decir si L(G)=L(M) Ejemplo Sea la gramática G con V={a,b,c,d}, ∑={a,b}, variables={S,A}, el símbolo inicial es S y la regla de producción son: S aS/aA AbA/b a b M: S A a b Z Observe que G y M reconocen a+ b+ Ejemplo Convertir la gramática regular a un autómata finito. SaA Solución SbA AaB AbB Aa BaA BbA b b S a a a Z aB A b Ejemplo Dado el autómata finito, exprese las reglas de la gramática. a b q0 q1 b a a,b b qq2 2 q3 a Solución: Q0 aQ1 Q0 bQ0 Q0b Q0a Q1aQ2 Q1bQ0 Q1a Q1b Q2aQ3 Q2bQ0 Q2b Q3aQ3 Q3bQ3 Q0,Q1,Q2 ESTADOS FINALES Ejemplo Sea una gramática G = (ST,SN,n0,R), donde: ST= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ., +, -} SN= {real, frac, ent, dig, sign} n0= real r1:<real>::=<ent>|<frac>|<ent><frac>|<sign><real> r2: <frac> ::= . <ent> r3: <ent> ::= <dig>| <dig><ent> r4: <dig> ::= 0|1|2|3|4|5|6|7|8|9 r5: <sign> ::= +| - Ejemplo: Verificar si 21.07 L(G) real ent frac dig ent frac dig dig frac dig dig . ent dig dig . dig ent dig dig . dig dig 2 dig . dig dig * 2 1 . 0 7 Entonces: n0 * 2 1 . 0 7 L(G) Ejemplo: Sea una gramática G = (ST,SN,n0,R), donde: ST= {Juan, Ana, corre, come, salta, rápido, lento} SN= {oración, sujeto, predicado, verbo, adverbio} n0= oración r1: oración sujeto predicado r2: predicado verbo adverbio r3: sujeto Juan r4: sujeto Ana r5: verbo corre r6: verbo come r7: verbo salta r8: adverbio rápido r9: adverbio lento Ejemplo: Ejemplo de una cadena: ¿Soporta esta gramática Ana corre rapido? oración sujeto predicado Ana predicado Ana verbo adverbio Ana corre adverbio Ana corre rápido Entonces: n0 * Ana corre rápido, Ana corre rápido L(G) Ambigüedad en GLC Una GLC es ambigua si existe una cadena w L(G) que tiene más de una derivación por la izquierda o más de una derivación por la derecha o si tiene dos o más árboles de derivación. En caso de que toda cadena w L(G) tenga un único árbol de derivación, la gramática es no ambigua. Ejemplo: la gramática S aS | Sa | a es ambigua porque aa tiene dos derivaciones por la izquierda S aSS aa S Sa aa a S S S a a a Esta gramática genera el lenguaje a+ que también es el lenguaje 193 generado por la gramática no ambigua S aS | a. Otro ejemplo: a gramática para expresiones aritméticas sobre las variables x y y: E E + E E E E E x E y es ambigua porque tiene dos árboles de derivación: E E E E + x E E E + E x x E * y E y 194 x MAQUINA DE TURIN Estos autómatas detectan cadena de caracteres escribiéndolos en una cinta. Esta compuesto por: Q: Estado de la unidad de control . Alfabetos: Símbolos de entrada que es el alfabeto de la cinta. Función de Transición: Donde: q0 : Estado inicial de la unidad de control que posee la maquina de Turín B: espacios en blanco(alfabeto de la cinta) F: Conjunto de estados finales. MAQUINA DE TURIN(Ejemplo 1): Ejm: Diseñe una maquina que detecte cadenas de unos y ceros. Solución: 1 q1 0 1 0 1 0 . . . 1 0 B q2 q0 La unidad de control, mediante un algoritmo va a detectar par luego reinscribir en un cinta la cadena de entrada. Se comienza siempre de un estado inicial q 0 que es el vacio. (q0, (q1, (q2, (q1, Ø) (q1, Ø,D) 1) (q2, 1,D) 0) (q1, 0,D) B) (q3, B,I) MAQUINA DE TURIN(Ejemplo 2): Ejm: Diseñe el algoritmo de la U. C. que detecte. / * A Q U I * / B Solución: (q0, Ø) (q1, Ø,D) (q1, /) (q2, /,D) (q3, *) (q4, *,D) (q4, /) (q5, /,D) (q2, *) (q3, *,D) (q3, C) (q3, C,D) (q5, B) (q6, B,I) MAQUINA DE TURIN(Ejemplo 3): Ejm: Diseñe el algoritmo que detecte que una cadena siempre comienza con un carácter luego del carácter puede venir un numero o carácter. Solución: (q0, Ø) (q1, Ø,D) (q1, L) (q2, L,D) (q2, L) (q2, L,D) (q2, n) (q2, n, D) (q2, B) (q3, B,I) AUTOMATA DE PILA Un automata de pila AP, en ingles pushdown automata, es un autómata capaz de reconocer los lenguajes libres de contexto, o de tipo 2. Los autómatas de pila se pueden representar como una maquina de Turíng, que solo puede leer de una cinta, y que puede guardar resultados intermedios en una pila. De hecho su capacidad de procesamiento es inferior a la ALA, debido a las siguientes restricciones sobre las posibles operaciones con la cinta y la pila: - La cinta se desplaza en un solo sentido, y su cabeza solo puede leer. - La pila, esta limitada en un extremo por definición, cuando se lee un elemento de al pila, este desaparecerá o se saca y cuando se escribe es la pila, se introduce un elemento. AUTOMATAS DE PILA(TIPOS): DEPENDIENTES DE LA ENTRADA: Se lee e1 ∑, y se desplaza la cinta, y en función de ei, qj(el estado en que se encuentra la cinta), y Z(el valor de la pila), el control pasa a otro estado q 1, y en la pila se introduce Z+, o se extrae Z, o no se hace nada. INDEPENDIENTES DE LA ENTRADA: Puede ocurrir lo mismo que en el caso anterior, solo que e1, no interviene, la cinta no se mueve, lo que permite manejar la pila sin las informaciones de entrada. En cualquier caso, se vacía la pila (es decir extrae todas las Z)el automata se para. AUTOMATA DE PILA Un automata de pila se puede definir formalmente como una séptupla AP(Q,∑,R,ℓ,q0,Z0,F) Q es el conjunto finito de estados. ∑ es el alfabeto de entrada, es finito. R es el alfabeto de la pila. ℓ es la función de transición. q0 es el estado inicial y cumple que q0 Q. Z0 es el símbolo inicial que contiene la pila antes de comenzar Z0 r. F es el conjunto de estados finales. EJEMPLO Sea L={aibi : i>= 1} sobre ∑={a,b} Solución: La idea es copiar las (a)es en la pila y borrar una “a” por cada “b” que sea leida en la cinta. Una cadena es aceptable si es procesada completamente y en la pila solo queda el marcador en el fondo Z. EJEMPLO q0,a,Z) = (q1,AZ) (q1,a,A) = (q0,AA) (q0,b,A) = (q1,) (q1,b,A) = (q1,) a q0 b a q1 q2 (q1,,Z) = (q2,Z) Sea w= aabb veamos el procedimiento de al cadena. (q0, aabb, Z)├ (q1, abb, AZ)├(q0, bb, AAZ) ├ (q1, b, AZ)├(q1, , Z) ├ (q2, Z) La última es una configuración de aceptación por tanto “w” es aceptada. EJEMPLO Sea w= aaabb veamos el procedimiento de al cadena. (q0, aaabb, Z)├ (q0, aabb, AZ)├(q0, abb, AAZ) ├ (q0, bb, AAAZ)├(q1, b, AAZ) ├ (q1, ,AZ) A pesar que la cadena se proceso completamente (q1, ,AZ) no es una configuración de aceptación, por tanto “w” no es aceptada.