(NFA) Introducción a la Lógica Fa.M.A.F., Universidad Nacional de Córdoba 2//5 Outline of the Talk Intuiciones Definición Lenguaje de un NFA Euivalencia de Lenguajes de un NFA y un DFA Determinización Euivalencia de Lenguajes 2 Definición Lenguajes de un NFA- Determinización Euivalencia de Lenguajes
Determinismo vs. No-determinismo Autómata: Modelo matemático de un sistema con entradas y salidas discretas. Finito: Tiene un nro. finito de estados. Deterministico: En todo momento está en un solo estado. 2 Un DFA define un lenguaje. Determinismo vs. No-determinismo Qué pasa si permitimos, o más transiciones por símbolo?, 2 En ué estado está el autómata luego de δ(, )? El autómata esta en un conjunto de estados al mismo tiempo. Ya no es deterministico: es no deterministico.
Definición Autómata: Modelo matemático de un sistema con entradas y salidas discretas. Finito: Tiene un nro. finito de estados. No-Determinístico: El autómata está en un conjunto de estados. Autómata Finito No-Deterministico (NFA) Un NFA es una 5-tupla M = (Q, Σ, δ,, F) donde: Q = {, 2,..., m } es un conjunto finito de estados. Σ = {a, a 2,..., a n } es un conjunto finito símbolos. δ : Q Σ P(Q) es la función de transición de estados. Q es el estado final. F Q son los estados finales. Ejemplo, 2 Definimos M = (Q, Σ, δ,, F): Q = {,, 2 }. Σ = {, }. F = { 2 }. es el estado inicial. δ esta definida por: {, } { } { 2 } 2
Procesando el input con no-determinismo En un DFA, cada símbolo transforma un estado en otro. Cómo funciona una autómata no-deterministico?, 2 2 2 Transforma en Ahora trabajamos con un conjunto de estados. Transforma en Sea M = (Q, Σ, δ,, F) un NFA y α = a, a,..., a n Σ. Diremos ue α transforma p en (p α ) si existen,..., n Q tal ue δ(p, a ), 2 δ(, a ),..., i+ δ( i, a i ),..., n δ( n, a n ), δ( n, a n ). α puede transformar en varios estados. α genera distintos recorridos desde. α es aceptada si algún recorrido llega a un estado final.
Lenguaje de un NFA Lenguaje Aceptado por un NFA Sea M una NFA, el lenguaje aceptado por M (L(M )) es el conjunto de cadenas aceptadas por el autómata, L(M ) = {α Σ existe p F tal ue α p}. Ejemplo:, 2 Cúal es el lenguaje del NFA? L(M ) = {w w termina en }. Intuiciones Los NFA son una generalización de los DFA. Los NFA reconocen más lenguajes ue los DFA? Ejemplo: 2 Cúal es el lenguaje del DFA? L(M ) = {w w termina en }. Los NFA reconocen los mismos lenguajes ue los DFA. Para todo NFA existe un DFA euivalente.
Construcción por Subconjuntos Construyamos un DFA a partir de un NFA. Construcción por Subconjuntos. Sea N = (Q, Σ, δ,, F) un NFA. Definimos el DFA D = (Q, Σ, δ,, F ) de la siguiente forma: Q = P(Q). Σ = Σ. F = { Q F }. = { }. δ (, a) = {p Q existe t.. a p} = δ(, a) δ (, a): Estados accesibles a través de a desde cada. Si Q = n entonces Q = 2 n!!! No preocuparse: no todos son accesibles. Ejemplo Sea D = (Q, Σ, δ,, F ): 7 4 5 2 3 6,, () () { } {, } { } (2) { } { 2 } (3) { 2 } (4) {, } {, } {, 2 } (5) {, 2 } {, } { } (6) {, 2 } { 2 } (7) {,, 2 } {, } {, 2 }, 2
Construcción Lazy No todos los 2 Q estados son necesarios. Podemos ser mas eficientes en la construcción de Q. Construcción Lazy de Q Data: estado inicial, función δ, alfabeto Σ Result: conjunto de estados Q Q {{ }}; Q ; for (Q \Q ) do for a Σ do Q Q { δ(, a)}; end Q Q { }; end Euivalencia entre DFA y NFA Lema Sea N = (Q, Σ, δ,, F) un NFA y D = (Q, Σ, δ, { }, F ) el DFA obtenido a partir de N usando la construcción por subconjuntos. Para todo α Σ y todo Q, si α p entonces p = {p Q existe t.. α p} Lema Sea N = (Q, Σ, δ,, F) un NFA y D = (Q, Σ, δ, { }, F ) el DFA obtenido a partir de N usando la construcción por subconjuntos. Luego L(D) = L(N ). Teorema Los lenguajes aceptados por los DFA son los mismos ue los aceptados por los NFA.
Lema Sea N = (Q, Σ, δ,, F) un NFA y D = (Q, Σ, δ, { }, F ) el DFA obtenido a partir de N usando la construcción por subconjuntos. Para todo α Σ y todo Q, si α p entonces p = {p Q existe t.. α p} Por inducción en α. Casos Base: α = : Si α = entonces α = y por def. de,. Q.v.. = {p Q t p}. Sea = {, 2,..., n }, luego, i i, i, se sigue ue = {p Q t p} = {, 2,..., n }. ya ue transforma todo estado en sí mismo. α = : Sea α = a con a Σ. Si a p entonces p = {p Q t a p} por definición de δ. Paso Inductivo: Sea α = βa con β y a Σ. Q.v.. si βa p entonces p = {p Q existe t.. βa p}. Si βa p entonces existe r tal ue, β r a p. Por HI, tenemos ue r = {r Q existe t.. β r}. Por el CB donde α = tenemos ue, p = {p Q existe r r t.. r a p}. : Si p p existe r r t r a p y, como r r, existe t β r, y por lo tanto, β r a p βa p de donde se sigue ue p {p Q existe t.. βa p}. : Si p {p Q existe t.. βa p}, existe r Q t.. β r a p. Luego, por HI y CB, r r y p p, lo cual prueba la otra inclusión.
Lema Sea N = (Q, Σ, δ,, F) un NFA y D = (Q, Σ, δ, { }, F ) el DFA obtenido a partir de N usando la construcción por subconjuntos. Luego L(D) = L(N ). Por el lema anterior sabemos ue α {p Q existe t.. α p}. Si instanciamos =, entonces tenemos ue: α {p Q α p}( ). : Supongamos ue α L(D). Por definición tenemos ue α p y p F. Como p es estado final, tenemos ue p p α t. p F. Luego por ( ) tenemos ue p y por lo tanto α L(N ). α : Supongamos ue α L(N ). Luego p con p F. Por ( ) tenemos ue p p y ue α p. Como p F, p F, con lo cual α L(D). Teorema Los lenguajes aceptados por los DFA son los mismos ue los aceptados por los NFA. Q.v.. para todo DFA D (NFA N ) existe un NFA N (DFA D) tal ue L(D) = L(N ). Sea D = (Q, Σ, δ,, F) un DFA, luego, podemos construir un NFA N = (Q, Σ, δ,, F) donde δ (, a) = {δ(, a)}. Es evidente ue L(D) = L(N ). Sea N = (Q, Σ, δ,, F) un NFA. Luego usando la construcción por subconjuntos podemos construir un DFA D y por el Lema 2, sabemos ue L(N ) = L(D).
Entonces, para ué sirven? (Hopcroft et al) Intuiciones Ahora extendamos la definición de un NFA permitiendo: Transiciones mediante el símbolo (-transiciones). Transiciones espontáneas. b a a b 2 Agregan cierto tipo de conveniencia programatica.
Definición Autómata Finito No-Deterministico con -transiciones (NFA-) Un NFA- es una 5-tupla M = (Q, Σ, δ,, F) donde: Q = {, 2,..., m } es un conjunto finito de estados. Σ = {a, a 2,..., a n } es un conjunto finito símbolos. δ : Q (Σ {}) P(Q) es la función de transición de estados. Q es el estado final. F Q son los estados finales. Ejemplo: 2 2 Definimos M = (Q, Σ, δ,, F): Q = {,, 2 }. Σ = {,, 2}. F = { 2 }. es el estado inicial. δ esta definida por: 2 { } { } { } { 2 } 2 { 2 }
Transforma en Transforma en Sea M = (Q, Σ, δ,, F) un NFA- y α Σ. Diremos ue α transforma p en (p α ) si existen a, a,..., a n Σ {} y,..., n Q tal ue α = a a... a n y δ(p, a ), 2 δ(, a ),..., i+ δ( i, a i ),..., Importante: δ(p, a) implica p a, pero, p a no implica δ(p, a). n δ( n, a n ), δ( n, a n ). p a permite la existencia de -transiciones. Ej. p a p a p a α es aceptada si algún recorrido llega a un estado final. Lenguaje de un NFA- Lenguaje Aceptado por un NFA- Sea M un NFA-, el lenguaje aceptado por M (L(M )) es el conjunto de cadenas aceptadas por el autómata, L(M ) = {α Σ existe p F tal ue α p}. Ejemplo: 2 2 Cúal es el lenguaje del autómata? L = {w w = i j 2 k con i, j, k}.
Construcción por Subconjuntos Las -transiciones no expanden la clase de lenguajes. -clausura Sea M = (Q, Σ, δ,, F) un NFA- y Q. Definimos la -clausura de ([]) como Para {,..., k }, definimos [] = {p Q p}. [,..., k ] = k [ i ]. i= Notar ue =... Recordar ue. Construcción por Subconjuntos para NFA- Construyamos un DFA a partir de un NFA-. Construcción por Subconjuntos. Sea N = (Q, Σ, δ,, F) un NFA-. Definimos el DFA D = (Q, Σ, δ,, F ) de la siguiente forma: Q = {[,..., i ],..., i Q} P(Q). Σ = Σ. F = {[,..., i ] [,..., i ] F }. = [ ]. δ (, a) = [{p Q existe t.. a p}].
Ejemplo 2 2 2 { } { } { } { 2 } 2 { 2 } 2 [ ] [ ] [ ] [ 2 ] [ ] [ ] [ 2 ] [ 2 ] [ 2 ] [ ] = [ ] = {,, 2 } [ ] = {, 2 } [ 2 ] = { 2 } [, ] = [ ] [, 2 ] = [ ] [, 2 ] = [ ] [,, 2 ] = [ ],, 2 [ ] [ ] 2 2, [ 2 ] 2 Euivalencia entre DFA y NFA- Lema Sea E = (Q, Σ, δ,, F) un NFA- y D = (Q, Σ, δ, { }, F ) el DFA obtenido a partir de E usando la construcción por subconjuntos. Para todo α Σ y todo Q, si α p entonces p = {p Q existe t.. α p}. Lema Sea E = (Q, Σ, δ,, F) un NFA- y D = (Q, Σ, δ, { }, F ) el DFA obtenido a partir de E usando la construcción por subconjuntos. Luego L(D) = L(E). Teorema Los lenguajes aceptados por los DFA son los mismos ue los aceptados por los NFA-.