LENGUAJES , GRAMATICA Y AUTÓMATAS

18
LENGUAJES , GRAMATICA Y AUTÓMATAS. INTRODUCCIÓN I Fundamentos de Computación II

Transcript of LENGUAJES , GRAMATICA Y AUTÓMATAS

Page 1: LENGUAJES , GRAMATICA Y AUTÓMATAS

LENGUAJES , GRAMATICA Y AUTÓMATAS.

INTRODUCCIÓN

I

Fundamentos de Computación II

Page 2: LENGUAJES , GRAMATICA Y AUTÓMATAS

Conceptos y Relaciones

Toda comunicación involucra la utilización de un lenguaje. Así, por ejemplo, las personas se

comunican con el resto en los diferentes idiomas (lenguajes naturales) o con las máquinas

(lenguajes artificiales) a través de conjuntos de símbolos.

Lenguaje:

Conjunto de palabras, también llamadas cadenas o sentencias, que están formadas por

símbolos de un alfabeto. Los símbolos normalmente son letras (a,…z), dígitos (0,…9) y

otros caracteres (+,-,?..). También pueden estar formado por varias letras o caracteres

como por ejemplo, las palabras reservadas de un lenguaje de programación (begin, end,

else, etc.)

Gramática:

Se refiere a la estructura de un lenguaje, es decir, de las sentencias que lo forman,

proporcionando las formas válidas en que se pueden combinar los símbolos del alfabeto.

En el caso del español, las oraciones deben ajustarse a una gramática.

Page 3: LENGUAJES , GRAMATICA Y AUTÓMATAS

Lenguajes formales:

Obedecen a reglas preestablecidas y se ajustan a ellas, no evolucionan y han sido

creados para un fin especifico. Ejemplo: los lenguajes de programación.

Los lenguajes naturales:

Utilizados por el hombre y las reglas gramaticales que rigen su estructura han sido

desarrolladas con posterioridad para explicar esta última. Ejemplo: lenguaje inglés,

español, etc.

Lenguajes formales y naturales

Page 4: LENGUAJES , GRAMATICA Y AUTÓMATAS

Un poco de historia

El primer trabajo que desarrollo teorías formales sobres gramáticas y lenguajes fue

Chomsky (1928) quien desarrollo teorías sobre el origen y la naturaleza de los lenguajes

naturales.

En el campo de la informática, el concepto de gramática formal adquirió importancia para

la especificación de lenguajes de programación. Con las teorías de Chomsky se definió la

sintaxis del lenguaje ALGOL 60 usándose gramática libre de contexto. Esto llevó al diseño

riguroso de algoritmos de traducción y compilación.

La teoría de lenguajes formales es de gran utilidad en otros campos de la informática

como por ejemplo en informática teórica, inteligencia artificial, procesamiento de

lenguajes naturales y reconocimiento del habla.

La teoría de los lenguajes y gramáticas formales tiene una relación directa con la Teoría de

autómatas, siendo posible establecer entre ambas una correspondencia llamada en

Algebra isomorfismo.

Page 5: LENGUAJES , GRAMATICA Y AUTÓMATAS

La teoría de los autómatas proviene del campo de la ingeniería eléctrica.

El científico Shannon publicó varios trabajos donde mostraba las bases para la aplicación

de la lógica matemática a los circuitos combinatorios y secuenciales.

En las décadas siguientes las ideas de Shannon se desarrollaron dando lugar a la Teoría

de Autómatas.

¿Que son los autómatas?

Los autómatas son sistemas que reciben información, la transforman y producen otra

información que trasmite al entorno.

Page 6: LENGUAJES , GRAMATICA Y AUTÓMATAS

Notaciones

Conjunto: {x / ... } significa el conjunto de los x tales que …

Pertenencia: x ∈ ∑ significa que el elemento x pertenece al conjunto ∑

Inclusión: C ⊂ C' significa que el conjunto C es un subconjunto del C’

Cardinalidad: | C | representa el número del conjunto C

Unión de conjuntos: C U C’ significa la unión de los conjuntos C y C'.

Intersección de conjuntos: C ∩ C' , significa la intersección de los conjuntos C y C'.

Simplificación de notación de elementos de conjunto: a .. z ó a, . ... z .significa todas las

letras entre a y z.

Aplicación entre conjuntos: f : E1 X E2 X . .. x En S1 X S2 X ... X Sm significa que la función f

(aplicación) está definida entre los conjuntos Ei y los conjuntos Sj.

También se puede entender desde el punto de vista computacional como que recibe a la

