INTRODUCCIÓN

 Introducción
 Los modelos abstractos de cómputo
 Palabras y Lenguajes
 Palabras
 Operadores sobre palabras
 Predicados sobre palabras
 Lenguajes
 Operadores sobre lenguajes
Gramáticas
a át cas y Autómatas
utó atas
 G
 La gramática de los programas while
 El autómata de los números reales
LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN

18

INTRODUCCIÓN: Objetivos

Establecer
bl
algunos
l
convenios necesarios para ell
desarrollo de la asignatura.
Dominar los conceptos básicos de palabra y
lenguaje, manejando con soltura sus operaciones.
Introducir la necesidad de mecanismos de
especificación de lenguajes.
Tomar un primer contacto con dos herramientas
importantes: gramática y autómata.

LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN

19

ORDENADOR

MODELO ABSTRACTO
DE COMPUTO

INFORMACIÓN

LENGUAJES FORMALES

Símbolos
Alfabetos
Palabras
Lenguajes

LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN

20

Concepto de lenguaje

Lenguaje
Natural
Lenguaje
Formal

Sistema más o menos complejo que asocia
contenidos de pensamiento y significación a
manifestaciones simbólicas tanto orales como
escritas
Por extensión:

Capacidad
p
humana para
p
comunicarse mediante lenguas
g
Mecanismos de comunicación no humanos (abejas,
delfines, ...)
C d con fines
Creados
fi
específicos
ífi
(programación,
(
ió lógica,
ló i
matemáticas, ...)

LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN

21

i o lo l hacen h con métodos ét d preestablecidos LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 23 . Comparten:    conjunto j t bi bien definido d fi id de d símbolos í b l (alfabeto) ( lf b t ) son (potencialmente) infinitos: no tiene sentido definirlos por extensión Pero el lenguaje natural:      Sinonimia. polisemia y ambigüedad Desarrollo por enriquecimiento progresivo (la teoría viene después) Mecanismos imprevistos de ampliación del lenguaje Componente semántico muy rico y expresivo IMPOSIBLE DE FORMALIZAR EN SU TOTALIDAD LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN     22 Se desarrollan a partir de una teoría establecida M j que la Mejor l semántica á ti no dependa d d del d l contexto t t Ámbito semántico reducido N se pueden No d enriquecer.

.. c} Σ6 = {0. {0 1. 9... В Г... entonces ws también es una palabra sobre  Definición ind cti a inductiva LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 25 . {a b... 9 A...‫ ث‬. 2 . b.‫ ت‬.. c . b c.   La unidad básica de todo lenguaje será la palabra o cadena de símbolos Las palabras se forman como secuencias ordenadas de símbolos (o caracteres) a partir de un alfabeto Un alfabeto siempre es finito y no vacío: Σ1 = {a. F} Σ5 = {a.. 1} Σ7 = ASCII Σ8 = UTF-8 UTF 8 LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 24 Definición de palabra En lenguaje natural: dado un alfabeto :  Palabra P l b (o ( cadena) d ) es toda t d secuencia i ordenada d d y finita de símbolos de Σ  Para cualquier alfabeto existe la palabra vacía... A . Б В. Г Я} Σ3 = {‫ى‬ .‫ ب‬.‫ا‬ } Σ4 = {0. z} Σ2 = {А.. {А Б. 1 2.. vacía que no contiene ningún símbolo y que denominamos ε Definición formal: dado un alfabeto :   es una palabra (secuencia de 0 símbolos)  si w es cualquier palabra sobre  y s..

aca acb. 010. 110. aaa aab. 11. 0. 00.Ejemplos de palabras Dado el alfabeto  = {a.. 111. acc . } ∆* = {{ε. 110. c}   ε. . abc aca. abb abc. 0000... bb. 100. 010. NO.. 0010. cc. cb. 111111111111. 01.. 0001. b. a. c. aac aba... 10.. aaba. 101... b... 1. ca.. ba. 1. b. cbbbbbbc. 000. 0ε00000101010ε101010 son palabras LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 26 Todas las palabras sobre un alfabeto   Clausura del alfabeto: * conjunto de todas las palabras sobre el alfabeto  Ejemplos l (en ( orden d lexicográfico): l i áfi ) Σ* = {ε. aaa.. bbbbbbbbaccbbbbbbbbca.. ε no es símbolo. 001. bc. aa. ab.. 011. aba abb. babbba . 1}   ε. son palabras Dado el alfabeto ∆ = {0.. acb acc. 0000101. aab aac. ac. 100. } LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 27 .

b. y. 100. 111. cc aaa.c}* x[1] a x[1]=a x[2]=x[3]=b [ ] x[4]=c LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 29 . b c. 1. aab.. } LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 28 Notación a utilizar  Palabras: u. cb cc. w. aba. . ca cb. 110. acb. {a b. abb. 000. 011. aa ab. 001. aca. 010. abc. 0010. . 11. c aa. 10. bb bc. } ∆+ = {0.. ac ba. aac. t  Símbolo i-ésimo de una palabra: x[i] x = abbc ∈ {a.. 01. v. x. 101. bc ca. 0001. 00. z  Símbolos: s. acc.Todas las palabras sobre un alfabeto salvo la palabra vacía   Clausura positiva del alfabeto: + conjunto de todas las palabras sobre el alfabeto  excepto  Ejemplos (en orden lexicográfico): Σ+ = {a. 0000. ab ac.. ba bb.

.. con n>0 y ∀i (1≤i≤n → si∈Σ) entonces ||x|| = n  Si x=ℇ entonces |x| =0 30 LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN Longitud de una palabra (2) |x|  Definición inductiva: Sea Σ un alfabeto y x∈Σ* ∀w∈∑*..sn. x∈Σ x∈Σ*. ∀s∈∑  x = ε ⇒ |x| = 0  x = ws ⇒ |x| = |w|+1 LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 31 .  si x = s1s2s3.Longitud de una palabra |x|    (1) Es ell número ú de d caracteres que contiene i (siendo ( i d 0 la l longitud de ε) D Descripción i ió gráfica: áfi Descripción algebraica:  Dados Σ alfabeto.

. Potencia P t i n-ésima é i de d x denotada d t d por xn y es la l palabra l b que resulta de concatenar x consigo misma n veces Inversa de x que denotamos xR y es la la palabra que resulta de tomar los símbolos de x en orden inverso LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 33 ... x..snt1t2t3. con m≥0 y ∀j (1≤j≤m → tj∈Σ)  entonces x•y = s1s2s3.sn. ∀s∈∑  s si y = ℇ ⇒ x•y y=x  si y = ws ⇒ x•y = x•ws =( x•w)s Descripción algebraica:  Dados Σ alfabeto.. x.tm LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 32 EJERCICIO: define las siguientes operaciones con palabras    Número de apariciones de un símbolo t en x se denota |x|t es el número de veces que aparece el símbolo t en la palabra palab a x. con n≥0 y ∀i (1≤i≤n → si∈Σ)  si y = t1t2t3. y* ∀w∈∑*..tm.Concatenación de dos palabras x•y    Palabra que resulta de colocar los símbolos de y a continuación de los de x. Definición inductiva: Sean  un alfabeto..y∈Σ*  si x = s1s2s3..

. x*. ∀s∈∑ ∀w∈∑  si x =  ⇒ |x|t = 0  si x = ws con s ≠ t ⇒ |x|t =|w|t  si x = wt ⇒ |x|t =|w|t+1 Descripción p algebraica: g  Dados Σ alfabeto. n≥0  si n = 0 ⇒ xn =  k 1 = xk•x  si n = k+1 k ⇒ xn = xk+1 Descripción gráfica: LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 35 .•yn. siendo ∀i (1≤i≤n+1 → zi∈Σ*)  e entonces o ces ⇒ ||x||t = n LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 34 Potencia de una palabra xn   Definición inductiva: Sean  un alfabeto. t. t.•znt•zn+1. x* ∀w∈∑*. ∀i (1≤i≤n → yi∈Σ*)  pero no es posible x = z0t•z1t•z2t•.. x*. n≥0  si x = y0t•y1t•y2t•...Número de apariciones de un símbolo |x|t   Definición inductiva: Sean  un alfabeto.

. x∈Σ*  si x = s1s2s3..s1  LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 36 EJERCICIO: define las siguientes operaciones con palabras  Primer símbolo de una palabra x se denota primero(x)  Ú Último símbolo de una palabra x se denota último(x)   cola(x) es la palabra que resulta de quitar de x su primer símbolo cabeza(x) es la palabra que resulta de quitar de x su últi último símbolo í b l LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 37 .. x* ∀w∈∑*.sn. ∀s∈∑  si x =  ⇒ si xR =   si x = ws ⇒ xR = s•wR  Descripción algebraica:  Dados Σ alfabeto.. con n≥0 y ∀i (1≤i≤n → si∈Σ)  entonces xR = snsn-1sn-2..Inversa de una palabra xR Definición inductiva Sean  un alfabeto.

∀v*. Definición algebraica: g  lgpar?(x) ⇔ |x| mod 2 = 0 Ejercicio: medio1?(x). ∀x*. ∀y*  x⊑Sy ⇔ ∃z∈Σ ∃z∈Σ*(y=z•x) (y=z•x) Definición inductiva: ∀s∈Σ. doblecero?(x) LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 42 Sufijo S fij d de una palabra l b x⊑sy ó sufijo(x. ∀s∈∑  eentonces to ces lgpar?(x) gpa ( ) = true t ue  ssi x =  si x = ws entonces false  lgpar?(w)    si w =  c.c.Predicados: funciones con resultado booleano lgpar?(x) es cierto si la longitud de la palabra x es par   Definición inductiva: ∀w∈∑*.y)    Los símbolos de x coinciden con los últimos símbolos de y Caracterización lógica: Sean  un alfabeto. ∀t∈Σ. ∀w*  ε⊑ ⊑Sε ⇔ true t  ε⊑Sws ⇔ true  vt⊑Sε ⇔ false  vt⊑Sws ⇔ t=s ∧ v⊑Sw LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 46 .

∀v. ∀y*  x⊑y ⇔ ∃z.u∈Σ*(y=z•x•u) ∃z u∈Σ*(y=z•x•u) Definición inductiva: Σ alfabeto. ∀t∈Σ.y)     Los símbolos de x coinciden con una parte de los símbolos de y Caracterización lógica:  alfabeto. ∀u. ∀v*. ∀y*  x⊑py ⇔ ∃z∈Σ ∃z∈Σ*(y=x•z) (y=x•z) Otra caracterización lógica:  x⊑ ⊑py ⇔ xR⊑Sy R LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 47 Subpalabra S b l b de d una palabra l b x⊑y ó subpalabra(x.∀y *  u⊑u  u⊑v ⇔ u⊑x•v•y LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 48 .Prefijo P fij d de una palabra: l b x⊑py ó prefijo(x. ∀w*  ε⊑ε ⇔ ε⊑Sws ⇔ true t  vt⊑ε ⇔ false  vt⊑ws ⇔ ( t=s ∧ v⊑Sw)∨ vt⊑w Otra definición inductiva: Σ alfabeto. ∀x *. ∀s∈Σ. ∀x*.∀x.y)    Los símbolos de x coinciden con los primeros símbolos de y Caracterización lógica: Sean  un alfabeto.

∀w * error no está definido  | x |ℇ error. ∀t∈Σ. 010  0.Apariciones Apa iciones de una na palabra palab a en otra ot a |x|y   Es el número de apariciones de una palabra no vacía y en otra x como subpalabra Definición inductiva: Σ alfabeto. 1  L7 ii) xL7 L7 ⇒ x2L7 L7 LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 50 . 0 1: |x| | |0≥ |x| | |1   L7: i) 00. 1  L4 = x  0. 11. ∀s. ∀v. 1  L2 =     0. 1}  L6 = x  0.  | ℇ|ws = 0  t=s ∧ w⊑Sv ⇒ |vt|ws =|v|ws+1  ¬(t=s ( ∧ w⊑Sv)) ⇒ ||vt||ws =|v| | |ws LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 49 LENGUAJE SOBRE UN ALFABETO : L   Un lenguaje es cualquier conjunto de palabras sobre ell alfabeto lf b t  L1 =   0. 0 1: |x| | | mod d 2 = 0  L5 = {00y: y 0. 0 1  L3 = 00.

0011.Métodos de definición de lenguajes   Lenguajes finitos  Por extensión: listando sus palabras  A veces no es razonable o posible  Palabras sobre {0. 01. … }  Descripción estructural { 0n1n: n≥0 } Definición algebraica  { x∈{0.1}* : |x|0= |x|1 ∧ |x|10= 0 }  { x∈{0. 000111.z (x=y●z ∧ |y| = |z| ∧ |y|1= |z|0 = 0    Definición inductiva  ∈L  x∈L ⇒ 0x1∈L LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 52 .1} de longitud menor que 60 Lenguajes g j infinitos  Métodos similares a los indicados antes  Lenguaje g j natural  Caracterización lógica  Inductiva  … LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 51 Distintas definiciones de un lenguaje Palabras cuya primera mitad está formada por 0’s y la segunda por 1’s  Enumeración de palabras (inapropiada)  { ε.1}* : ∃y. 00001111.

L1 y L2 lenguajes cualesquiera sobre un alfabeto   Unión de lenguajes: L1  L2 = x: xL1  xL2  Intersección de lenguajes: L1  L2 = x: xL1  xL2  Complementario de un lenguaje:  Diferencia de lenguajes: L1 .Distintas definiciones de un lenguaje Palabras cuya primera mitad está formada por 0’s y la segunda por 1’s  Basándose en lenguajes más simples ( { 0n: n≥0 } ● { 1n: n≥0 } ) ∩ { x∈{0.1}*: |x|0= |x|1 } LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 53 OPERACIONES CONJUNTISTAS DE LENGUAJES SOBRE UN ALFABETO  Un lenguaje es cualquier conjunto de palabras sobre el alfabeto Sean L.L2 = x: xL1  xL2 = L1  L2 L = x: xL LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 54 .

OTRAS OPERACIONES DE LENGUAJES Inversión de un lenguaje  LR = xR: xL  Concatenación de lenguajes L1 • L2 = x: yL1zL2(x y ( =y y•z) )  Potencia de un lenguaje 0  L =  n+1  L = Ln•L  LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 58 OTRAS OPERACIONES DE LENGUAJES  Clausura y clausura positiva de un lenguaje *  L =n Ln 0    L*  x L*  w L xw  L* n L+ = n 0 L   w L  w  L+  x L+  w L xw  L+ LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 62 .

1} : |x|0= |x|1  |x|10= 0}  Operaciones sobre lenguajes más simples {0} {1}  {x{0.1} : |x|0= |x|1} LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 66 . 0011 000111. 000111 00001111 00001111. …}}  Descripción estructural {0n1n: n0} INSUFICIENTE  Propiedades de las palabras {x{0. 01 0011.OPERACIONES DE LENGUAJES Orden de precedencia de operadores 1º) Operaciones unarias 2º) Operaciones binarias Concatenación Operaciones conjuntistas * L1  L2 * L1  L2 * * L1  L2 * (L1  L2) * L1  L2 * L1  L2 * * L1  L2 * (L1  L2) LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 65 DESCRIPCIÓN DE LENGUAJES  Lenguaje natural P l b Palabras cuya primera i mitad it d está tá formada f d por 0’s 0’ y la l segunda d por 1’s 1’  Enumeración de palabras { 01. {.

¿Qué es un ordenador?  Procesador  Memoria  Dispositivos I/O LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN Modelos formales de cómputo Modelo Transductor Botón de accionamiento Salida Entradas Asocia una salida a cada entrada Botón de accionamiento Modelo M d l R Reconocedor d o aceptador Entrada Salida True (acepta la entrada) False (rechaza la entrada) Asocia un booleano a cada entrada LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 68 .

Equivalencia de los modelos: Ejemplo x + y z con z = x+y + Modelo que suma números en binario ¿Existe algún algoritmo para realizar este cálculo usando un modelo aceptador? LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 69 Equivalencia de los modelos: Ejemplo Botón de accionamiento Salida Entrada x+y=z True=acepta la l entrada d M False=rechaza la entrada ¿ Cómo saber la respuesta a 1000+11= ? Haciendo comprobaciones ENTRADAS SALIDA 1000+11=0 false 1000+11=1 false 1000+11=10 1000+11 10 false 1000+11=1011 true LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN La suma de 1000 y 11 es 1011 70 .

10+11=101.MODELOS RECONOCEDORES LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 71 OTROS MODELOS DE CÓMPUTO Modelo Generador Produce salidas Botón de accionamiento Salida ¿ Cómo saber la respuesta a 1000+11= ? Comprobando si es salida SALIDAS 1+1=10. 0+1=1. 0+0=1. … LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 72 .

JERARQUÍA DE CHOMSKY GRAMÁTICAS Á Generales TODOS LOS LENGUAJES LENGUAJES Independientes de contexto RECURSIVAMENTE ENUMERABLES LENGUAJES Regulares INDEPENDIENTES DE CONTEXTO AUTÓMATAS De Turing Con Pila Finitos LENGUAJES REGULARES LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 73 JERARQUÍA DE AUTÓMATAS LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 74 .

<pw>) No terminales N = {<pw>.3. p . .<if>. ( . es 0? if. .8. . )} LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 76 .:=.4. no no-es-0?.2.AUTÓMATA PARA LOS REALES LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 75 GRAMÁTICA DE LOS PROGRAMAS WHILE Esta gramática define las expresiones sintácticamente correctas g While sobre los naturales. P. if then then. end loop X.9.<while>. while loop. }   Terminales  = {suc.<var>} { p . while. {suc pred pred. 0. end if end_loop.<asig>.1. de los Programas G=(N. g .6. loop end_if. . .5.<comp>.7.

GRAMÁTICA DE LOS PROGRAMAS WHILE Conjunto P de producciones            <pw>  <asig> <pw>  <comp> <pw>  <if> <pw>  <while> <asig> g  <var>:=0. <while>  while no-es-0?(<var>) loop <pw>end loop. <asig> := suc ( <var> ) . <asig>  <var>:=pred(<var>).        LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN <var>  X0 <var>  X1 < <var> >  X2 <var>  X3 <var>  X4 <var>  X5 <var>  X6 <var>  X7 <var>  X8 <var> X9 <var><var>0 <var><var>1 <var><var>2 <var><var>3 <var><var>4 <var><var>5 <var><var>6 <var><var>7 <var><var>8 <var><var>9 77 GRAMÁTICA DE LOS PROGRAMAS WHILE <pw> <comp> <pw> <pw> <while> while no-es-0? ( <var> ) <asig> loop X1 <var> X2 <pw> <var> end loop. := pred <var> 5 ( <var> ) . X3 X4 X2 LENGUAJES COMPUTACIÓN Y SISTEMAS INTELIGENTES– INTRODUCCIÓN 78 . X45:=pred(X3). end loop p.. <comp>  <pw><pw> <if>  if no no-es-0?(<var>) es 0?(<var>) then <pw>end if. <asig> <var>:=suc(<var>).            ¿Programa correcto?  while no-es-0?(X1) loop X2:=suc(X2).