Study Notes

Autômatos

Core Concepts

  • Alfabeto: Σ\Sigma conjunto finito não vazio de símbolos.
  • String: ww sequencia finita de símbolos de um Σ\Sigma . representa-se w|w| o tamanho da string e λ\lambda strings vazias/sem símbolos (λ=0|\lambda| = 0). É uma tupla de símbolos.
  • Fecho: Σ=n=0Σn\Sigma^* = \bigcup_{n=0}^{\infty} \Sigma^n fechamento de Kleene é o conjunto com todas ww existentes em um Σ\Sigma.
  • Concatenação: operação que forma uma nova palavra a partir da justaposição de duas palavras.
  • Substring: uma palavra que aparece em outra. se aparecerem no final é sufixo e se aparecerem no inicio é prefixo.
  • Auto-contatenação: wiw^i recursivamente definida por:
    1. w0=λw^0=\lambda;
    2. wi=w(i1)ww^i=w^(i-1)w ;
  • Reverso: wRw^R recursivamente definido por:
    1. se w=0|w|=0, wR=λw^R=\lambda;
    2. se w>0|w|>0, wR=ayRw^R=ay^R sendo w=yaw=ya para algum aΣa\in\Sigma e yΣy\in\Sigma^*;
  • Linguagem: LΣL\subseteq\Sigma^*, exemplo de LiL_i linguagens formadas a partir do alfabeto binário Σ=0,1\Sigma={0,1} e do fecho Σ={λ,0,1,00,01,11,000,001,010,011,...}\Sigma^*=\{\lambda,0,1,00,01,11,000,001,010,011,...\}
    • L0=L_0=\emptyset
    • L1=λL_1=\lambda
    • L2={0,1,00}L_2=\{0,1,00\}
    • L3=L_3= {wΣw\in\Sigma^* | w é um binário múltiplo de 3}
    • L4={wΣw=01i,i>=0}L_4=\{w\in\Sigma^*|w=01^i,i>=0\} // 01, 011, 0111,... como linguagens são string sets podemos aplicar as mesmas operações de strings (concatenação, substring, reverso, auto-concatenação e etc) nas linguagens como um todo. Sejam as languages L1={ab,1}L_1=\{ab,1\} e L2={λ,b,bb}L_2=\{\lambda,b,bb\}.
    • L1L2={ab,abb,abbb,1,1b,1bb}L_1L_2=\{ab,abb,abbb,1,1b,1bb\}
    • (L1)2={abab,ab1,1ab,11}(L_1) ^2=\{abab,ab1,1ab,11\}
    • (L1)={λ,ab,abab,ab1,1ab,11,ababab,abab1,...}(L_1)^*=\{\lambda,ab,abab,ab1,1ab,11,ababab,abab1,...\}
    • (L1)+={ab,abab,ab1,1ab,11,ababab,abab1,...}(L_1)^+=\{ab,abab,ab1,1ab,11,ababab,abab1,...\}
  • Conjunto Regular: (ou linguagem regular), dado um Σ\Sigma, o conjunto que pode ser gerado a partir das operações: união, concatenação e fechamento.
  • Regular Expressions: são uma forma simbólica de especificar conjuntos regulares. Conjunto Regular -> Expressão Regular
    • {b}\{b\} -> bb
    • {a,b}\{a,b\} -> aba \cup b
    • {ab}\{ab\} -> abab
    • {a,b}{a,b}={aa,ab,ba,bb}\{a,b\}\{a,b\}=\{aa,ab,ba,bb\} -> (ab)(ab)(a \cup b)(a \cup b)
    • {a}={λ,a,aa,aaa,...}\{a\}^*=\{\lambda, a,aa,aaa,...\} -> aa^*
    • {λ,a,b,aa,ab,ba,bb,aaa,aab...}\{\lambda,a,b,aa,ab,ba,bb,aaa,aab...\} -> (ab)(a \cup b)^*