entrada un elemento de cada uno de los conjuntos Ei y genera como salida un elemento de

cada uno de los conjuntos Sj.

Page 7: LENGUAJES , GRAMATICA Y AUTÓMATAS

Alfabeto: conjunto no vacío y finito de elementos. Para definir que un elemento pertenece o

no aun alfabeto se utiliza el símbolo ∈. Los alfabetos se definen por enumeración de los

símbolos que lo contienen. Por ejemplo:

V1 = { A,B,C, …Z}

V2= {a, b, c, 0, 1…+,-}

V3={0,1}

V4={ if, then, begin, end, else, a, b, :, =, >}

Símbolos y Alfabetos

NOTACION

ELEMENTOS Letras, símbolos o

caracteres

V ó ∑

Símbolo o carácter: es el elemento constructivo básico, es la entidad fundamental, indivisible

a partir de la cual se forman los alfabetos. Ejemplos: a,…z, 0,…9 ,+,-,?.. end, else, etc.)

También se puede definir las tablas ASCII y EBCDIC como los alfabetos de distintos ordenadores

Page 8: LENGUAJES , GRAMATICA Y AUTÓMATAS

La letra a es un símbolo que forma parte del alfabeto español, del alfabeto inglés, del

alfabeto francés, etc.

Los símbolos >, = y & son elementos del alfabeto de operadores del lenguaje C.

El alfabeto ∑ = {0,1} proporciona los caracteres utilizados en la construcción de números

binarios

Los símbolos gráficos , , y representan entidades que pueden ser elementos de

diferentes alfabetos gráficos.

Los símbolos if, for y while forman parte del alfabeto de palabras reservadas del lenguaje C

Los números enteros con signo en base 10 se construyen con símbolos del siguiente

alfabeto: ∑ = {0,1,2,3,4,5,6,7,8,9.-,+}

Ejemplos

Page 9: LENGUAJES , GRAMATICA Y AUTÓMATAS

V = {a,b,c} alfabeto formado únicamente por las símbolos a,b,c

V= {0,1,2,3,4,5,6,7,8,9} alfabeto formado por los dígitos del 0 al 9. No se puede armar

el 10 como una letra debido al concepto de alfabeto. (yuxtaposición)

V= {x, y, 0, 1, +, -, *, /} alfabeto formado por otros caracteres, símbolos y números.

∑ = {0,1} alfabeto formado únicamente por el cero y el uno

El código ASCII proporciona la representación interna de los caracteres que

constituyen el alfabeto mas utilizado en computación.

Page 10: LENGUAJES , GRAMATICA Y AUTÓMATAS

Palabra hilera o cadena: es una secuencia finita de caracteres colocados uno a

continuación de otro y tomados de un cierto alfabeto. Una cadena se construye

concatenando caracteres de un alfabeto dado. String es sinónimo de cadena de caracteres.

PALABRA

HILERA O CADENA

Secuencia finita de letras

CH es una palabra porque es una secuencia de dos letras.

abac es una cadena formada con caracteres del alfabeto {a,b,c}

10011101 es una cadena construida con caracteres del alfabeto {0,1}

a es una cadena formada por un solo símbolo de cualquier alfabeto que contenga el carácter a

Cadenas

Ejemplos:

NOTA: recordar la diferencia entere ‘a’ y “a”. Es la misma diferencia que existe entre un

carácter de un alfabeto y una cadena compuesta por ese solo carácter.

Page 11: LENGUAJES , GRAMATICA Y AUTÓMATAS

V1 = { A,B,C, …Z}

V2= {a, b, c, 0, 1…+,-}

V3={0,1}

V4={ if, then, begin, end, else, a, b, :, =, >}

abcd

a+2*b

000111

if a > b then b=a;

ZAJK

Ejercicio: Indicar a que alfabeto pertenecen las siguientes cadenas:

Page 12: LENGUAJES , GRAMATICA Y AUTÓMATAS

Longitud de una cadena

La longitud de una cadena S se representa como |S| y es la cantidad de caracteres que la

componen.

La longitud de la cadena abac es : |abac|= 4

La longitud de la cadena b es : |b|= 1

|a+2*b|=

|000111|=

|if a>b then a=b;|=

Cadena vacía

No tiene símbolos y se denota con la letra griega λ o ε

La longitud de la cadena vacía es de longitud 0.

NOTACION: | λ |= 0

Page 13: LENGUAJES , GRAMATICA Y AUTÓMATAS

Concatenación de cadenas

La operación de concatenación aplicada a cadenas (S1 • S2) produce una nueva cadena por

