Informática Teórica Semana 01 Rogerio Orlando Beltrán Castro Informática Teórica COMPARTIMOS NUESTROS RETOS Y LOGROS ANTE LA SOCIEDAD Y LA COMUNIDAD ACADÉMICA Resultados de Aprendizaje Informática Teórica • RA1:Desarrolla estrategias, procesos, sistemas, componentes, proyectos o servicios informáticos, fundamentados en las ciencias de la computación y la aplicación de buenas prácticas que permitan la solución innovadora y sostenible de problemas complejos. • RA2: Desempeñar de forma ética, efectiva, colaborativa y asertiva actividades que conlleven la planificación de tareas, la toma de decisiones, la comunicación y el cumplimiento de objetivos en los proyectos en los cuales participa. Agenda 1. PRESENTACIÓNDELDOCENTE. 2. PRESENTACIÓNDE LAASIGNATURA 3. MICROCURRICULO 4. CRONOGRAMA 5. ORGANIZACIÓN DE LA CLASE 6. LABORATORIOS 7. TEMA 01 8. TEMA 02 PRESENTACIÓN DEL DOCENTE. ► ROGERIO ORLANDO BELTRAN CASTRO ► INGENIERO DE SISTEMAS. UIS. ► ESPECIALISTA EN TECNOLOGIAS AVANZADAS DE DESARROLLO DE SOFTWARE. UNAB ► ESPECIALISTA EN TELECOMUNCIACIONES. UPB ► CANDIDATO A MAGISTER EN DESARROLLO DE SOFTWARE. UNAB ► CANDIDATO A MAGISTER EN GESTIÓN EDUCATIVA. IUV ► DESARROLLADOR DE SOFTWARE DESDE AL AÑO 1996 ► DOCENTE DESDE EL AÑO 2004 Título de la presentación 5 PRESENTACIÓN DE LAASIGNATURA ► La asignatura presenta al estudiante los aspectos formales de la programación, en particular los procesos de análisis léxico y sintáctico comunes a todos los lenguajes de programación. Además analiza los modelos de máquinas abstractas que permiten la formalización de cualquier algoritmo, desde los autómatas finitos, que son herramientas muy útiles para resolver ciertos problemas de análisis o sistemas de eventos discretos, hasta la máquina de Turing, equivalente a cualquier otro sistema computacional y capaz de resolver cualquier función recursiva. El conocimiento de estos aspectos permite al estudiante conocer la esencia de los lenguajes de programación y la base de la construcción de compiladores e intérpretes. También es básico para c omprender conceptos tan importantes como recursividad, computabilidad ocomplejidad computacional. Título de la presentación 6 MICROCURRICULO PROGRAMA ACADÉMICO Ingeniería Informática DENOMINACIÓN DE LA ASIGNATURA Informática Teórica SEMESTRE Optativa TIPO DE ASIGNATURA CRÉDITOS/HORAS No. de créditos Horas con acompañamiento docente Horas de trabajo independiente Horas totales 3 36 108 144 Teórica Teórico – Práctica COMPONENTE FORMATIVO DE LA ASIGNATURA Componente de formación especifica X Práctica MICROCURRICULO DESCRIPCIÓN DE LA ASIGNATURA En la asignatura de Informática Teórica se busca que el alumno se inicie en cuestiones como la definición y programación de una máquina de Turing, los lenguajes recursivos, lenguajes recursivamente numerables y no recursivamente enumerables, los problemas indecidibles y los problemas intratables. Es una asignatura de marcado carácter teórico, pero fundamental en la formación de un ingeniero informático, ya que el estudio de fondo de las máquinas de Turing (que pueden resolver el mismo tipo de problemas que cualquier computador) tiene interés por sí solo, pero además esta disciplina tiene aplicaciones evidentes en el campo de los traductores de lenguaje, en los que resulta necesario saber si una cadena dada pertenece a un lenguaje determinado o no. La cuestión de los problemas intratables también es esencial para un ingeniero informático, ya que tienen aplicaciones en campos como la logística, criptografía, gestión de redes, gestión de transporte, etc. También se estudian otros problemas de la Teoría de la Complejidad Computacional y se termina el curso con una introducción a las redes neuronales artificiales. RESULTADOS DE APRENDIZAJE 1. Desarrolla estrategías, procesos, sistemas, componentes, proyectos o servicios informáticos, fundamentados en las ciencias de la computación y la aplicación de buenas prácticas que permitan la solución innovadora y sostenible de problemas complejos. 2. Desempeñar de forma ética, efectiva, colaborativa y asertiva actividades que conlleven la planificación de tareas, la toma de decisiones, la comunicación y el cumplimiento de objetivos en los proyectos en los cuales participa. CRONOGRAMA CRONOGRAMA ORGANIZACIÓN DE LA CLASE 1. Presentación del Tema 2. Ejemplos. 3. Ejercicios. Título de la presentación 11 LABORATORIOS Título de la presentación 12 12 Laboratorio. Máquinas de Turing con JFLAP Abril 1 2024 Preparación del laboratorio Para preparar este laboratorio, simplemente descarga JFLAP en tu equipo (PC). Consulta más información sobre la herramienta en el apartado A fondo del tema. Además, revisa los temas anteriores para asegurarte de que tienes frescos los conceptos relacionados con la máquina de Turing. Descripción Se te facilitará la descripción de una serie de lenguajes recursivamente enumerables. Las tareas que se deben realizar con JFLAP serán las siguientes: 1. Diseñar máquinas de Turing que los reconozcan. 2. Hacer una lista de cinco palabras que sean aceptadas y otras cinco que sean rechazas por la máquina de Turing. Ejercicios: 1. Diseñar una máquina de Turing que acepta el lenguaje 2. Diseñar una máquina de Turing que calcula el numero consecutivo de un numero dado en binario Título de la presentación 13 Ejercicios de máquinas de Turing Abril 8 2024 Descripción Resuelve los problemas: 1. Dibujar una máquina de Turing de una sola cinta que solo quede en estado de aceptación si el número de unos es par teniendo como alfabeto de entrada Σ = {0, 1} y como alfabeto de cinta Γ = {0, 1, □} 2. Dibujar una máquina de Turing de una sola cinta cuyo alfabeto de entrada sea Σ = {0, 1}, cuyo alfabeto de cinta sea Γ = {0, 1, □} y que solo acepte cadenas de unos seguidos de ceros, excluyendo la cadena vacía. Título de la presentación 14 TEMA 1. Conceptos matemáticos utilizados Título de la presentación 15 15 Introducción a la lógica proposicional Muchos de los conceptosde lógica proposicional que se presentanen este capítulo te resultaránfamiliares ya que son necesariospara evaluar expresioneslógicas. La lógica proposicional incluyereglas que permiten construirfórmulas lamadas proposiciones, que se construyen sobre el siguienteconjuntode símbolos: Átomos o símbolos proposicionales para representarvariableslógicas. Conectivas, o conectivas lógicas, (también denominadasoperadorlógico o conectoreslógicos) para representar la conjunción, la disyunción,la negación,la implicación,la equivalencia y los paréntesis. Dos constantes, V y F, que representan los valores de verdadero y falso. A continuación, veremos más definicionesimportantes: ► Una teoría es un conjuntode cláusulasbien formadas que deben ser verdaderassimultáneamente. ► Una tabla de verdad combina todos los valoresposibles de los átomos de una fórmula lógica y muestralos valoresque toma la fórmula en cada caso. Título de la presentación 16 Teoría de relaciones Cuando se tiene un sistema, puede ser muy interesante estudiar cómo se relacionan los elementos entre sí. Las relaciones pueden ser de equivalencia o de orden, por ejemplo. Formalmente,una relación se define como: 𝑅={(𝑎,𝑏):𝑎𝑅𝑏} Es decir, se define considerando todos los pares de elementos que están relacionados. Una relación es reflexiva si ∀ 𝑎 ∈ 𝐴,𝑎𝑅𝑎 Una relación es simétrica ∀ 𝑎,𝑏 ∈ 𝐴,𝑎𝑅𝑏⇒𝑏𝑅𝑎 Una relación R es transitiva si ∀ 𝑎,𝑏,𝑐 ∈ 𝐴,𝑎𝑅𝑏 𝑦 𝑏𝑅𝑐⇒𝑎𝑅𝑐 Una relación es simétrica. Si una relación es reflexiva, simétrica y transitiva, entonces es una relación de equivalencia. Título de la presentación 17 Conjuntos numerables y no numerables George Cantor demostró que existen distintos tipos de infinito, es decir, que hay infinitos mucho más grandes que otros. El infinito con menor cantidad de elementos es el infinito numerable, es decir, el infinito sobre el que puede establecerse una correspondencia uno a uno con los números naturales. Ejemplos de conjuntos de cardinal numerable son los números naturales y los números racionales. Sin embargo, existen conjuntos como los números reales que tienen muchos más elementos de los que pueden ser descritos por los números naturales. Estos conjuntos se dice que tienen una cantidad no numerable de elementos Título de la presentación 18 El concepto de conjunto es fundamental en todas las ramas de la matemática. Intuitivamente, un conjunto es una lista, colección o clase de objetos bien definidos, objetos que pueden ser: número, personas, letras, ríos, etc. Estos objetos se llaman elementos o miembros del conjunto. EJEMPLOS DE CONJUNTOS: ▪ N: conjunto de los números naturales. ▪ Z: conjunto de los números enteros. ▪ Q: conjunto de los números racionales. ▪ R: conjunto de los números reales. ▪ C: conjunto de los números complejos. 18 Es usual denotar los conjuntos con letras mayúsculas. A, B, X, Y, … Los elementos de los conjuntos se representan con letras minúsculas. a, b ,x , y, … Al definir un conjunto por la efectiva enumeración de sus elementos, por ejemplo, el conjunto A que tiene por elementos a los números 1, 2, 3 y 4, se escribe: A ={ 1,2,3,4} 4 1 3 2 A C Separando los elementos por comas y encerrándolos entre llaves {}. Esta forma es la llamada forma tabular de un conjunto. Pero si se define un conjunto enunciando propiedades que deben tener sus elementos como, por ejemplo, el conjunto B, conjunto de todos los números pares, entonces se emplea una letra, por lo general “x”, para representar un elemento cualquiera y se escribe: B={x / x es par} Lo que se lee” B es el conjunto de todos los números x tales que x es 21 par”. Se dice que esta es la forma definir por comprensión o constructiva de un conjunto. Téngase en cuenta que la barra vertical “/” se lee tales que. . signo Para indicar que un elemento pertenece a un conjunto, se escribe el Así: a {vocales} quiere decir que a es un elemento del conjunto de las vocales. Para indicar que un conjunto no pertenece a un conjunto, se escribe el signo , pero cruzado con una raya .Al escribir z {vocales}, se indica que la letra z no pertenece al conjunto de las vocales. Representación gráfica: u a o e i Conjunto de las vocales 22 Z A C Los conjuntos pueden ser finitos o infinitos. Intuitivamente un conjunto puede ser finito si consta de un cierto numero de elementos distintos, es decir, si al contar los diferentes elementos del conjunto el proceso del contar puede acabar. Si no, el conjunto es infinito. EJEMPLOS: Si M es el conjunto de los días de la semana, entonces M es finito. Si N={2,4,6,8,...}, entonces N es infinito. 23 Si P={x/x es un río de la tierra}, entonces P es también finito aunque sea difícil de contar los ríos del mundo se puede hacer A C POR EXTENSIÓN: para determinar un conjunto por extensión se citan o escriben todos y cada uno de sus elementos, separándolos por comas y encerrándolos entre dos llaves. Por ejemplo, el conjunto de las vocales será: A={a,e,i,o,u} POR COMPRENSIÓN: para determinar un conjunto por comprensión se indican todas las propiedades comunes a los elementos del conjunto, de forma que todo elemento que este en el conjunto posee dichas propiedades y 24 todo elemento que posee esas propiedades esta en el conjunto. El mismo ejemplo anterior escrito por comprensión sería: A={vocales} Para un mejor entendimiento del concepto de conjunto, así como de las relaciones entre conjuntos, se recurre a representar gráficas que permiten adquirir, con una mirada, una idea general del conjunto y de sus propiedades. Los más utilizados son los denominados diagrama de Venn. Estos gráficos son una representación de los elementos del conjunto mediante puntos situados en el interior de una línea cerrada. a e 25 i u o Diagrama de Venn representativo del conjunto de las vocales. Ejemplo: Sea A={divisores del número 12} (definido por comprensión) = {1,2,3, 4 ,6,12} (definido por extensión) 1 2 4 3 12 6 26 Que 1 A indica que 1 es un divisor de 12. Si 5 es divisor de 12 Aquiere decir que el 5 no A C El conjunto A es igual al conjunto B si ambos tienen los mismos elementos, es decir, si cada elemento que pertenece a A pertenece también a B y si cada elemento que pertenece a B pertenece también a A. Se denota la igualdad de los conjuntos A y B por: A=B EJEMPLO: 27 Sean A={1,2,3,4} y B={3,1,4,2}. Entonces A=B, es decir, {1,2,3,4}={3,1,4,2} pues cada uno de los elementos 1,2,3 y 4 de A pertenece a B y cada uno de los elementos 3,1,4 y 2 de B pertenecen a A. Obsérvese, por tanto, que un conjunto no cambia al reordenar sus elementos. A C El conjunto vacío es un conjunto que carece de elementos. Este conjunto se suele llamar conjunto nulo. Aquí diremos de un conjunto semejante que es vacío y se le denota por el símbolo: “Φ” que significa vacío. EJEMPLO: Si A es el conjunto de personas vivientes mayores de 200 años. A es vacío según las estadísticas conocidas. 28 Sea B={x / x²=4, x es impar}.B es entonces un conjunto vacío. Si todo elemento de un conjunto A es también elemento de un conjunto B, entonces se dice que A es un subconjunto de B. Más claro: A es un subconjunto de B si xεAimplica xεB. Se denota esta relación escribiendo: B A Se puede leer “A esta contenido en B” Su representación gráfica sería: 29 B A A B EJEMPLOS: El conjunto C={1,3,5} es un subconjunto del D={5,4,3,2,1}, ya que todo número 1,3 y 5 de C pertenece a D El conjunto E={2,4,6} es un subconjunto del F={6,2,4}, pues cada número 2,4, y 6 que pertenece a E pertenece también a F. Obsérvese en particular que E=F. De la misma manera se puede mostrar que todo conjunto es subconjunto de si mismo. Dado dos conjuntos M y N, siendo M={a,e,i} y N={a,e,i,o,u}.Entonces se dice que M N. Ya que: M está en N A C Puesto que todo conjunto A es un subconjunto de si mismo, se dirá que B es un subconjunto propio de A si, en primer lugar, B es un subconjunto de A y, en segundo lugar, B no es igual a A. Más brevemente, B es un subconjunto propio de A si: B A y B =A En algunos libros “B es un subconjunto de A” se denota por: BA Y “B es un subconjunto propio de A” se denota por: 31 BA Operaciones con conjuntos: unión, intersección, Diferencia y complemento La union de A y B es el conjunto de todos los elementos que están en A o en B (o en ambos). A B = {x | x A o x B} Podemos representar la unión A B por la siguiente diagrama de Venn; La intersección de A y B es el conjunto de todos los elementos que están en A y también en B. A B = {x | x A y x B} Podemos representar la intersección A B por la siguiente diagrama de Venn; 33 La Diferencia entre dos conjuntos A y B es el conjunto formado por todos los elementos que pertenecen a A y no pertenecen a B. Se denota por A – B A - B = {x : x ∈ A 𝖠 x ∈/ B} El conjunto A - B se lee “A menos B” y recibe también el nombre de complementario relativo del conjunto B respecto del conjunto A. por la siguiente diagrama de Venn; Si A es un subconjunto de S, entonces A' es el complemento de A en S, el conjunto de todos los elementos de S que no están en A. Podemos representar el complemento A' por la siguiente diagrama de Venn: 35 36 37 Ejemplo Visual El doctor Pérez observa las fichas de 10 pacientes y analiza sus síntomas Los pacientes que tienen fiebre son:.....................F = {a, b, e, f, g, i, j} Los pacientes que tienen cólicos son:.....................C = {b, c, d, f, g, h, j} Los pacientes que tienen mareos son:.....................M = {a, e} Ejercicios Observemos en un diagrama de conjuntos los pacientes que tienen • fiebre y cólicos, • fiebre y mareos, • cólicos y mareos 39 Ejercicios INTERSECCIÓN DE CONJUNTOS Se llama intersección de dos conjuntos A y B y se escribe AB , al conjunto formado por todos los elementos que pertenecen a la vez al conjunto A y B. 40 Ejemplo Visual UNIÓN DE CONJUNTOS Se llama unión de dos conjuntos A y B y se escribe AB , al conjunto formado por todos los elementos que pertenecen al conjunto A o al conjunto B.. 41 Ejemplo Visual DIFERENCIA DE CONJUNTOS Se llama diferencia de dos conjuntos A y B (A menos B) y se escribe A - B , al conjunto formado por todos los elementos que pertenecen a la vez al conjunto A pero no pertenecen al conjunto B. 42 TEMA 2. Lenguajes y gramáticas formales. Título de la presentación 43 43 Introducción La informática teórica trabaja con tres conceptos esenciales que están relacionados: gramáticas, lenguajes y máquinas o autómatas. El diagrama de la Figura 2.2.1 describe: Título de la presentación 44 Introducción A pesar de la estrecha relación de los conceptos, el estudio de gramáticas y lenguajes tiene orígenes distintos. El estudio de lenguajes procede de del lingüista Noam Chomsky, quién clasificó las gramáticas en 4 grupos, en función de sus restricciones: G0, G1, G2 y G3. La teoría de autómatas procede del campo de la ingeniería y posteriormente se descubrió su relación con la teoría de lenguajes formales. En esta asignatura se van a estudiar Máquinas de Turing, generan el mismo lenguaje que una gramática G0. La característica fundamental de estas máquinas es que pueden describir cualquier suceso computable, que es justo lo que se necesita que haga un computador. Título de la presentación 45 Lenguajes y gramáticas formales Alfabeto: conjunto no vacío y finito de símbolos. Palabra o cadena: secuencia finita de símbolos de un alfabeto. Cadena vacía: es una cadena que no contiene ningún símbolo. Concatenación: si x e y son palabras, la concatenaciónxy es una palabra formada por los símbolos de x seguidos por los símbolos de y. Potencia:la potencia i-ésima de un lenguaje L es la concatenacióndel lenguaje i veces. Clausura positiva: es la unión de todas las potencias del lenguaje menos la potencia 0. Si L es un lenguaje, su clausura positiva es Clausura: es la unión de todas las potencias del lenguaje, incluyendo la potencia 0. Producción:es un par (x,y) ordenado de palabras. Si x forma parte de la cadena z, se puede sustituir x por y. Así es posible transformar unas palabras en otras. Derivación: es la aplicación de una secuencia de producciones a una palabra. Título de la presentación 46 Gramáticas formales Gramática formal. Una gramática formal G se define como una cuádrupla o 4-tupla: 𝐺=(Σ𝑇,Σ𝑁,𝑆,𝑃) Donde: Σ𝑇 es el alfabeto de símbolos terminales. Σ𝑁 es el alfabeto de símbolos no terminales. S es un símbolo denominado axioma de la gramática. P es un conjunto finito de producciones. Forma sentencial:x es forma sentencial si existe una derivación desde el axioma hasta esa palabra. Lenguaje generado por una gramática (𝐿(𝐺)): es el conjunto de todas las cadenas que pueden generarse con la gramática G. Equivalenciade gramáticas: dos gramáticas son equivalente si generan el mismo lenguaje. Título de la presentación 47 Gramáticas formales • Chomsky clasificó las gramáticas en función de sus restriccionesen las • siguientes categorías: • Tipo 0 (sin restricciones):es la gramáticaque define el mismoconjunto de lenguajesque puede reconoceruna máquina de Turing. • Tipo 1 (dependientes del contexto). • Tipo 2 (independientesdel contexto). • Tipo 3 (regulares). Título de la presentación 48 GRAMATICAS FORMALES 49 Tipos de Gramática 50 Tipos de Gramática 51 Tipos de Gramática o Esta Compuesta por 4 elementos. 1. T: Símbolos terminales (Elementos que no generan nada) 2. V: No terminales (Elementos del lado izquierdo de una producción, antes de la flecha “→” 3. P: Conjunto de producciones (sentencias que se escriben en la gramática ) • Cada regla o producción consta de: • Cabeza: variable • → = símbolo de producción •Cuerpo: cadena de 0 o mas símbolos terminales y/o variables. Es decir una regla tiene la forma Cabeza → Cuerpo , o por ejemplo: Aa →BA 4. S: Símbolo inicial (primer elemento de la gramática) Tipos de Gramática o Una gramática es una estructura algebraica formada por cuatro elementos o G={NT, T, S, P} o NT es el conjunto de elementos NO TERMINALES o T es el conjunto de elementos TERMINALES o S es el SIMBOLO INICIAL de la gramática o P es el conjunto de REGLAS DE PRODUCCION G=(V,T,P,S) V: No terminales T: Símbolos terminales P: Conjunto de producciones S: Símbolo inicial Tipos de Gramática 1. Las letras mayúsculas A,B,C,D,E y S denotan variables: y S es el símbolo de inicio. 2. Las letras minúsculas a,b,c,d,e,dígitos, y cadenas en letras negritas son terminales. 3. Las letras mayúsculas X,Y y Z denotan símbolos que pueden ser terminales o variables. 4. Las letras minúsculas u,v,w,x,y,z denotan cadenas terminales. 5. Las letras griegas α,β,γ denotan cadenas de variables terminales. Gramática tipo 0 Características o No tiene restricciones . o Incluyen a todas las demás gramáticas formales. o Las maquinas que lo aceptan son maquinas de Turing. Gramáticas de tipo 0 También llamadas gramáticas no restringidas o gramáticas con estructura de frase. Las reglas de derivación son de la forma: α→β siendo α ∈ (VN𝖴VT)+ β ∈ (VN𝖴VT)* , es decir la única restricción es que no puede haber reglas de la forma λ → β donde λ es la cadena vacía. Ejemplo 1 Sea la gramática definida por G1 = ({S}, {0,1}, S,P) donde P={(S → 000S111),(0S1→ 01)}. Determinar el lenguaje que genera. Solución : La única forma de generar sentencias es aplicando cualquier nº de veces la primera producción y terminando con la aplicación de la segunda, así se obtiene el lenguaje: S →000S111→000000S111111→⋅ ⋅ ⋅→0(3n − 1)0S11(3n − 1)→0(3n)1(3n) Por consiguiente el lenguaje que genera esta gramática es el conjunto infinito de instrucciones que se indica a continuación : L(G1) = {0(3n)1(3n)/n ≥ 1} Ejemplo 2 Si la 2ª producción de la gramática del ejemplo 1 fuese S →01 el lenguaje sería : L(G2) = {0(3n + 1)1(3n + 1)/n ≥ 0} Ejemplo 3 Sea la gramática G3 = ({S}, {a,b}, S, P) donde P={(S → aSb), (S → ab)}. Determinar el lenguaje que genera. Solución : Aplicando la primera producción n-1 veces, seguida por la aplicación de la segunda producción, se tiene que : S →aSb →aaSbb →a3Sb3→ ⋅ ⋅ ⋅→a(n − 1)Sb(n − 1)→anbn El lenguaje generado : L(G3)={an bn/n ≥ 1} Ejemplo 4 Dada la gramática G4 = ({S,A}, {a,b}, S, P) donde P={(S → abAS), (abA → baab), (S → a), (A → b)}. Determinar el lenguaje que genera. Solución : Se generan sentencias del lenguaje aplicando las reglas hasta que se pueda ver la forma general del lenguaje. S →abAS →baabS →baaba S →a S →abAS →abbS →abba S →abAS →abAabAS →⋅ ⋅ ⋅→(abA)nS → (abb)na S →abAS →abAabAS →⋅ ⋅ ⋅→(abA)nS → (baab)na S →abAS →abAabAS → S →abAS →abAabAS →baababba S →abAS →abAabAS →abAabAabAS →baababbbaaba L(G4) = {cadenas que contienen abb y baab intercambiándose y reproduciéndose cualquier número de veces, y terminando siempre con el símbolo a} Se puede observar que la forma de expresar este lenguaje no es simple, y surge la necesidad de tener una herramienta que permita describir los lenguajes de otra forma. Ejemplo 5 Sea la gramática G5 = ({S,A,B}, {a,b}, S, P) donde las producciones P son : S →aB S →bA A →a A →aS A →bAA B →b B→bS B →aBB Determinar el lenguaje que genera. Solución : Se generan algunas instrucciones. S →aB →ab S →bA →ba S →aB →abS →abbA →abba S →bA →bbAA →bbaa S →aB →abS →abaB →ababS →ababaB →ababab L(G5) = {cadenas que tienen igual nº de a que de b} Ejemplo 6 Sea la gramática G6 = (VN, VT, S, P) donde : VN = { <número> , <dígito> } VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } S = <número> Las reglas de producción P son : <número> ::= <dígito> <número> <número> ::= <dígito> <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Determinar el lenguaje que genera. Solución : Acontinuación se muestran algunas sentencias del lenguaje generado por esta gramática. < número >→< dígito >< número >→ 7 < número >→ 72 < número >→< dígito >→ 7 < número >→< dígito >→ 0 < número >→< dígito >< número >→< dígito >< dígito >< número >→⋅ ⋅ ⋅→235 L(G6) = {conjunto de los números naturales en base diez}. Ejemplo 7 Sea la gramática G7 = ({A,S}, {a,b}, S, P) donde las reglas de producción son : S →aS S →aA A →bA A →b Determinar el lenguaje que genera esta gramática. Solución : Se muestran algunas sentencias del lenguaje generado por la gramática. S →aS →aaA →aab S →aA →ab S →aS →aaS →aaaS → →anS →anaA →an + 1b S →aA →abA →abbA →abbbA → →abnA →abn + 1 ⋅⋅⋅ ⋅⋅⋅ El lenguaje generado se puede definir con la siguiente expresión regular L(G7) = a a* b b* Gramática tipo 1 Características o Generan los lenguajes sensibles al contexto. o Las maquinas que los aceptan son autómatas linealmente acotados. Tipos de Gramáticas Jerarquía de Chomsky Gramáticas tipo 1 Las reglas de producción de esta gramática tiene la forma xAy ::= xvy donde x, y ϵ ∑*, v ϵ ∑+ y A ha de ser un símbolo no terminal. (A puede transformarse en v sólo si aparece en el contexto definido por x e y) •Ya que v no puede ser la palabra vacía, se deduce de aquí que este tipo de gramáticas no pueden tener reglas compresoras. Se admite una excepción en la regla S ::= λ (siendo S el axioma de la gramática). Como consecuencia se tiene que la palabra vacía pertenece al lenguaje generado por la gramática sólo si contiene esta regla. • Los lenguajes generados por este tipo de gramáticas se denominan “dependientes del contexto”. Tipos de Gramáticas Jerarquía de Chomsky Gramáticas tipo 1 Evidentemente todas las gramáticas de tipo 1 son también de tipo 0, y así, todos los lenguajes dependientes de contexto serán también lenguajes sin restricciones. • Ejemplo1 : G = ({S, B, C}, {a, b, c}, S,P), donde P es: S → aSBc | aBC bB → bb bC → bc CB → BC cC → cc aB → ab Ejemplo 2 La gramática G = ({S,A,B}, {a,b}, S, P) cuyas producciones P son: S →aB S →bA A →a A →aS A →bAA B →b B→bS B →aBB Ejemplo 3 La gramática G = (VN, VT, S, P) donde VN = { <número> , <dígito> }; VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; S = <número> y las reglas de producción P son: <número> ::= <dígito> <número> <número> ::= <dígito> <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Ejemplo 4 La gramática G = ({a,b}, {A,S}, S, P) y sus producciones P son: S →aS S →aA A →bA A →b Ejemplo 5 La gramática definida como G = ({S}, {a,b}, S, P) donde P son las siguientes producciones : ? S →aaaaSbbbb aSb →ab La producción aSb →ab no es del tipo 1, pues se sustituye S por vacío en el contexto a...b. Sin embargo si esta producción fuera S →ab o aSb →abb, entonces sería de tipo 1. Ejemplo 6 La gramática G = ({S,A}, {a,b}, S, P) con las producciones P siguientes : S →abAS abA →baab S →a A →b No es del tipo 1, ya que la producción abA →baab no es sensible al contexto. Lo sería si fuese abA →abab. Propiedades de las gramáticas de tipo 1 Propiedad de no decrecimiento Las cadenas que se obtienen en cualquier derivación de una gramática de tipo 1 son de longitud no decreciente, es decir : α→β ⇒ | β |≥| α | y que se puede enunciar como la longitud de la parte derecha de la producción es mayor o igual a la de la parte izquierda. La demostración es inmediata. Si se define una producción de un lenguaje tipo 1 como : αAβ→αγβ siendo γ ∈ (VN𝖴VT)+, es decir γ nunca puede ser la cadena vacía, lo que implica que | γ |≥ 1 y como | A | como mínimo vale 1, queda demostrada la propiedad : | α A β | ≤| α γ β | Ejemplo 7 Sea la gramática G = ({S,B,C}, {a,b,c}, S, P) donde P son las producciones : S →aSBC S →aBC CB →BC bB →bb bC →bc cC →cc aB →ab La gramática anterior no es de tipo 1 según la definición dada, ya que la regla CB → BC no respeta el contexto. Sin embargo puede apreciarse que todas las reglas de esta gramática son no decrecientes, por lo tanto es posible encontrar una gramática equivalente que genere el mismo lenguaje. Se puede sustituir la regla CB → BC por : CB → XB XB → XY XY → BY BY → BC Puede observarse que ambas gramáticas son equivalentes y que generan el lenguaje : L(G) = { an bn cn / n ≥ 1 } Gramática tipo 2 Características o Generan los lenguajes independientes del contexto. o Maquinas que lo aceptan son autómata de pila. Gramáticas tipo 2 ➢ Las reglas de estas gramáticas se ajustan al siguiente esquema: A ::= v donde v ϵ ∑*, y A ϵ ∑N En concreto v puede ser λ. ➢Para toda gramática de tipo 2 existe una gramática equivalente desprovista de reglas de la forma A ::= λ, que generará el mismo lenguaje que la de partida, excepto la palabra vacía. Si se le añade a la segunda gramática la regla S ::= λ, las gramáticas generarán el mismo lenguaje. ➢Por lo tanto, se pueden definir las gramáticas de tipo 2 de una forma más restringida, en el que las reglas de producción tendrán la siguiente forma A ::= v donde v ϵ ∑+, y A ϵ ∑N . Además podrán contener la regla S ::= λ ➢Los lenguajes generados por este tipo de gramáticas se denominan independientes de contexto, ya que la conversión de A en v puede realizarse independientemente del contexto en que aparezca A. Gramáticas tipo 2 ➢La mayor parte de los lenguajes de programación de ordenadores pueden describirse mediante gramáticas de este tipo. Ejemplo : sea la gramática G = ({a, b}, {S}, S, { S ::= aSb | ab}). Es una gramática de tipo 2. La derivación de la palabra aaabbb será: S → aSb → aaSbb → aaabbb Puede verse que el lenguaje definido por esta gramática es {anbn | n=1, 2, ...} ➢Un mismo lenguaje puede generarse por muchas gramáticas diferentes. Sin embargo, una gramática determinada describe siempre un lenguaje único. Ejemplo 1 La gramática G = ({S,A,B}, {a,b}, S, P) cuyas producciones P se muestran a continuación es de tipo 2. S →aB A →bAA S →bA B →b A →a B→bS A →aS B →aBB Ejemplo 2 La gramática G = (VN, VT, S, P) donde VN = { <número> , <dígito> }; VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; S = <número> y las reglas de producción P que se muestran a continuación es de tipo 2. <número> ::= <dígito> <número> <número> ::= <dígito> <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Gramática tipo 3 Características o También llamadas de contexto regular. o Maquinas que lo aceptan son autómata finito, determinista o no determinista. Gramáticas tipo 3 Estas gramáticas se clasifican en los dos grupos siguientes: •Gramáticas lineales por la izquierda, cuyas reglas de producción pueden tener una de las formas siguientes: A ::= a A ::= Va S ::= λ donde a ϵ ∑T , A, V ϵ ∑N, y S es el axioma de la gramática. • Gramáticas lineales por la derecha, cuyas reglas de producción tendrán la forma: A ::= a A ::= aV S ::= λ donde a ϵ ∑T , A, V ϵ ∑N, y S es el axioma de la gramática. • Los lenguajes representados por este tipo de gramáticas se denominan lenguajes regulares. Gramáticas tipo 3 ➢ G1 = ({ 0, 1}, {A, B}, A, { A ::= B1 | 1, B ::= A0}) Gramática lineal por la izquierda que describe el lenguaje: L1 = { 1, 101, 10101, ... } = {1(01)n | n = 0, 1, 2, ...} ➢ G2 = ({ 0, 1}, {A, B}, A, { A ::= 1B | 1, B ::= 0A}) Gramática lineal por la derecha que genera el mismo lenguaje que la gramática anterior. EN RESUMEN 79 EN RESUMEN Gramática Tipo 3 Lenguajes Regulares Tipo 2 Libres de Contexto (Context Free) Tipo 1 Dependiente del contexto Lenguaje {𝒂𝒏 , 𝒏 ≥ 𝟏} {𝒂𝒏 𝒃𝒏 , 𝒏 ≥ 𝟏} {𝒂𝒏 𝒃𝒏 𝒄𝒏 , 𝒏 ≥ 𝟏} Reglas A=aA S=aSb Cc=Vcc Autómata Finito Autómata Determinístico AFD Autómata a Pila AP Autómata Linealmente Acotado Análisis Análisis Sintáctico Tabla de Símbolos Análisis Léxico Tipo 0 Sin restricciones Todas las anteriores Maquina de Turing Recuerda RA 1 Actividad 1 RA 2 Test RA 3 Actividad 2 muchas gracias Esta nueva plantilla se ajusta al nuevo logo de la fundación