Autômato Finito - AF

Um AF (ou máquina de estados finito) é um modelo matemático de computação que descreve um máquina abstrata que processa strings de forma sequencial (símbolo a símbolo) e unidirecional (como uma fita de leitura).
af img ela é composta por:

  • Fita de Leitura Unidirecional
  • Controle + Função de Transição
  • Registrador de Estado Atual

Um autômato reconhece uma linguagem se a última transição resultar em um estado final.

AF Determinístico - AFD

M=(E,Σ,δ,i,F)M = (E, \Sigma, \delta, i, F).

  • MM: AFD.
  • EE: conjunto finito de estados.
  • δ:E×ΣE\delta: E \times \Sigma \to E: função de transição. (δ\delta é uma função total).
  • iEi \in E: é o estado inicial.
  • FEF \subseteq E: são os estados finais.

Para toda linguagem finita existe um AFD.

Propriedades
  • Cada (e,s)E×Σ(e, s) \in E \times \Sigma leva a um único outro EE, não há "escolha própria" (se tiver em um estado e lendo um certo símbolo SEMPRE levará ao mesmo estado). É um autômato determinista.
  • Todos os pares (e,s)E×Σ(e, s) \in E \times \Sigma são mapeados para um outro estado. A função δ\delta é total.
  • Existe apenas um único estado inicial ii. E exitem um conjunto FF finito de estados finais.
Linguagem de um AFD

L(M)={wΣ[i,w][f,λ]fF}L(M)=\{w \in \Sigma^* \mid [i, w] \vdash^* [f, \lambda] \text{, } \exists f \in F \}. Ou seja, LL é um conjunto de palavras ww que a partir de uma sequência de transições de estados chega-se na configuração [f,λ][f, \lambda], ou seja, todos os símbolos são processados e o estado atual é um dos finais. Em resumo, um conjunto de palavras que o autômato aceita/reconhece. Dizemos que dois AFDs são equivalentes quando ambos reconhecem a mesma linguagem.

Determinismo: Completo vs Incompleto

Se δ\delta é total, dizemos que o determinismo é completo. Se δ\delta é parcial, dizemos que o determinismo é parcial. afds_completo_vs_incompleto.excalidraw No exemplo acima, M1M2M_1 \equiv M_2 pois ambos reconhecem a mesma linguagem (ab)c(ab)^*c. No entanto, a diferença entre eles é que dada uma palavra inválida (como, aaaaaaaaaaaaaaaaaa) M1M_1 iria ler todos os asa's até chegar na configuração [e,λ]eF[e, \lambda] \mid e \notin F (mais precisamente e=Errore = Error), rejeitando a string. Já M2M_2 determinista incompleto iria produzia uma parada HALT imediatamente ao ler o segundo aa da palavra, rejeitando naquele momento mesmo.

Produto de AFDs

É a simulação de dois AFDs em paralelo. Seja M1=(E1,Σ,δ1,i1,F1)M_1=(E_1,\Sigma,\delta_1, i_1,F_1) e M2=(E2,Σ,δ2,i2,F2)M_2=(E_2,\Sigma,\delta_2, i_2,F_2) pode-se construir M3=(E3,Σ,δ3,i3,F3)M_3=(E_3,\Sigma,\delta_3, i_3,F_3) em que:

  • E3=E1×E2E_3 = E_1 \times E_2
  • i3=(i1,i2)i_3 = (i_1, i_2)
  • δ3((e1,e2),a)=(δ1(e1,a),δ2(e2,a)),e1E1,e2E2,aΣ\delta_3((e_1,e_2), a) = (\delta_1(e_1,a),\delta_2(e_2,a)), \forall e_1 \in E_1, e_2 \in E_2, a \in \Sigma
