1 linguagens recursivamente enumeráveis e recursivas
TRANSCRIPT
1
Linguagens
Recursivamente Enumeráveis
e Recursivas
2
Definição:
Uma linguagem é recursivamente enumerável
se existe alguma Máquina de Turing que aceita tal linguagem
3
Para um string :
Seja uma linguagem recursivamente enumerávelL
e uma Máquina de Turing que a aceitaM
Lw
w
se então pára em um estado finalM
Lwse então pára em estado não final
M
ou entra em loop infinito
4
Definição:
Uma linguagem é recursiva
se existe uma MT que aceita a linguagem e que pára para qualquer string de entrada
Em outras palavras: Uma linguagem é recursiva se existe um algoritmo de pertinência para essa linguagem
5
Para qualquer string :
Seja uma linguagem recursivaL
e uma máquina de Turing que a aceitaM
Lw
w
se então pára em um estado finalM
Lwse então pára em um estado não final
M
6
Vamos provar que:
1. Existe uma linguagem específica que não é recursivamente enumerável(não é aceita por nenhuma Máquina de Turing)
2. Existe uma linguagem específica que é recursivamente enumerável mas não é recursiva
7
Recursiva
Recursivamente Enumerável
Não Recursivamente Enumerável
8
Primeiro vamos provar provar:
• Se uma linguagem é recursiva então existe um procedimento de enumeração para ela
• Uma linguagem é recursivamente enumerável se e somente se existe um procedimento de enumeração para ela
9
Teorema:
Se é uma linguagem recursiva entãoexiste um procedimento de enumeração para
L
L
10
Prova:
MM~
Máquina Enumeradora
Aceita LEnumera todos os strings do alfabeto de entrada
11
Se o alfabeto é então pode enumerar os strings do seguinte modo:
},{ baM~
abaaabbabbaaaaab......
12
Procedimento de Enumeração
Repita:
M~ gera um string
M
w
verifica se Lw
SIM: imprime na saídaw
NÃO: ignoraw
Fim da Prova
13
Exemplo:
M~
abaaabbabbaaaaab......
)(ML
b
ab
bbaaa
......
,....},,,{ aaabbabbL Saída do
Enumerador
b
ab
bbaaa
......
14
Teorema:
Se uma linguagem é recursivamente enumerável entãoexiste um procedimento de enumeração para ela
L
15
Prova:
MM~
Máquina Enumeradora
Aceita LEnumera todos os stringsdo alfabeto de entrada
16
Se o alfabeto é então pode enumerar os strings como:
},{ baM~
abaaabbabbaaaaab
17
Procedimento de Enumeração
Repita: M~ gera um string
M
w
verifica se Lw
SIM: imprime na saídaw
NÃO: ignora w
ABORDAGEM INGÊNUA
Problema:Se a máquina pode ficar em loop
LwM
18
M~
M
1w
executa o 1o. passo sobre
ABORDAGEM MELHOR
1w
M~ Gera o segundo string 2w
M executa o 1o. passo sobre 2w
e o 2o. passo sobre 1w
Gera o primeiro string
19
M~ Gera o terceiro string 3w
M executa o 1o. passo sobre 3w
o 2o. passo sobre 2w
o 3o. passo sobre 1w
E assim por diante............
20
1w 2w 3w 4w
1
Passo nostring
1 1 1
2 2 2 2
3 3 3 3
21
Se, para um dado string ,a máquina pára em um estado final,então ela imprime na fita de saída
Miw
iw
Fim da Prova
22
Teorema:
Se existe um procedimento de enumeraçãopara uma linguagem então é recursivamente enumerável
L
L
23
Prova:
wfita de entrada
Enumeradorpara L
Compara
Máquina queaceita L
24
Máquina de Turing que aceita L
Repita:
• Usando o enumerador, gere o próximo string de L
Para um string de entrada w
• Compare o string gerado comw
Se for igual, aceite e termine o loop
Fim da Prova
25
Provamos:
Uma linguagem é recursivamente enumerávelse e somente seexiste um procedimento de enumeração p/
L
L
26
Uma Linguagem que não é
Recursivamente Enumerável
27
Queremos encontrar uma linguagem quenão seja Recursivamente Enumerável
Tal linguagem não é aceita por nenhumaMáquina de Turing
28
Considere o alfabeto }{a
Strings: ,,,, aaaaaaaaaa
1a 2a 3a 4a
29
Considere as Máquinas de Turingque aceitam linguagens sobre o alfabeto }{a
Esse conjunto de MTs é contável:
,,,, 4321 MMMM
30
Exemplo de linguagem aceita por
},,{)( aaaaaaaaaaaaML i
},,{)( 642 aaaML i
iM
Representação alternativa
1a 2a 3a 4a 5a 6a 7a
)( iML
0 1 1 10 0 0
31
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
32
Considere a linguagem
)}(:{ iii MLaaL
Lconsiste dos strings que têm 1 na diagonal
33
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
},,{ 43 aaL
34
Considere a linguagem
)}(:{ iii MLaaL
Lconsiste dos strings que têm 0 na diagonal
)}(:{ iii MLaaL
L
35
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
},,{ 21 aaL
36
Teorema:
A linguagem não é recursivamente enumerável
L
37
Prova:
seja recursivamente enumerávelL
Suponha por contradição que
Então deve existir alguma máquinaque aceita
kML
LML k )(
38
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
Questão: ?1MMk
39
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
Resposta: 1MMk )(
)(
11
1
MLa
MLa k
40
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
Questão: ?2MMk
41
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
Resposta: 2MMk )(
)(
22
2
MLa
MLa k
42
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
Questão: ?3MMk
43
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
Resposta: 3MMk )(
)(
33
3
MLa
MLa k
44
De maneira análoga: ik MM
)(
)(
ii
ki
MLa
MLa
)(
)(
ii
ki
MLa
MLa
para qualquer i
Porque temos que:
ou
45
Então, a máquina não pode existir kM
Portanto, a linguagemnão é recursivamente enumerável
L
Fim da Prova
46
Observação:
Não existe algoritmo que descrevaL
(caso contrário seria aceita por alguma Máquina de Turing)
L
47
Recursiva
Recursivamente Enumerável
Não Recursivamente Enumerável
L
48
Uma Linguagem que é Recursivamente
Enumerável e não é Recursiva
49
Queremos encontrar uma linguagem que seja
Existe uma MT que aceita a linguagem
A máquina não pára paraalguma entrada
recursivamente enumerável
mas nãorecursiva
50
Vamos provar que a linguagem
)}(:{ iii MLaaL
É recursivamente enumerávelmas não recursiva
51
1a 2a 3a 4a
)( 1ML
0 1 10
)( 2ML
)( 3ML
01 0 1
0 1 11
)( 4ML 0 10 0
},,{ 43 aaL
52
A linguagem
Teorema:
)}(:{ iii MLaaL
é recursivamente enumerável
53
Prova:
Vamos mostrar uma Máquina de Turing que aceita L
54
Máquina de Turing que aceita LPara qualquer string w
• Compute , para o qualiaw
• Encontre a Máquina de Turing iM(usando o procedimento de enumeração para máquinas de Turing)
• Simule sobre a entradaiM ia
• Se aceita, então aceitaiM w
i
Fim da Prova
55
Observação:
)}(:{ iii MLaaL
)}(:{ iii MLaaL
Recursivamente enumerável
Não recursivamente enumerável
(Portanto, não recursiva)
56
Teorema:
A linguagem )}(:{ iii MLaaL
não é recursiva
57
Prova:
Suponha por contradição que seja recursiva
Então é recursiva:
L
L
Tome a Máquina de Turing que aceita M L
pára para qualquer entrada:M
Se aceita então rejeitaSe rejeita então aceita
MM
58
Portanto:
L seria recursiva
Mas sabemos que:
Lnão é recursivamente enumerável
e, portanto, não é recursiva
CONTRADIÇÃO!!!!
59
Portanto, não é recursivaL
Fim da Prova
60
L
Recursiva
Recursivamente Enumerável
Não Recursivamente Enumerável
L