Tema 2: Autómatas finitos Departamento de Sistemas Informáticos y Computación DSIC - UPV http://www.dsic.upv.es – p. 1 Tema 2: Autómatas finitos • Autómata finito determinista (AFD). Formas de representación de un AFD: ◦ Diagrama de transiciones. ◦ Tabla de transiciones. • Autómata finito no determinista (AFN). • Equivalencia AFN - AFD • Autómata finito no determinista con transiciones vacías (AFλ). • Gramáticas. Definiciones • Gramáticas. Jerarquía de Chomsky • Equivalencia AFλ - AFN • Equivalencia Autómata Finito - Gramática Regular DSIC - UPV http://www.dsic.upv.es – p. 2 Autómata finito determinista • Un autómata finito determinista es una 5-tupla A = (Q, Σ, δ, q0 , F ) donde: ◦ Q es un conjunto finito de estados ◦ Σ es un conjunto finito de símbolos o alfabeto. ◦ δ : Q × Σ → Q es una función parcial llamada función de transición ◦ q0 ∈ Q estado inicial ◦ F ⊆ Q conjunto de estados finales a1 a2 a3 an Memoria Finita DSIC - UPV http://www.dsic.upv.es – p. 3 Autómata finito determinista A = ({q0 , q1 , q2 }, {a, b}, δ, q0 , {q0 , q1 }) δ(q0 , a)= q0 δ(q0 , b)= q1 q0 q1 q2 δ(q1 , a)= q2 δ(q1 , b)= q1 δ(q2 , a)= q2 δ(q2 , b)= q2 a b a q0 q2 q2 q1 q1 q2 q0 a,b b b q1 DSIC - UPV a q2 http://www.dsic.upv.es – p. 4 Autómata finito determinista • Extensión de la función de transición a cadenas δ̂ : Q × Σ∗ → Q ∀q ∈ Q, x ∈ Σ∗ , a ∈ Σ ◦ δ̂(q, λ) = q ◦ δ̂(q, xa) = δ(δ̂(q, x), a) • Lenguaje aceptado por un AFD L(A) = {x ∈ Σ∗ | δ(q0 , x) ∈ F } DSIC - UPV http://www.dsic.upv.es – p. 5 Autómata finito no determinista • Un autómata finito no determinista es una 5-tupla A = (Q, Σ, δ, q0 , F ) donde: ◦ Q, Σ, q0 ∈ Q y F ⊆ Q el mismo conjunto de estados, alfabeto, estado inicial y conjunto de estados finales que en la definición de AFD ◦ δ : Q × Σ → 2Q es una función parcial llamada función de transición • Extensión de δ a cadenas δ̂ : Q × Σ∗ → 2Q ∀q ∈ Q, x ∈ Σ∗ , a ∈ Σ ◦ δ̂(q, λ) = {q} ◦ δ̂(q, xa) = S δ(p, a) p∈δ̂(q,x) • Lenguaje aceptado por un AFN: L(A) = {x ∈ Σ∗ | δ̂(q0 , x) ∩ F 6= ∅} DSIC - UPV http://www.dsic.upv.es – p. 6 Autómata finito no determinista A = ({q0 , q1 , q2 }, {a, b, c}, δ, q0 , {q0 , q1 , q2 }) δ(q0 , a)= {q0 , q1 , q2 } δ(q0 , b)= {q1 , q2 } δ(q0 , c)= {q2 } q0 q1 q2 δ(q1 , a)= ∅ δ(q1 , b)= {q1 , q2 } δ(q1 , c)= {q2 } a b c a {q0 , q1 , q2 } ∅ ∅ {q1 , q2 } {q1 , q2 } ∅ {q2 } {q2 } {q2 } q0 δ(q2 , a)= ∅ δ(q2 , b)= ∅ δ(q2 , c)= {q2 } b a,b q1 c b,c q2 a,b,c DSIC - UPV http://www.dsic.upv.es – p. 7 Autómata finito no determinista • Equivalencia entre AFN y AFD Sea A = (Q, Σ, δ, q0 , F ) un AFN. Construimos un AFD A′ = (Q′ , Σ, δ ′ , q0′ , F ′ ) tal que L(A) = L(A′ ) de la siguiente forma: ◦ Q′ = 2Q ◦ q0′ = {q0 } ◦ F ′ = {q ′ ∈ Q′ | q ′ ∩ F 6= ∅} S ◦ δ ′ (q ′ , a) = δ(q, a) : q ′ ∈ Q, a ∈ Σ q∈q ′ DSIC - UPV http://www.dsic.upv.es – p. 8 Autómata finito no determinista • ejercicios: q0 a q1 a,b,c a,b q2 q0 b q1 a b q2 a a,b DSIC - UPV http://www.dsic.upv.es – p. 9 Autómata finito no determinista con transiciones vacı́as • Un autómata finito no determinista con transiciones vacías es una 5-tupla A = (Q, Σ, δ, q0 , F ) donde: ◦ Q, Σ, q0 ∈ Q y F ⊆ Q el mismo conjunto de estados, alfabeto, estado inicial y conjunto de estados finales que en la definición de AFD y AFN ◦ δ : Q × (Σ ∪ {λ}) → 2Q es una función parcial llamada función de transición • λ-clausura de un estado q ∈ Q (λ − clausura(q)): conjunto de estados que pueden alcanzarse desde q sin consumir símbolo. S Dado P ⊆ Q, λ − clausura(P ) = λ − clausura(p) p∈P DSIC - UPV http://www.dsic.upv.es – p. 10 Autómata finito no determinista con transiciones vacı́as • Extensión de δ a cadenas δ̂ : Q × Σ∗ → 2Q ∀q ∈ Q, x ∈ Σ∗ , a ∈ Σ ◦ δ̂(q, λ) = λ − clausura(q) ◦ δ̂(q, xa) = λ − clausura S ! δ(p, a) p∈δ̂(q,x) Pudiendo extender δ̂ para operar sobre conjuntos de estados: [ ∀P ⊆ Q δ̂(P, x) = δ̂(p, x) p∈P • Lenguaje aceptado por un AFλ: L(A) = {x ∈ Σ∗ | δ̂(q0 , x) ∩ F 6= ∅} DSIC - UPV http://www.dsic.upv.es – p. 11 Autómata finito no determinista con transiciones vacı́as A = ({q0 , q1 , q2 , q3 }, {0, 1}, δ, q0 , {q0 }) δ(q0 , 0)= ∅ δ(q0 , 1)= ∅ δ(q0 , λ)= {q1 } q0 q1 q2 q1 δ(q1 , 0)= ∅ δ(q1 , 0)= {q3 } δ(q1 , λ)= {q2 } 0 1 λ ∅ ∅ {q1 } ∅ ∅ {q3 } {q2 } {q3 } {q1 } {q2 } ∅ {q0 } δ(q2 , 0)= {q1 } δ(q2 , 1)= {q2 } δ(q2 , λ)= ∅ δ(q3 , 0)= ∅ δ(q3 , 1)= {q3 } δ(q3 , λ)= {q0 } λ q0 λ λ q1 q2 1 1 0 q3 1 DSIC - UPV http://www.dsic.upv.es – p. 12 Autómata finito no determinista con transiciones vacı́as • Equivalencia entre AFλ y AFN Sea A = (Q, Σ, δ, q0 , F ) un AFλ. Construimos un AFD A′ = (Q, Σ, δ ′ , q0 , F ′ ) tal que L(A) = L(A′ ) de la siguiente forma: ( F ∪ {q0 }, si λ − clausura(q0 ) ∩ F 6= ⊘ ◦ F′ = F, en otro caso ◦ δ ′ (q, a) = δ̂(q, a) tomando a ∈ Σ, x ∈ Σ∗ , q ∈ Q y donde: δ̂(q, λ) = λ − clausura(q) δ̂(q, xa) = λ − clausura S p∈δ̂(q,x) ! δ(p, a) • A partir de este punto, puede obtenerse un AFD utilizando la transformación ya vista. DSIC - UPV http://www.dsic.upv.es – p. 13 Autómata finito no determinista con transiciones vacı́as • ejercicios: 1 q0 a q1 b 0 q0 q1 c λ q2 q2 λ q3 a b q3 1 0 λ b 1 λ λ a q4 c DSIC - UPV http://www.dsic.upv.es – p. 14 Gramáticas Definiciones • Una gramática G es una cuádrupla G = (N, Σ, P, S) donde: ◦ N es un conjunto finito no vacío de símbolos llamados auxiliares ◦ Σ es un alfabeto finito no vacío de símbolos llamados terminales. Se cumple que Σ ∩ N = ∅. Llamaremos V = Σ ∪ N . ◦ S ∈ N es un símbolo auxiliar especial llamado axioma ◦ P es un conjunto de reglas de producción P ⊆ V ∗N V ∗ × V ∗. Una producción (α, β) suele denotarse α → β p.e.: L = {an bn | n ≥ 1} G = {{N }, {a, b}, {S → ab, S → aSb}, S} DSIC - UPV http://www.dsic.upv.es – p. 15 Gramáticas Tipos de gramáticas. Jerarquía de Chomsky. • Regulares (tipo 3): A, B ∈ N ; a, b ∈ Σ ∪ {λ} ◦ Lineales por la derecha: A → aB|b ◦ Lineales por la izquierda: A → Ba|b • Incontextuales (tipo 2): A → α donde A ∈ N , α ∈ V ∗ . • Contextuales (tipo 1): γAδ → γαδ con A ∈ N , γ, δ ∈ V ∗ , α ∈ V +. ◦ Formas sentenciales de longitud creciente ◦ S → λ para permitir λ ∈ L(G). !! ATENCIÓN !! • No restringidas (tipo 0) L3 ⊂ L2 ⊂ L1 ⊂ L0 DSIC - UPV http://www.dsic.upv.es – p. 16 Equivalencia Autómata Finito - Gramática Regular • Si L es un lenguaje regular, entonces L es aceptado por un autómata finito A. • Dada G = (N, Σ, P, S) lineal por la derecha (L = L(G)), construimos un AFλ A = (Q, Σ, δ, q0 , F ) tal que L(A) = L: ◦ Q = N ∪ {X} tal que X 6∈ N ◦ q0 = S ◦ F = {X} ◦ función de transición (A, B, X ∈ N , a ∈ Σ ∪ {λ}) • ∀(A → aB) ∈ P se define B ∈ δ(A, a) • ∀(A → a) ∈ P se define X ∈ δ(A, a) • ∀a ∈ Σ ∪ {λ} se define δ(X, a) = ∅ DSIC - UPV http://www.dsic.upv.es – p. 17 Equivalencia Autómata Finito - Gramática Regular • Si L es aceptado por un autómata finito A, entonces L es un lenguaje regular. • Sea A = (Q, Σ, δ, q0 , F ) un AFλ (L = L(A)). Construimos G = (N, Σ, P, S) lineal por la derecha tal que L = L(G) ◦ N =Q ◦ S = q0 ◦ reglas de producción (q, q ′ ∈ Q, a ∈ Σ ∪ {λ}) • ∀q ′ ∈ δ(q, a) se define q → aq ′ ∈ P • ∀q ∈ F se define q → λ′ ∈ P DSIC - UPV http://www.dsic.upv.es – p. 18