Академический Документы
Профессиональный Документы
Культура Документы
Elvira Mayordomo
Noviembre 2003
DEPARTAMENTO DE INFORMATICA E
INGENIERIA DE SISTEMAS
Tema 1: Expresiones regulares
hDefinición
hEjemplos
hNotaciones
1-1
Bibliografía de los temas 1, 2 y 3
1-2
Expresiones regulares. Definiciones
alfabeto
conjunto finito de símbolos
ejemplos
{0,1}, letras y dígitos
ejemplos
0010
estadoInicial
v_0
1-3
Expresiones regulares. Definiciones
longitud de una cadena
número de símbolos que la componen
ejemplos
|hola| = 4
|123456| = 6
ε = 0 (cadena vacía)
lenguaje
dado un alfabeto, cualquier conjunto de cadenas
formadas con dicho alfabeto
ejemplo
1-4
Expresiones regulares. Definiciones
c1c2=holaColega
– ε es el neutro, tando a derecha como a izquierda:
εc = cε = c
– c0=e, c1=c, c2=cc, c3=ccc,....
hterminología
– prefijo, sufijo
– subcadena
1-5
Expresiones regulares. Definiciones
unión de lenguajes
L∪ M = {c|c ∈ L ó c ∈ M}
concatenación de lenguajes
L M = {st|s ∈ L y t ∈ M}
1-6
Expresiones regulares. Definiciones
potencia de un lenguaje
L0 = {ε} L1 = L
Li = L Li-1 para i>1
L* = ∪
∞
i=0
Li L* = ∪∞
i=1
Li
1-7
Expresiones regulares. Definiciones
1-8
Expresiones regulares. Definiciones
Sea Σ un alfabeto
expresión regular
1) ε es la expresión regular cuyo lenguaje es L(ε)={ε}
2) Si a∈Σ, a es la expresión regular cuyo lenguaje
es L(a)={a}
3)Sean r,s exp. reg. con lenguajes L(r) y L(s)
(r)|(s) es la exp. reg. cuyo lenguaje es L(r) ∪ L(s)
(r)(s) es la exp. reg. cuyo lenguaje es L(r)L(s)
(r)* es la exp. reg. cuyo lenguaje es (L(r))*
Se pueden quitar los paréntesis cuando estos no sean
necesarios
1-9
Expresiones regulares. Ejemplos
ab {ab}
a|b {a,b}
a* {ε,a,aa,aaa,aaaa,...}
ab* {a,ab,ab,abbb,...}
(ab|c)*d {d,abd,cd,abcd,ababcd,...}
1-10
Expresiones regulares. Ejemplos
1-11
Expresiones regulares. Notaciones
Se cumple que:
r* = ε|r+
r+ = rr*
Se cumple que
r? = r|ε
1-12
Expresiones regulares. Notaciones
hFormas abreviadas
[....] expresa elección en un conjunto de elementos del
alfabeto
[aeiou] ≅ a|e|i|o|u
[0-9] ≅ 0|1|2|3|4|5|6|7|8|9
- expresa subrango
Ejemplos:
[a-zA-Z][_0-9a-zA-Z]* identificadores Pascal
1-13
Expresiones regulares. Notaciones
hFormas abreviadas
[^ ...] expresa el complementario de un conjunto de elementos
del alfabeto
1-14
Expresiones regulares. Ejemplos en Perl
1-15
Expresiones regulares. Ejemplos en Perl
1-16
e.r. (disyunción de símbolos)
/[wW]oodchuck/ Woodchuck
/[abc]/ In uomini, in soldati
/[1234567890]/ in 1989
1-17
e.r. (complemento de símbolos)
1-18
e.r. ?
/woodchucks?/ woodchuck
/colou?r/ colour
1-19
e.r. * + .
1-20
anclas (sólo Perl)
^ principio de línea
$ fin de línea
\b fin de palabra
\B no fin de palabra
1-21
e.r. ejemplo en Perl
/the/
/[Tt]he/
/\b[Tt]he\b/
1-22
e.r.
Para practicar:
Podéis aprender perl, usar emacs, etc
1-23
Ejercicios del tema 1
1-24
Tema 2: Autómatas finitos
1) Autómatas finitos
hGeneralidades
hGrafo de transiciones asociado a un AF
hAceptación de una cadena por un AF
4) Minimización de un AFD
2-1
Autómatas Finitos. Generalidades
Misión de un FA:
h“reconocer” si una cadena de entrada respeta las reglas
determinadas por una expresión regular
2-2
Autómatas finitos como grafos
a
b a a !
q0 q1 q2 q3 q4
2-3
Autómatas finitos como grafos
2-4
Autómatas Finitos. Definiciones
2-5
Autómatas Finitos. Definiciones
2-6
Autómatas Finitos. Grafo de transiciones
Notación gráfica:
s un estado
a “transitar” de s1 a s2
s1 s2
cuando se encuentre “a”
s0
s0 es el estado inicial
> s0
ff
f es un estado final
+ (de aceptación)
f
2-7
Autómatas Finitos. Grafo de transiciones
1) S ={1,2,3,4,5,6}
2) Σ ={a,b,c,d}
3) δ(1,c)={1} δ(1,d)={3} δ(1,a)={2,5} δ(2,b)={1}
δ(2,ε)={4} δ(4,c)={1} δ(5,b)={6}
4) s0 = 1
5) F = {3,6}
2-8
Autómatas Finitos. Aceptación
c1 c2 cn
s0 → s1 → s2 → ... → sm-1 → sm
(puede haber ε-movimientos)
de manera que sm es un estado final (de
aceptación)
2-9
Autómatas Finitos. Aceptación
Ejemplo:
c
1 d
inicio
33
b a
2
2-10
Autómatas Finitos Deterministas
Es decir:
htoda transición exige un símbolo
hdesde un estado, no hay dos arcos etiquetados con el mismo
símbolo
2-11
Autómatas Finitos Deterministas
En lo que sigue:
hdada una e.r., generar el NFA
hConvertir el NFA en un DFA y minimizarlo
hImplementar el DFA
2-12
Conversión de una expresión regular a NFA
NFA para ε
inicio S1
S1
DFA para a∈ Σ
a
inicio S1 S2
S2
2-13
Conversión de una expresión regular a NFA
R1 ε R2
ε S1
S1
inicio
2-15
Conversión de una expresión regular a NFA
(ab|c)* ε 1
d
22
inicio
ε
ε ε d
inicio 3
ε ab|c 4 1 22
ε
2-16
Conversión de una e. r. en un NFA
inicio ε
ab
ε ε ε ε
3 5 ε 8 4 1 d 22
ε 6
c
7 ε
ε
ε
9
a
10 ε 11
b
12
inicio
ε ε
3 ε 5 8 ε 4 ε 1
d
22
ε 6 c
7 ε
ε
2-17
Transformación de un NFA en un DFA
2-18
Transformación de un NFA en un DFA
a b
1,2 3,4,5
3,4,5 4,5
4,5
inicio a a
DFA b
55
2-19
Transformación de un NFA en un DFA
Sea A=(S,Σ,δ,s0,F)un NFA
ε-clausura de s∈S
Conjunto de estados de N alcanzables desde s
usando transiciones ε
ε-clausura de T⊆ S
∪ ε-clausura(s)
s∈T
mueve(T,c)
Algunas cuestiones:
hComo es lógico, cuantos más estados tiene un FA, más memoria es
necesaria
2-21
Minimización de DFA
Ejemplo: a 2 b 3
c
44
1
d 5 6 77
b c
1,2,3 c
5,6 4,7
4,7
a
1 2,5 b 3,6 c 4,7
4,7
d
2-22
Ejercicios del tema 2
Ejercicio 1: Los identificadores para un determinado lenguaje de programación se
definen de acuerdo con la siguiente descripción:
2-23
Ejercicios del tema 2
Escribir una expresión regular con sintaxis Perl para los comentarios
Pascal así definidos.
2-24
Tema 3: Gramáticas libres de contexto
1) Introducción
3) GLC. Notaciones
gramática
3-2
Gramáticas. Definiciones
3-3
Gramáticas. Definiciones
3-4
Gramáticas. Definiciones
3-5
Gramáticas. Definiciones
Ejemplos de derivaciones
α1: sujeto predicado
predicado→verbo adverbio
verbo → está
α3:
sujeto está adverbio
Tenemos: α1 ⇒ G α2 * α
α1 ⇒ G 3
+ α
α1 ⇒ G 3
3-6
Gramáticas. Definiciones
Algunas definiciones:
forma de frase
Cualquier cadena que se pueda derivar del símbolo
inicial (cadena de terminales y no terminales)
frase
3-7
Gramáticas. Definiciones
3-8
Gramáticas. Definiciones
3-9
Gramáticas. Definiciones
3-10
Gramáticas. Definiciones
Ejercicio 3: Sea P=
G=(N,T,S,P) con
programa → PROGRAM ident punto bloque
hN = { programa,
bloque,insts, bloque → BEGIN insts END punto
inst,opas, insts → insts punto inst
ident, insts → inst
const,punto}
inst → ident opas const
hT =
opas → =
{PROGRAM,BEGIN, PROGRAM
PROGRAM A.
A. PROGRAM
PROGRAM A.
A.
END,=,A,B,1,0,. ident → A
BEGIN BEGIN
} ident → B BEGIN BEGIN
B=1. B=1.
hS = programa const → 1 B=1. B=1.
A=0
A=0 A=0.
A=0.
const → 0
END.
END. END.
END.
punto → .
¿Sintácticamente correctos?
3-11
Gramáticas. Clasificación
3-12
Gramáticas. Clasificación
Clasificación de Chomsky
hgramáticas de Tipo 0 libres
hgramáticas de Tipo 1
ααΑ
Αββ →→ αδβ
αδβ
dependientes del
– α,β,δ ∈(N ∪T)* contexto
– δ no vacío y A un no terminal
– A se transforma en δ sólo cuando va precedido por α y seguido
por β
– La producción ya no se aplica siempre, sino sólo en
determinados contextos
• demasiado complicadas de manejar
3-13
Gramáticas. Clasificación
hgramáticas de Tipo 2
libres de contexto
ΑΑ →→ ββ
– A es un (único) no terminal
– Cada vez que aparece A, se puede sustituir por β
– Se corresponde con la notación BNF
– Pascal (en la mayoría de sus aspectos) es una gramática de
tipo 2
hgramáticas de Tipo 3 ΑΑ →→ ww ΑΑ →
→ wwBB
– A ,B son no terminales
– w es una cadena de terminales regulares
– poco potentes
– equivalentes a expresiones regulares
3-14
Gramáticas. Clasificación
En forma de diagrama:
3-15
GLC. Notación
3-16
GLC. Notación
ΑΑ →→ ββ
parte parte
izquierda derecha
hvarias producciones con igual parte izda. se pueden agrupar en una
producción con alternativas
ΑΑ →→ αα11
ΑΑ →→ αα22 = ΑΑ →→ αα11|| αα22|...|
|...| ααnn
....
....
ΑΑ →→ ααnn
3-17
GLC. Arboles de análisis sintáctico
Considerar la
siguiente GLC expr → term | expr + term
term → prim | term * prim
terminales
prim → a|b|c
Gráficamente, la
derivación se expr
puede
representar como expr + term
un árbol de
sintaxis term prim
term * prim
c
prim b
3-19
GLC. Arboles de análisis sintáctico
Características:
hel nodo raíz se etiqueta con el símbolo inicial
hcada nodo no hoja se etiqueta con un no terminal
hlos hijos de un nodo son los símbolos (de izda. a dcha.) que
aparecen en una de las producciones que tienen dicho nodo como
parte izda.
hcuando se ha derivado una frase, las hojas del árbol son
terminales
La derivación de una frase (o forma de frase) no es fácil
1) Podemos elegir un camino no apropiado (necesitando
“backtraking”)
2) Una misma frase puede tener más de una derivación posible
(gramática ambigua)
3-20
GLC. Arboles de análisis sintáctico
3-21
GLC. Arboles de análisis sintáctico
E → E + E|E * E|(E)|-E|id
id+id*id
id+id*id id+id*id
E+id*id E → id id+id*E E → id
E+E*id E → id id+E*E E → id
E*id E → E+E id+E E → E*E
E*E E → id E+E E → id
E E → E*E E E → E+E
3-22
GLC. Derivación izda. y dcha.
3-23
GLC. Derivación izda. y dcha.
3-25
GLC. Ambigüedad
3-26
GLC. Ambigüedad
11 22
if
if exp1
exp1 then
then if
if exp1
exp1 then
then
if
if exp2 then
exp2 then if
if exp2
exp2 then
then
inst2
inst2 inst2
inst2
else
else else
else
inst3
inst3 inst3
inst3
3-27
GLC. Ambigüedad
3-29
GLC. Transformación de gramáticas
hposibles simplificaciones:
– eliminación de no terminales inútiles
– eliminación de producciones-ε
– eliminación de producciones unitarias
3-30
GLC. Transformación de gramáticas
3-31
GLC. Transformación de gramáticas
S ⇒* α A β ⇒* w
3-32
GLC. Transformación de gramáticas
Un no terminal Algoritmo
Algoritmo eliminaNoTerminables
eliminaNoTerminables
es (E
(E G:GLC;
G:GLC; S:
S: G’:GLC)
G’:GLC)
terminable --Pre:
--Pre: G=(N,T,P,S)
G=(N,T,P,S) t.q. L(G)<>∅
t.q. L(G)<> ∅
cuando es
--Post: G’=(N’,T,P’,S) ∧∧ G’
--Post: G’=(N’,T,P’,S) G’ ≅≅ GG ∧∧
-- ∀∀X’ N’.∃∃ww∈∈TT*..X’
X’∈∈N’.
*
X’⇒
⇒* ww
capaz de
-- *
Vars
Vars viejo,nuevo:
viejo,nuevo: conj.
conj. de de no
no terminales
terminales
derivar Principio
Principio
alguna frase viejo:={}
viejo:={}
nuevo:={A∈∈N|A→w
N|A→w∈∈P,w
P,w∈∈TT*}}
nuevo:={A *
Mq
Mq viejo<>nuevo
viejo<>nuevo
viejo:=nuevo
viejo:=nuevo
nuevo:=viejo ∪∪
nuevo:=viejo
{B∈∈N|B→α
N|B→α∈∈P,α
P,α∈∈(T(T ∪∪ viejo)
{B *
viejo)*}}
FMq
FMq
N’:=nuevo
N’:=nuevo
P|A∈∈N’,
P’:={A→w∈∈P|A N’, ww∈∈(N’
(N’ ∪∪ T)
P’:={A→w *
T)*}}
Fin
Fin
3-33
GLC. Transformación de gramáticas
3-35
GLC. Transformación de gramáticas
3-36
GLC. Comparación de gramáticas
3-37
Ejercicios del tema 3
3-38
Tema 4: Problemas decidibles y semidecidibles
4-1
Bibliografía para este tema
4-2
Lenguajes. Definiciones
alfabeto
conjunto finito de símbolos
ejemplos
{0,1}, letras y dígitos
ejemplos
0010
estadoInicial
v_0
4-3
Lenguajes. Definiciones
longitud de una cadena
número de símbolos que la componen
ejemplos
|hola| = 4
|123456| = 6
ε = 0 (cadena vacía)
lenguaje
dado un alfabeto, cualquier conjunto de cadenas
formadas con dicho alfabeto
ejemplo
4-4
Lenguajes y problemas decisionales
4-5
Lenguajes y problemas decisionales
Ejemplo
Identificamos el problema:
Dado x número natural en binario, ¿es x primo?
4-6
Programas que reconocen lenguajes
4-7
Programas que reconocen lenguajes
4-8
Programas que reconocen lenguajes
4-9
Lenguajes decidibles y semidecidibles
4-10
Ejemplos
El problema de parada:
“Dados p programa y x entrada, ¿ p(x)↓ ? ”
NO es decidible (aunque sí es semidecidible)
4-11
¿Y los lenguajes formales?
4-12
Ejercicio del tema 4
4-13
Tema 5: Tiempo polinómico versus tiempo exponencial
5-1
Bibliografía para los temas 5,6 y 7
5-2
P y EXP
5-3
Definiciones: tiempo
5-4
Definiciones: DTIME
5-5
Definiciones
5-6
Atención
• P ⊆ EXP
5-7
Problemas resolubles en la práctica
5-8
Razones para considerar P “lo resoluble eficientemente”
P = ∪k∈ N DTIMEMT(mk)
EXP=∪k∈ N DTIMEMT(2mk)
5-10
Tesis de Turing-Church
5-11
Tesis de Turing-Church. Pero ...
5-12
Tema 6: La clase NP y las reducciones
6-1
Problemas comprobables en tiempo polinómico
6-2
Problemas comprobables en tiempo polinómico
6-3
El problema del viajante de comercio (TSP)
“Dados:
• n el número de ciudades,
• la matriz de distancias d(i,j) para 1<=i,j<=n,
• una longitud máxima k
¿existe un camino de que pasa por todas las ciudades con
longitud como máximo k?”
6-4
El problema del viajante de comercio (TSP)
CompTSP:
“Dado n el número de ciudades, la matriz de distancias d(i,j)
para 1<=i,j<=n, una longitud máxima k y un candidato a
camino c=(c1, ..., cn)”
¿c es un camino de que pasa por todas las ciudades con
longitud como máximo k?”
6-5
Definición
B es la “versión comprobación” de A
6-6
NP
6-7
Reducciones
6-8
Reducciones: ejemplo
HAM es el problema de
“dados n puntos y algunas conexiones (un grafo)
¿existe un camino que pasa por los n puntos
una sola vez?”
6-9
Reducciones: ejemplo
4
5 ciudades
2
d(1,4)=d(2,3)=d(2,4)=d(3,4)=d(4,5)=1
1
resto d(i,j)=100
3
5
k=4
6-10
Reducciones
Se pueden componer:
• Si A≤pB y B≤pC entonces A≤pC
6-11
NP-difíciles y NP-completos
6-12
Ejemplos de NP-completos
6-13
Tema 7: NP-completos
7-1
Una aplicación práctica
7-2
Una aplicación práctica
7-3
Una aplicación práctica
7-4
Una aplicación práctica
7-5
P versus NP
7-6
P versus NP
Sabemos que P ⊆ NP
¿P=NP? Esta es una de las preguntas abiertas más
importantes en informática
Ver en
http://www.claymath.org/prizeproblems/index.htm
cómo ganar un millón de dólares resolviéndola
7-7
P versus NP
¿Cómo la resolverías?
Para intentar P ≠ NP:
Demostrar que hay un problema que está en NP pero no en
P
Para intentar P=NP:
Demostrar que todos los problemas de NP se pueden
resolver en tiempo polinómico, así que NP ⊆ P
7-8
P versus NP
7-9
P versus NP
7-10
Lista de NP-completos
7-11
Lista de NP-completos
7-12
Referencias
Lista de NP-completos:
GAREY, M. y JOHNSON. D.: Computers and Intractability:
A Guide to the Theory of NP-Completeness. Freeman.
1978.
7-13