yuxtaposición de caracteres. La concatenación se puede escribir sin utilizar el operador •

(S1 • S2) = (S1 S2) .

La concatenación se puede extender a más de una cadena: (S1 S2 S3).

Ejemplos:

Sean las cadenas S1 = aab y S2 = aba entonces S1 S2 = aababa

Concatenación de tres cadenas (ab) • (ba) • (aab) = abbaaab

NOTA: la concatenación NO es conmutativa salvo en casos muy especiales

a • b = ab mientras que b • a = ba. Como ab != ba se prueba que la concatenación no es conmutativa.

Si los strings son idénticos, entonces la concatenación si es conmutativa.

Page 14: LENGUAJES , GRAMATICA Y AUTÓMATAS

Si la primer cadena es ab y la segunda cadena también es ab entonces:

ab • ab = ab • ab = abab

Otro caso de conmutatividad se da cuando ambas cadenas están compuestas por la repetición

del mismo carácter:

Sea S1 = aa y sea S2 = aaa. Entonces S1 S2 = a 2 a 3 = a 2+3 =a 5 y S2 S1 = a 3 a 2 = a 3+2 = a 5.

En consecuencia S1 S2 = S2 S1 = a 5 = aaaaa.

La cadena vacía λ es la identidad para la concatenación: para cualquier cadena S, S.λ = λ.S = S

Potenciación de una cadena

Si S es una cadena, entonces S n ( con >=1 y entero) representa la cadena que resulta de

concatenar la cadena S consigo misma, n-1 veces.

Por lo tanto, S 1 = S, S 2 = SS ,S 3 = SSS, etc.

NOTA: S 0 es λ - cadena vacía - para cualquier cadena S.

Ejemplo:

Page 15: LENGUAJES , GRAMATICA Y AUTÓMATAS

Simplificación: la potenciación de un símbolo

Hay veces en que una cadena contiene caracteres que se repiten un numero determinado

de veces. Ejemplo:

La cadena aaaaabbbbbbb construida sobre el alfabeto {a,b} esta formada por cinco aes

concatenadas con siete bes.

La potenciación de un símbolo simplifica la escritura de cadenas:

Sea c un carácter cualquiera, entonces c n representa la concatenación del carácter c

consigo mismo, n-1 veces. Por lo tanto c 1 = c, c 2 = cc, c 3 = ccc, etc

El operador supraíndice utilizado para potenciar un símbolo indica el número de veces

que aparece el símbolo “potenciado”.

Ejemplo: la cadena aaaaabbbbbbb puede escribirse sintéticamente como a 5 b 7 para

lograr una mayor comprensión de la cadena.

La cadena aaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbb es a 30 b 22.

Page 16: LENGUAJES , GRAMATICA Y AUTÓMATAS

Ejemplos

Sea S = ab, entonces S 3 = SSS = (ab) 3 = ababab

NOTA: observe la diferencia entre la cadena (ab) 3 y la cadena ab 3: el string (ab) 3 representa

la cadena ababab, mientras que ab 3 es la cadena abbb.

(abc) 0 = (1234) 0 = λ ¿Por qué?

Caso particular: λ n = λ para cualquier valor entero de n>=0

Prefijo, Sufijo y Subcadena

Un prefijo de una cadena es una secuencia de caracteres iniciales de esa cadena.

Un sufijo de una cadena es una secuencia de caracteres finales de esa cadena.

Una subcadena de una cadena es una secuencia de caracteres que se obtiene eliminando

uno o más caracteres iniciales y uno o mas caracteres finales de esa cadena.

Page 17: LENGUAJES , GRAMATICA Y AUTÓMATAS

Ejemplo:

Sea la cadena abcd

Sus prefijos son : a, ab, abc

Sus sufijos son: d, cd, bcd

Sus subcadenas son: b, c, bc

Resumen

Un símbolo o carácter es el elemento constructivo básico

Un alfabeto es un conjunto finito de símbolos

Una cadena es una secuencia finita de símbolos o una concatenación de símbolos

La longitud de una cadena es la cantidad de símbolos que la componen

La cadena vacía λ es la cadena de longitud 0

Page 18: LENGUAJES , GRAMATICA Y AUTÓMATAS

La potencia de un símbolo simplifica la escritura y la comprensión

La concatenación de dos cadenas produce una nueva cadena cuya longitud es la suma

de las longitudes

En general, la concatenación no es conmutativa

La cadena vacía es la identidad para la concatenación

La potencia de una cadena simplifica la escritura y la comprensión