300CIG007 Computabilidad y Lenguajes Formales: Autómatas Finitos Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V.
No Determinismo Hasta ahora cada paso que se computa ha seguido un camino único desde el paso anterior (el paso esta determinado). Esto es Computación Determinista. En una máquina no determinista, en un momento dado, existen varias posibilidades para elegir el siguiente estado.
AF No Determinista A diferencia de un Automata Finito Determinista (DFA), un Automata Finito Determinista (NFA) puede presentar las siguientes características: El mismo símbolo puede ser etiqueta de más de una transición que salga de un mismo nodo Puede tener transiciones etiquetas con ε (cadena vacía)
Como se computa un AFD? Puede ser interpretado de varias maneras: Puede ser visto como una máquina de computación en paralelo, donde varios procesos se ejecutan concurrentemente (uno por cada uno de los posibles caminos) Puede ser visto como un árbol de posibilidades, cuya raíz corresponde al estado de inicio, y cada nodo con mas de un hijo, corresponde a un punto en el cual la máquina tiene múltiples opciones.
DFA: Definición Formal Un Autómata Finito No Determinista es una 5-tupla (Q, Σ, δ, q 0, F), donde: Q es un conjunto finito de Estados Σ es un conjunto finito llamado Alfabeto δ:qxσ ε 2 Q es una función de transición. q 0 Q es el Estado Inicial F Q es el Conjunto de Estados Finales Donde: Σ ε = Σ U {ε}
Computación de un NFA Sea M = (Q, Σ, δ, q 0, F) un autómata finito no determinista y la secuencia de entradas w = w 1 w 2 w 3 w 4...w m, entonces M acepta w si existe una secuencia de estados r 0, r 1, r 2, r m, que cumple las siguientes condiciones: r 0 = q 0 r i+1 δ(r i, w i+1 ), para i = 0,1, 2,, m-1, y r m F
Equivalencia de NFAs y DFAs Teorema: Sea L el lenguaje aceptado por un autómata finito no determinista, entonces existe un autómata finito determinista que acepta L. (Todo autómata finito no determinista tiene un autómata finito determinista equivalente)
Equivalencia de NFAs y DFAs Prueba: Para todo NFA M = (Q, Σ, δ, q 0, F), es posible construir un DFA M = (Q, Σ, δ, q 0, F ) Caso: NFA sin transiciones ε Q son todos los subconjuntos de Q (Q = 2 Q ) Un estado de M representa todos los estados en los que M puede estar en un momento dado. Un estado q p (elemento de Q ) se denota por [q 1, q 2,, q i ], donde q 1, q 2,, q i Q. q 0 = [q 0 ]
Equivalencia de NFAs y DFAs Prueba: Para todo NFA M = (Q, Σ, δ, q 0, F), es posible construir un DFA M = (Q, Σ, δ, q 0, F ) δ ([q 1, q 2,, q i ], a) = [p 1, p 2,, p i ] si y solo si δ({q 1, q 2,, q i }, a) = {p 1, p 2,, p i } Para una cadena de entradas x: δ (q 0, x) = [q 1, q 2,, q i ] si y solo si δ(q 0, x) = {q 1, q 2,, q i } F es el conjunto de todos los estados de Q que contienen algún estado que pertenece a F.
Equivalencia de NFAs y DFAs Prueba: Para todo NFA M = (Q, Σ, δ, q 0, F), es posible construir un DFA M = (Q, Σ, δ, q 0, F ) Caso: NFA con transiciones ε Para todo estado R de M, sea E(R): E(R) = { q q puede ser alcanzado por R siguiendo 0 o mas transiciones ε } Redefinimos q 0 = E({q 0 }) Redefinimos δ : δ (R, a) = { q Q q E(δ(r,a)) para algún r R }
Algoritmo de Construcción de Subconjuntos Dado un NFA construir un DFA: Operaciones: ε-closure(s i ): conjunto de estados del NFA alcanzables desde el estado S i, con transiciones ε ε-closure(t), donde T es un conjunto de estados del NFA: conjunto de estados del NFA alcanzables desde el estado s en T, con transiciones ε Move(T,a), donde T es un conjunto de estados del NFA, y a es un símbolo del alfabeto: conjunto de estados del NFA a los cuales hay una transición con el símbolo a, desde un estado s en T. Pontificia U. Javeriana Cali - Ingenieria de Sistemas y Computación Compiladores
Algoritmo de Construcción de Subconjuntos Algoritmo: genera la tabla de transición Dtran Dstates = ε-closure(s 0 ) Mientras haya un estado T no marcado en Dstates: Marcar T; Para cada símbolo de entrada a U = Є-closure(Move(T,a)) Si U no está en Dstates entonces Adicionar U a Dstates sin marcar Dtran[T,a] = U Pontificia U. Javeriana Cali - Ingenieria de Sistemas y Computación Compiladores