F3={F1×F2L(M3)=L(M1)L(M2)(F1×E2)(E1×F2)L(M3)=L(M1)L(M2)F_3 = \begin{cases} F_1 \times F_2 & L(M_3) = L(M_1) \cap L(M_2) \\ (F_1 \times E_2) \cup (E_1 \times F_2) & L(M_3) = L(M_1) \cup L(M_2) \end{cases}

afd_produto.excalidraw Dessa forma, ao executar-se dois AFDs os estados finais que definem se a linguagem L(M3)L(M_3) do AFD produzido será:

  • INTERSECÇÃO, L(M3)=L(M1)L(M2)L(M_3)=L(M_1) \cap L(M_2), se F3=F1×F2={(pz,pu)}F_3=F_1 \times F_2 =\{(pz, pu)\}. (Ou seja, L(M3)L(M_3) seria as palavras que possuem # pares de 1 E # pares de 0).
  • UNIÃO, L(M3)=L(M1)L(M2)L(M_3)=L(M_1) \cup L(M_2), se F3=(F1×E2)(E1×F2)={(pz,pu),(pz,iu),(iz,pu)}F_3=(F_1 \times E_2) \cup (E_1 \times F_2)=\{(pz, pu), (pz, iu), (iz, pu)\}. (Ou seja, L(M3)L(M_3) seria as palavras que possuem # pares de 1 OU # pares de 0).

AF Não Determinístico - AFN

M=(E,Σ,δ,i,F)M = (E, \Sigma, \delta, i, F).

  • δ:E×ΣP(E)\delta: E \times \Sigma \to \mathcal{P}(E): função de transição. (P(E)\mathcal{P}(E) é o power set de EE).

Uma palavra pode gerar diferentes computações.

Se existir alguma computação de ww que resulta na configuração [e,λ]eF[e, \lambda] \mid e \in F significa que wL(M)w \in L(M).

AF Não Determinístico com Transição λ\lambda - AFN-λ\lambda

M=(E,Σ,δ,i,F)M = (E, \Sigma, \delta, i, F).

  • δ:E×(Σ{λ})P(E)\delta: E \times (\Sigma \cup \{\lambda\}) \to \mathcal{P}(E): função de transição. A transição λ\lambda (ou vazia) é aquela realizada sem a necessidade de nenhum símbolo de entrada.

Equivalência entre AFs

Autômatos são equivalentes se reconhecem a mesma linguagem.

afds_eq.png

Função Fecho lambda - fλf\lambda

Conjunto de todos os estados que podem ser alcançados a partir do mesmo sem a leitura de nenhum símbolo de entrada.

Conversões de AFs

Converter um AF em outro equivalente é mudar a computação mas manter a linguagem aceita.

AFN-λ\lambda ⟶ AFN
  • AFN-λ\lambda: M=(E,Σ,δ,i,F)M = (E, \Sigma, \delta, i, F);
  • AFN: M=(E,Σ,δ,i,F)M' = (E, \Sigma, \delta', i, F');
δ(ei,a)=rfλ(ei)fλ(δ(r,a)),eiE,aΣ\delta'(e_i,a)=\bigcup_{r \in f\lambda(e_i)}f\lambda(\delta(r,a)), \forall e_i \in E, \forall a \in \Sigma F={F{i}, if fλ(i)FF, elseF' = \begin{cases} F \cup \{i\} & \text{, if } f \lambda(i) \cap F \neq \emptyset \\ F & \text{, else} \end{cases}
AFN ⟶ AFD

  • AFN: M=(E,Σ,δ,i,F)M = (E, \Sigma, \delta, i, F);
  • AFD: M=(E,Σ,δ,i,F)M' = (E', \Sigma, \delta', i', F');
E=P(E)E'=\mathcal{P}(E) i={i}i'=\{i\} F={RERF}F'=\{R \in E' \mid R \cap F \neq \emptyset\} δ(R,a)=rRδ(r,a),RE,aΣ\delta'(R,a)=\bigcup_{r \in R}\delta(r,a), \forall R \in E', \forall a \in \Sigma

Referências


On this page