Estoy pensando en el siguiente problema: quiero encontrar una expresión regular que coincida con un conjunto particular de cadenas (por ejemplo, direcciones de correo electrónico válidas) y que no coincida con otras (direcciones de correo electrónico no válidas).
Supongamos que por expresión regular nos referimos a una máquina de estados finitos bien definida, no estoy familiarizado con la terminología exacta, pero estemos de acuerdo en alguna clase de expresiones permitidas.
En lugar de crear manualmente la expresión, quiero darle un conjunto de ejemplos positivos y un conjunto de ejemplos negativos.
Luego debería aparecer una expresión que coincida con los +, rechace los - y sea mínima en un sentido bien definido (¿número de estados en los autómatas?).
Mis preguntas son:
- ¿Se ha considerado este problema, cómo se puede definir de una manera más concreta y se puede resolver de manera eficiente? ¿Podemos resolverlo en tiempo polinómico? ¿Está NP completo, podemos aproximarlo de alguna manera? ¿Para qué clases de expresiones funcionaría? Agradecería cualquier puntero a los libros de texto, artículos o tal que discutan este tema.
- ¿Está relacionado de alguna manera con la complejidad de Kolmogorov?
- ¿Está relacionado de alguna manera con el aprendizaje? Si la expresión regular es consistente con mis ejemplos, en virtud de que es mínima, ¿podemos decir algo sobre su poder de generalización en ejemplos aún no vistos? ¿Qué criterio de minimidad sería más adecuado para esto? ¿Cuál sería más eficiente? ¿Tiene esto alguna conexión con el aprendizaje automático? Una vez más, cualquier puntero sería útil ...
Perdón por la pregunta desordenada ... Apúntame en la dirección correcta para resolver esto. Gracias !