Resumen: Semana del 28 de marzo al 3 de abril
(1/8)
Autómatas finitos
- Para entender el funcionamiento de lex (y del análisis léxico), así como muchas otras cosas del curso, se debe recurrir a los autómatas finitos
- Un autómata finito es un grafo que reconoce expresiones regulares, aprobándolas o rechazándolas en relación con cada posible cadena de entrada
(2/8)
Diagramas de transición
- Los autómatas finitos a menudo se representan mediante un diagrama de transición
- Un diagrama de transición de estados sirve para indicar el flujo de caracteres que deben ocurrir para encontrar lexema(s)
- Un diagrama de transición se compone de los siguientes elementos:
- Un punto inicial (representado por un círculo numerado)
- Una serie de puntos (representados también por círculos numerados)
- Un conjunto de flechas que conectan los puntos, e indican qué entrada se requiere para avanzar a través de ellas
- Uno o más puntos finales (círculos dobles numerados) donde termina la entrada
(3/8)
Autómatas finitos no deterministas
- Los autómatas finitos pueden ser deterministas o no deterministas, donde los deterministas son más estrictos
- Un autómata finito no determinista (AFN) consiste en:
- Un número finito de estados
- De estos, uno es considerado el estado inicial
- Un subconjunto más es considerado como el conjunto de estados aceptantes o finales
- Un conjunto de símbolos de entrada, alias el alfabeto de entrada
- Opcionalmente, un símbolo épsilon (ϵ) que representa la cadena vacía y no forma parte del alfabeto de entrada, pero deja pasar sin ocupar caracter
- Una función de transición que para cada estado y cada símbolo de entrada permita una transición al estado siguiente
- Un número finito de estados
(4/8)
Autómatas finitos no deterministas: Un diagrama de ejemplo
- En este caso, el autómata tiene como alfabeto de entrada las letras a y b
- El autómata acepta caracteres a y b hasta encontrar una secuencia que dé exactamente la hilera "abb"
(5/8)
Autómatas finitos no deterministas: Un diagrama más complejo
(vilmente copipegado de la página del prof. Di Mare, espero no le importe...)
- Este otro diagrama hace exactamente lo mismo que el anterior, aunque un poco más complicadamente, pero es para ilustrar el concepto de épsilon
- En este caso hay un total de diez estados:
- Los del 1 al 6 cubren el caso de encontrar cualquier cantidad de a's y/o de b's
- Los del 7 al 9 cubren el caso de encontrar una secuencia "aab"
- El 0 es el caso inicial, por lo que puede ir al 1 o directo al 7
- El 10 es el caso final
(6/8)
Autómatas finitos no deterministas: Tablas de transición
- Las tablas de transición son otro método para mostrar un autómata finito
- Una tabla de transición tiene como filas a los estados, como columnas a los símbolos del alfabeto (más el épsilon), y en cada cruce los estados a los que se puede ir desde ese estado usando ese símbolo del alfabeto
- Por ejemplo, aquí está el esquema anterior como una tabla de transición
(7/8)
Autómatas finitos deterministas
- Un autómata finito determinista (AFD) es un AFN que:
- No tiene movimientos épsilon
- Para cada estado, cada uno de los símbolos del alfabeto conduce a exactamente un estado
- Los AFD son un avance sobre los AFN ya que son más compactos y menos propensos a ambigüedad
(8/8)
Autómatas finitos deterministas: un ejemplo
- Este ejemplo es el anterior ejemplo de AFN convertido a AFD
- Como se puede ver, no hay movimientos épsilon ni símbolos que conduzcan a múltiples estados
- La conversión de autómatas finitos no deterministas en deterministas se verá próximamente