Teoria da Computação
Aula Teórica 11:
Conversão de NFAs para DFAs
António Ravara
Departamento de Informática
21 de Abril de 2020
A intuição Contexto
Relação entre Expressões Regulares e AFDs
Expressividade de um modelo computacional
Conjunto de programas que processa.
I Um programa implementa um algoritmo para calcular uma função.
I Considerando cada instrução for um símbolo, um programa é uma
“palavra” e o conjunto de programas válidos que se podem escrever,
uma “linguagem”.
ERs vs. AFDs
L(ER) = L(AFD)
Vai-se mostrar que L(ER) ⊆ L(AFD) e L(ER) ⊇ L(AFD).
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 2 / 14
A intuição Contexto
O resultado pretendido
Linguagens regulares ⊆ Linguagens aceites por AFDs
Uma linguagem denotada por uma ER é linguagem de um AFD.
I A função Compile ⊆ RegExp(Σ) → AFN Σ fornece o resultado para a
linguagem de um AFN.
I A linguagem de um AFN será “mais que regular”?
Consegue-se representar com um AFN um sistema que não se
consegue representar com um AFD?
I A diferença em termos de palavras processadas por AFNs e AFDs são
as transições-.
Mas o é o elemento neutro da concatenação de palavras...
I O conjunto das linguagens aceites por AFNs deve coincidir com o das
linguagens aceites por AFDs.
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 3 / 14
A intuição Contexto
Linguagens de AFN Σ e AFDΣ coincidem?
I Obviamente, qualquer AFD é também um AFN, ou seja,
AFDΣ ⊆ AFN Σ .
Logo qualquer linguagem aceite por um AFD é também uma
linguagem aceite por algum AFN.
I O desafio é provar a inclusão inversa:
qualquer linguagem aceite por um AFN é também uma linguagem
aceite por algum AFD.
I É necessário ver se há uma forma de converter AFNs em AFDs.
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 4 / 14
A intuição Contexto
Linguagens de AFN Σ são linguagens de AFDΣ ?
Como proceder?
Para ver se dada palavra w é aceite num AFN pode-se explorar
simultaneamente todos os possíveis caminhos, em paralelo:
I Parte-se do símbolo inicial da palavra e do estado inicial do autómato,
e regista-se o conjunto de estados para onde se pode transitar pela
mesma acção.
sendo w = a w 0 então hs, |a w 0 i −→ hT , a | w 0 i com
T = {t ∈ S | hs, |a w 0 i −→ ht, a | w 0 i}
I Itera-se o processo para cada estado no conjunto obtido, consumindo
os símbolos da palavra.
I Os conjuntos de estados são tratados como estados “únicos” – o nome
do estado é o conjunto.
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 5 / 14
A intuição Processamento paralelo
Processamento em “paralelo” de uma palavra num AFN
Um exemplo: o AFN BOB
S2
1
1
0 0
S1 S5 S4
0
1 0
S3
BOB aceita 100 e 010?
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 6 / 14
A intuição Processamento paralelo
Processamento de 100 no AFN BOB
1
I hS1 , |100i →
− hS2 , 1|00i porque (S1 , 1, S2 ) ∈ ∆
1
I hS1 , |100i →
− hS3 , 1|00i porque (S1 , 1, S3 ) ∈ ∆
1
I hS1 , |100i → − hS4 , 1|00i porque 1 = 1 , (S1 , 1, S2 ) ∈ ∆ e
(S2 , , S4 ) ∈ ∆
1
Logo, h{S1 }, |100i →
− h{S2 , S3 , S4 }, 1|00i
0
I hS2 , 1|00,i →
−
6 porque não há transições por 0 de S2
0
I hS3 , 1|00i →
−
6 porque não há transições (por 0) de S3
0
I hS4 , 1|00i →
− hS3 , 10|0i porque (S4 , 0, S3 ) ∈ ∆
0
Logo, h{S2 , S3 , S4 }, 1|00i →
− h{S3 }, 10|0i.
Como S3 não tem transições, a palavra não é aceite.
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 7 / 14
A intuição Processamento paralelo
Processamento de 010 no AFN BOB
0
I hS1 , |010i →
− hS5 , 0|10i porque (S1 , 0, S5 ) ∈ ∆
0
Logo, h{S1 }, |010i →
− h{S5 }0|10i
1
I hS5 , 0|10i →
− hS2 , 01|0i porque (S5 , 1, S2 ) ∈ ∆
1
I hS5 , 0|10i → − hS4 , 01|0i porque 1 = 1 , (S5 , 1, S2 ) ∈ ∆ e
(S2 , , S4 ) ∈ ∆
1
Logo, h{S5 }, 0|10i →
− h{S2 , S4 }, 01|0i.
0
I hS2 , 01|0i →
−
6 porque não há transições por 0 de S2
0
I hS4 , 01|0i →
− hS3 , 010|i porque (S4 , 0, S3 ) ∈ ∆
0
Logo, h{S2 , S4 }, 01|0i →
− h{S3 }, 010|i.
Como S3 é estado final, a palavra é aceite.
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 8 / 14
A intuição Processamento paralelo
Como se procedeu?
I Exploraram-se todas as possíveis transições não deterministas em
paralelo.
I Registaram-se os conjuntos de estado acessíveis por dada acção, em
vez estados individuais (como na relação de transição).
I Ao definir as transições entre conjuntos de estados, recuperou-se o
comportamento determinista (a relação de transição é de novo uma
função).
Como proceder então para obter o AFD dBOB, equivalente ao AFN BOB?
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Novadede2020
Lisboa) 9 / 14
Determinização A ideia
“Determinização” de BOB - dBOB
Os estados de dBOB são conjuntos de estados de BOB.
I O estado inicial de dBOB é um conjunto com os estados de BOB
acessíveis do seu estado inicial por transições-.
Então seja R1 = {S1 } o estado inicial.
I Que transições partem de R1 ?
Por 1 chega-se a R2 = {S2 , S3 , S4 }. Logo, δdBOB (R1 , 1) = R2 .
Por 0 chega-se a R3 = {S5 }. Logo δdBOB (R1 , 0) = R3 .
I Que transições partem de R2 ?
Por 0 chega-se a R4 = {S3 }. Logo, δdBOB (R2 , 0) = R4 .
De S2 , S3 e S4 não há transições por 1 — o conjunto de estados
acessíveis é o vazio. Fica δdBOB (R2 , 1) indefinido.
I Que transições partem de R3 ?
Por 0 chega-se a R5 = {S3 , S4 }. Logo, δdBOB (R3 , 0) = R5 .
Por 1 chega-se a R6 = {S2 , S4 }. Logo,δdBOB (R3 , 1) = R6 .
I Analisam-se igualmente as transições de R5 e de R6 .
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Nova
de de
2020
Lisboa) 10 / 14
Determinização A ideia
O AFD dBOB, equivalente ao AFN BOB
Os estados finais de dBOB são os que contém algum estado final de BOB
(quando algum é alcançado, termina-se o processamento).
R2
R4
{S2 , S3 , S4 } 0
R1 R5 {S3 }
1
0
{S1 } R3 {S3 , S4 }
0 0
{S5 } 0
1
{S2 , S4 }
R6
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Nova
de de
2020
Lisboa) 11 / 14
Determinização Construção de Rabin-Scott
A construção de “determinização”
I O processo visa obter um AFD de um AFN, equivalente no sentido
que reconhece a mesma linguagem.
I A conversão chama-se “Rabin-Scott powerset construction” e foi
proposta em 1959.
I Usa duas noções auxiliares:
I Fecho- de um conjunto de estados (U ⊆ SA ) de um AFN A: conjunto
de estados acessíveis dos estados em U por transições-.
closeempty ⊆ ℘(S) → ℘(S)
closeempty = {U 7→ V | V = {s | ∃t.t ∈ U ∧ stepA (t, , s)}}
I Fecho-a de um conjunto de estados (U ⊆ SA ) de um AFN AΣ , com
a ∈ Σ: conjunto de estados acessíveis dos estados em U por
transições-a.
move ⊆ ℘(S) × Σ → ℘(S)
move = {U × a 7→ V | V = {s | ∃t.t ∈ U ∧ (t, a, s) ∈ ∆A }}
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Nova
de de
2020
Lisboa) 12 / 14
Determinização Construção de Rabin-Scott
Rabin-Scott Powerset Construction
Dado um A = hSA , ΣA , sA , ∆A , FA i obtém-se um AFD
D = hSA , ΣD , sD , δD , FD i da seguinte forma:
I SD = ℘(SA ).
Os estados de D são subconjuntos de estados de A
(mas basta considerar os acessíveis do estado inicial).
I ΣD = ΣA
I sD = closeempty ({sA })
I δD = {(s, a) 7→ s 0 ∈ SD × ΣD × SD | s 0 = closeempty (move({s}, a))}
I FD = {s ∈ SD | s ∩ FA 6= ∅}
Os estados finais de D são os que contêm pelo menos um estado final
de A.
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Nova
de de
2020
Lisboa) 13 / 14
Determinização Construção de Rabin-Scott
Conversão de AFNs em AFDs
I É fácil mostrar que um AFD D que resulta da conversão de um AFN
A reconhece exactamente a linguagem de A.
Prova-se que A e D se simulam mutuamente para cada possível
palavra.
I A construção gera um AFD potencialmente com um grande número
de estados:
O número de estados de um AFD D obtido por conversão de um AFN
A é exponencialmente maior: #SD = 2#SA .
I Por um lado, um AFN expressa uma linguagem regular de forma muito
compacta, sendo um bom mecanismo de especificação.
I Um AFN não é prático de implementar, mas um AFD, que se
implementa facilmente, pode usar muito mais memória.
António Ravara (Departamento de Informática, Faculdade
Teoria dadeComputação
Ciências e Tecnologia, Universidade
21 de Abril
Nova
de de
2020
Lisboa) 14 / 14