Escolar Documentos
Profissional Documentos
Cultura Documentos
Orientado por
Prof. Doutor José Carlos Espírito Santo
13 de Janeiro de 2020
Stephen Kleene
Noam Chomsky
(1909-1994)
Autómato finito é um modelo matemático de computação de um
sistema com entradas e saídas discretas.
Stephen Kleene
Noam Chomsky
(1909-1994)
Autómato finito é um modelo matemático de computação de um
sistema com entradas e saídas discretas.
q4 q1 0 q2
0,1
1 0
1 0,1
q3 start q0
0 1 0 1
start q0 q1 q2 q3 q4
0 0 1
AFD A0
Produz saídas: aceite ou
0,1 q4 rejeitada
Quando recebe uma palavra
1 0100 o processo
1 0,1 1 Inicia em q0 ;
q3 2 Lê 0 e transita para q1 ;
3 Lê 1 e transita para q3 ;
4 Lê 0 e transita para q1 ;
1 0 5 Lê 0 e transita para q2 ;
6 Aceitar ...
start q0 q1 q2
0 0
G(A0 )
q0 q1 q4
q1 q2 q3
q3
q2 q4
q3 q1 q4
q4 q4
q0 q1 q2
Breadth-first-search (BFS)
Recebe um grafo e um vértice fonte;
Aos vértices são atribuídos cores (WHITE, GRAY, BLACK) e um valor
que os distância com o vértice fonte;
Vértices descobertos são pintados de cinza(GRAY);
Todos os vértices visitados estarão pintados de preto (BLACK).
Breadth-first-search (BFS)
BFS
q4
q3 Q q0
0
q0 q1 q2
BFS
q4
q3 Q q1 q4
1 1
q0 q1 q2
BFS
q4
q3 Q q2 q3
2 2
q0 q1 q2
BFS
q4
q3 Q q3
2
q0 q1 q2
BFS
q4
q3 Q ∅
q0 q1 q2
Teorema 1
Sejam A um AFD e n ∈ N o número de estados de A.
L(A) 6= ∅ se, e só se, A aceita alguma palavra de comprimento menor que
n.
Teorema 2
Seja A = (Q, A, δ, i, F ) um AFD. L(A) 6= ∅ se, e só se, existir em A um
estado final acessível.
Teorema 1
Sejam A um AFD e n ∈ N o número de estados de A.
L(A) 6= ∅ se, e só se, A aceita alguma palavra de comprimento menor que
n.
Teorema 2
Seja A = (Q, A, δ, i, F ) um AFD. L(A) 6= ∅ se, e só se, existir em A um
estado final acessível.
q4
Grafo G 0 produzido pelo
BFS(G , q0 ) onde G = G(A0 )
V = {q0 , q1 , q2 , q3 , q4 }
q3
F = {q2 , q3 }
A0 não aceita a linguagem vazia:
acessivel:= true .
q0 q1 q2
Complexidade de tempo
VAZIA é decidível em tempo O(n2 ), onde n = #Q.
Gerson B Hungulu (Uminho) 13 de Janeiro de 2020 27 / 1
Problema da linguagem Infinita
Teorema 1
Sejam A um AFD e n ∈ N, o número de estados de A.
L(A) é infinita se, e só se, A aceita alguma palavra de comprimento l, para
algum l satisfazendo n ≤ l < 2n.
Teorema 2
Sejam A = (Q, A, δ, i, F ) e A0 = (Q 0 , A, δ 0 , i, F 0 ) AFD onde:
Q 0 = {q ∈ Q | q é acessível e co-acessível em A}
F 0 = F ∩ Q0
δ 0 = δ|Q 0 ×A = δ ∩ ((Q 0 × A) × Q 0 )
Qualquer que seja u ∈ A∗ , u ∈ L(A0 ) se, e só se, u ∈ L(A)
Teorema 3
Seja A AFD acessível e co-acessível. Seja G(A) o grafo do autómato A.
L(A) é infinita se, e só se, G(A) é cíclico.
DFS-ACESSIVEL
1: procedure DFS-ACESSIVEL(G , Q 0 )
2: for each vertex u 0 ∈ V [G ] do . "pinta" WHITE todos vértices
3: 0
color [u ] ← WHITE
4: π[u 0 ] ← NIL
5: time ← 0
6: for each q ∈ Q 0 do . descobre os vértices fontes q
7: if color [q] = WHITE then
8: DFS-VISIT(q)
9: 0
G := APAGAR(G ) . apaga vértices que não são BLACK
DFS-CICLICO
q4
q0 q1 q2
1/
q4 2/
q0 q1 q2
1/
B q4 2/
q0 q1 q2
1/
B q4 2/3
q0 q1 q2
1/
B q4 2/3
q0 q1 q2
1/ 4/
B q4 2/3
q0 q1 q2
1/ 4/
B q4 2/3
apf
Produção do grafo G0 pelo
q3 5/
DFS-ACESSIVEL(G , {q0 }) onde
G = G(A0 )
q0 q1 q2
1/ 4/
B q4 2/3
apf
Produção do grafo G0 pelo
q3 5/
DFS-ACESSIVEL(G , {q0 }) onde
G = G(A0 )
B
q0 q1 q2
1/ 4/
B q4 2/3
apf
Produção do grafo G0 pelo
q3 5/6
DFS-ACESSIVEL(G , {q0 }) onde
G = G(A0 )
B
q0 q1 q2
1/ 4/
B q4 2/3
apf
Produção do grafo G0 pelo apf
q3 5/6
DFS-ACESSIVEL(G , {q0 }) onde
G = G(A0 )
B
q0 q1 q2
1/ 4/ 7/
B q4 2/3
apf
Produção do grafo G0 pelo apf
q3 5/6
DFS-ACESSIVEL(G , {q0 }) onde
G = G(A0 )
B
q0 q1 q2
1/ 4/ 7/
B q4 2/3
apf
q0 q1 q2
1/ 4/ 7/8
B q4 2/3
apf
q0 q1 q2
1/ 4/9 7/8
B q4 2/3
apf
q0 q1 q2
1/10 4/9 7/8
B q4 2/3
apf
apf
Grafo G1 produzido pelo q3 5/6
procedimento inverter
B
q0 q1 q2
1/10 4/9 7/8
q4
q0 q1 q2
q4
q0 q1 q2
C
3/4 2/5 7/8
q0 q1 q2
C
3/4 2/5 7/8
DFS-CICLICO(q2 ) q3
pesquisando G2
q0 q1 q2
q3 5/6
DFS-CICLICO(q2 )
pesquisando G2 B
q1 não é WHITE:
back_edge:= true q0 q1 q2
3/4 2/7 1/8
Complexidade de tempo
INFINITA é decidível em tempo O(n2 ), onde n = #Q.
Predicado Vazia
vazia : ER(A) → {V , F }
vazia(∅) = V
vazia() = vazia(a) = F
vazia(r1 + r2 ) = vazia(r1 ) ∧ vazia(r2 )
vazia(r1 .r2 ) = vazia(r1 ) ∨ vazia(r2 )
vazia(r ∗ ) = F
Complexidade de tempo
O predicado vazia é decidível em tempo O(n).
Predicado Epsilon
epsilon : ER(A) → {V , F }
epsilon(∅) = epsilon(a) = F
epsilon() = V
epsilon(r1 + r2 ) = epsilon(r1 ) ∧ epsilon(r2 )
epsilon(r1 .r2 ) = epsilon(r1 ) ∧ epsilon(r2 )
epsilon(r ∗ ) = epsilon(r ) ∨ vazia(r )
Complexidade de tempo
O predicado epsilon é decidível em tempo O(n).
Predicado Infinita
infinita : ER(A) → {V , F }
infinita(∅) = infinita() = infinita(a) = F
infinita(r1 + r2 ) = infinita(r1 ) ∨ infinita(r2 )
F se vazia(r1 ) ∨ vazia(r2 )
infinita(r1 .r2 ) =
infinita(r1 ) ∨ infinita(r2 ) se não
∗ F se vazia(r ) ∨ epsilon(r )
infinita(r ) =
V se não
Complexidade de tempo
O predicado infinita é decidível em tempo O(n).
Orientado por
Prof. Doutor José Carlos Espírito Santo
13 de Janeiro de 2020