Trabajo Computacional N 1 primer semestre 2011

Transcripción

Trabajo Computacional N 1 primer semestre 2011
Universidad Tecnológica Metropolitana
Facultad de Ingeniería
Escuela de Informática
Estructura de Datos
Primer semestre 2011
lunes, 28 de marzo de 2011
Trabajo Computacional Nº1
La ACM, la asociación educativa y científica informática más grande del mundo de la sociedad,
propone una serie de problemas computacionales.
Se pide resolver el problema indicado en el enunciado:
5109 - Regular Expression Edit Distance.
A regular expression is used to describe a set of strings. For this problem the alphabet
is limited to 'a' and 'b'.
R is a regular expression if:
1) R is "a" or "b"
2) R is of the form "(R1R2)" where R1 and R2 are regular expressions
3) R is of the form "(R1|R2)" where R1 and R2 are regular expressions
4) R is of the form "(R1*)" where R1 is a regular expression.
The set of strings recognised by R are as follows:
1) If R is "a", then the set of strings recognised = {a}
2) If R is "b", then the set of strings recognised = {b}
3) if R is of the form "(R1R2)" then the set of strings recognised = all strings which can
be obtained by a concatenation of strings s1 and s2 where s1 is recognised by R1 and
s2 by R2.
4) if R is of the form "(R1|R2)" then the set of strings recognised = union of the set of
strings recognised by R1 and R2.
5) If R is of the form "(R1*)" then the the strings recognised are the empty string and
the concatenation of an arbitrary number of copies of any string recognised by R1.
The edit distance between two strings s1 and s2 is the minimum number of characters
to be inserted/deleted or replaced in s1 to make it equal to s2.
Given two regular expressions R1 and R2, find the minimum edit distance amongst all
pairs of strings s1 and s2 such that s1 is recognised by R1 and s2 is recognised by R2.
Input (STDIN):
La primera linea contiene el numero de casos de prueba T. Casos de prueba T
siguiente. Cada caso de prueba contiene dos lineas que contienen dos expresiones
regulares R1 y R2. Hay una línea en blanco después de cada caso de prueba.
Output (STDOUT):
La línea de salida T corresponde a cada caso de prueba que contiene la respuesta
requerida para el correspondiente caso de prueba.
Profesor: Mauro Castillo
Ayudantes: - Annabella Carvajal ([email protected])
- Melanny Farías ([email protected])
Universidad Tecnológica Metropolitana
Facultad de Ingeniería
Escuela de Informática
Estructura de Datos
Primer semestre 2011
lunes, 28 de marzo de 2011
Constraints:
T <= 85
1 <= length(R1), length(R2) <= 50
You are guaranteed that R1 and R2 will conform to the definition provided above.
Sample Input:
2
((a|b)*)
(a(b(aa)))
(a((ab)*))
(a(b(((ab)b)b)))
Sample Output:
0
2
Explanation:
Para el primer caso R1 reconoce todas las cadenas a y b del alfabeto. Por lo tanto
reconoce la cadena “abaa” que también es reconocida por R2.
Para el segundo caso la cadena "aababab" y "ababbb" son reconocidas por R1 y R2
respectivamente y tiene una distancia de 2.
Requisitos:





La aplicación deberá tener un menú principal.
El programa debe ser desarrollado en C++.
Debe considerar una interfaz amigable con el usuario.
Debe comentar el código
El trabajo debe ser realizado a lo más por 2 personas y enviado al mail de las
ayudantes.
 Fecha de Entrega: lunes 04 de abril de 2011, hasta las 23:59 hrs.
La evaluación de este trabajo se basará en:
 El desarrollo de la aplicación.
 Una interrogación de la aplicación a los grupos, en el horario de la ayudantía.
Profesor: Mauro Castillo
Ayudantes: - Annabella Carvajal ([email protected])
- Melanny Farías ([email protected])

Documentos relacionados