SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Linguagem universal
Yuri Tavares dos Passos
Problemas
●
Informalmente, um problema é uma
questão sim/não sobre um conjunto infinito
de possíveis instâncias
●
Exemplo: “Um grafo G tem um ciclo
hamiltoniano (ciclo que passa por cada nó
exatamente uma vez)?
– Cada grafo não-dirigido é uma instância do
“problema do ciclo hamiltoniano”.
Problemas
●
Formalmente, um problema é uma
linguagem.
●
Cada string codifica alguma instância.
●
A string pertence a linguagem se e
somente se a resposta para aquela
instância é “sim”.
Exemplo: Um problema
sobre MT
● Nós podemos pensar na linguagem Ld
como um problema.
●
“Dada uma MT, ela não aceita ela
mesma?”
●
Podemos pensar no problema como uma
pergunta sobre strings binárias
– Como perguntaríamos Ld
?
Problemas decidíveis
●
Um problema é decidível se há um
algoritmo para respondê-lo.
– Um algoritmo, formalmente, é uma MT que
trava para qualquer entrada, aceitando ou
não.
– “Problema decidível” = “Linguagem recursiva”.
●
Caso contrário, o problema é indecidível.
Linguagens
recursivas
(Decidíveis)
Linguagens
RE
Linguagens
Não-RE
Ld
Existe al-
guma lin-
guagem aqui?
Linguagens
Conjunto das strings binárias
Do abstrato para o real
● Enquanto que o fato de que Ld
é indecidível
é interessante intelectualmente, não existe
um impacto direto nos problemas do mundo
real.
●
Nós deveríamos desenvolver alguns
problemas relacionados a MT que sejam
indecídiveis, mas nosso objetivo é usar a
teoria para mostrar que alguns problemas
reais são indecidíveis.
Exemplos de problemas
indecidíveis
●
Uma linha particular de código dentro de um programa
será executada?
●
Dada uma gramática livre de contexto, ela é ambígua?
●
Dada duas gramáticas livres de contexto, elas geram
a mesma linguagem?
●
Dada uma linguagem aceita por uma MT, ela é
regular?
●
É possível verificar se um algoritmo qualquer sempre
irá parar?
Técnicas para descobrir
indecibilidade
●
Existem dois métodos convencionais:
– Análise do complemento da linguagem
– Redução a problemas/linguagens
conhecidos(as)
●
Um exemplo de problema conhecido será
apresentado: a linguagem universal.
Complemento de
linguagens RE e R
●
Dada uma linguagem L e seu
complemento L, quantos modos diferentes
podemos inserir L e L no diagrama de
linguagens R, RE e não-RE?
R
RE não R
Não RE
Possibilidade 1
R
RE não R
Não RE
L L
Possibilidade 2
R
RE não R
Não RE
L L
Possibilidade 3
R
RE não R
Não RE
L L
Possibilidade 4
R
RE não R
Não RE
L L
Possibilidade 5
R
RE não R
Não RE
L L
Possibilidade 6
R
RE não R
Não RE
L
L
Possibilidade 7
R
RE não R
Não RE
L
L
Possibilidade 8
R
RE não R
Não RE
L
L
Possibilidade 9
R
RE não R
Não RE
L
L
Complemento de
linguagens RE e R
●
Mas apenas 4 delas são válidas!
●
Veremos com os dois teoremas a seguir
Teorema 1
●
Se L é uma linguagem recursiva, então L
também é.
●
Prova: Basta construir uma MT para L
como na imagem a seguir.
Teorema 1
Teorema 2
●
Se L e L são linguagens RE, então
também L é recursiva.
● Prova: Considere L = L(M1
) e L = L(M2
).
● Construa uma MT M que usa M1
e M2
como na figura a seguir.
Teorema 2
Complemento de R e RE
●
Com estes teoremas, apenas as seguintes
combinações são possíveis:
– L e L são recursivas.
– L e L não são RE.
– L é RE mas não é recursiva e L não é RE.
– L é RE mas não é recursiva e L não é RE.
A linguagem universal
●
Um exemplo de uma linguagem RE, mas
não recursiva é a linguagem Lu
da
máquina de Turing universal (MTU).
●
A MTU toma como entrada o código de
alguma MT M e alguma string binária w e
aceita somente se M aceita w.
A linguagem universal
● A linguagem universal (Lu
) é definida como
a linguagem dos pares (M,w) tais que M
aceita w.
● Será apresentado uma MT que aceita Lu
.
Como criar a MTU
●
As entradas da fita serão da forma:
– M 111 w
●
Nota: Uma MT válida codificada em
binário, nunca possui 111, logo podemos
dividir M de w.
●
A MT deve aceitar sua entrada se e
somente se M é um código válido e M
aceita w.
MTU
●
A MTU possuirá várias fitas.
●
A fita 1 guarda a entrada M111w.
●
A fita 2 guarda a fita de M.
– MTU marca a cabeça de leitura como se fosse
a cabeça de leitura de M.
●
Fita 3 guarda o estado de M.
MTU
MTU
●
Passo 1: A MTU verifica se M é um código
válido.
– Todos os movimentos devem ter cinco
componentes.
– Não há dois movimentos com o mesmo par
(estado,símbolo).
●
Se M não é válida, sua linguagem é vazia,
então a MTU pára sem aceitar.
MTU
●
Passo 2: A MTU examina M para verificar
quantas células de sua fita são
necessárias para representar um símbolo
de M.
●
Passo 3: Inicializa a fita 2 para representar
a fita de M com a entrada w e inicializa a
fita 3 para armazenar o estado inicial.
MTU
●
Passo 4: Simula M.
– Verifica o movimento na fita 1 que
corresponde ao estado na fita 3 e o símbolo
de fita na cabeça de leitura da fita 2.
– Se encontrou, muda o símbolo e move a
cabeça de leitura na fita 2 a muda para o
estado na fita 3.
– Se M aceita, a MTU também aceita.
Pergunta
●
No mundo real, existe algo semelhante a
MTU?
O que é Lu
?
● Lu
= {z| z=M111w e M é uma MT codificada
corretamente e M aceita w}
●
não (A e B) = não A ou não B
● Lu
= {z| z não é da forma M111w ou M não
é uma MT codificada corretamente ou M
não aceita w}
Lu
é RE mas não recursiva
●
Uma MT para MTU foi descrita, logo ela é
RE.
●
Suponha que seja recursiva, isto é, uma
MTU U sempre irá parar.
●
Então, nós podemos rodar um algoritmo para
Ld
como segue.
● Ld
= { w | w representa uma MT M e
w∉L(M)}
Lu
é RE mas não
recursiva
● Ld
é um caso especial de Lu
.
● Lu
= { w | w não tem 111 ou w não é uma
MT codificada corretamente ou w ∉ L(w)}
– Nota: se w não é uma MT M codificada,
L(M)= , logo M não aceita w e, portanto,
∅
w∈Ld
.
Prova
●
Dada uma entrada w, nós podemos decidir se
está em Ld
seguindo os seguintes passos.
1)Verifica se w é um código para MT válida.
1)Se não é, então sua linguagem é vazia, logo w
pertence a Ld
2)Se válido, usa-se U para decidir se w111w ∈ Lu
3)Se w111w ∈ Lu
, então w ∉ Ld
. Senão, w ∈ Ld
.
Prova
Prova
● Mas nós sabemos que Ld
não é RE.
● Portanto, nossa suposição de que Lu
é
recursiva está errada.
● Logo, Lu
é RE, mas não recursiva.
Linguagens
Recursivas
=
Decidíveis
Linguagens
RE
Linguagens
Não RE
Ld
Lu
Estas são indeci-
díveis
Linguagens
Redução
●
Uma redução de uma linguagem L para
uma linguagem L' é um algoritmo (MT que
sempre pára) que usa como entrada uma
string w e a converte para uma string x, tal
que:
– x ∈ L' se e somente se w ∈ L.
Redução de L para L’
Conversor MT para L'
w x
sim sim
MT para L
– x ∈ L' se e somente se w ∈ L.
– Redução de L para L'
Redução
P1
se reduz a P2
MT como um tradutor
●
Até agora as MT foram consideradas
aceitadores de palavras
●
Mas, podemos adaptá-las de tal
forma que elas possuam fitas de
saída, onde uma string é escrita
nesta fita apenas se ela parar.
●
Dessa forma, a MT traduz sua
entrada, escrevendo em sua saída.
Reduções
●
Se reduzirmos L para L' e L' é
decidível, então o algoritmo para L'
junto com o algoritmo de redução
mostram que L também é decidível
●
A contrapositiva mostra que: Se L não
é decidível, então L' não pode ser
também, dado que há redução de L
para L'.
Reduções
● Exemplo: Nós reduzimos Ld para Lu
.
Reduções
●
E chegamos a conclusão da
contrapositiva, isto é:
– Se Ld
não é decidível, então, Lu
também
não é.
Exercícios
●
Considere a linguagem
– L5
= {M|M possui 5 estados}.
Esta linguagem/problema é decidível,
indecidível ou não-RE? Justifique.
Exercícios
●
Considere linguagem A contendo uma
única cadeia, s, onde:
– s = 0, se vida em Marte nunca será
encontrada.
– s = 1, se algum dia a vida em Marte será
encontrada.
A linguagem A é decidível? Justifique.
Assuma que a pergunta para questão da
vida em Marte seja SIM ou NÃO.
Exercícios
●
O problema/linguagem da parada é
enunciado da seguinte forma:
– Dada uma MT M e uma string w, w está
em H(M)?
●
H(M) é a linguagem das palavras que são
aceitas por M por parada.
●
Mostre que o problema da parada é RE
mas não decidível. Dica: use redução.
Exercícios
●
Dê um exemplo de strings w e problemas
P1 e P2 para cada um dos seguintes casos
envolvendo reduções de P1 para P2 e
justifique cada um:
a) w P
∉ 1 e w P
∈ 2.
b) w P
∉ 1 e w P
∉ 2.
Faça o mesmo assumindo P1
está associado a
Ld
e P2
a Lu
.
Exercícios
●
Prove que os seguintes problemas são
indecidíveis:
– Uma linha particular de código dentro de um programa
será executada?
– Dada uma gramática livre de contexto, ela é ambígua?
– Dada duas gramáticas livres de contexto, elas geram a
mesma linguagem?
– Dada uma linguagem aceita por uma MT, ela é regular?
– É possível verificar se um algoritmo qualquer sempre irá
parar?
Referência
●
[1] HOPCROFT, John E.; ULLMAN, Jeffrey D.;
MOTWANI, Rajeev. Introdução à teoria de
autômatos, linguagens e computação. [Rio de
Janeiro]: Campus, c2003. p. 328-352
●
[2] SIPSER, Michael. Introdução à teoria da
computação. 2.ed. São Paulo, SP: Cengage
Learning, c2007. xxi, 459 p. ISBN 9788522104994
●
Traduzido e adaptado dos slides de Jeffrey D.
Ullman.

Mais conteúdo relacionado

Mais de Yuri Passos

07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidadeYuri Passos
 
09 problemas de grafos np-completos
09 problemas de grafos np-completos09 problemas de grafos np-completos
09 problemas de grafos np-completosYuri Passos
 
02 maquinas de turing modificadas
02 maquinas de turing modificadas02 maquinas de turing modificadas
02 maquinas de turing modificadasYuri Passos
 
04 tese de church-turing
04 tese de church-turing04 tese de church-turing
04 tese de church-turingYuri Passos
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidadeYuri Passos
 
08 SAT e Variacões
08 SAT e Variacões08 SAT e Variacões
08 SAT e VariacõesYuri Passos
 
Aula06 matriz em C
Aula06 matriz em CAula06 matriz em C
Aula06 matriz em CYuri Passos
 
Aula04 ponteiros e conversao
Aula04   ponteiros e conversaoAula04   ponteiros e conversao
Aula04 ponteiros e conversaoYuri Passos
 
Aula02 condicionais
Aula02   condicionaisAula02   condicionais
Aula02 condicionaisYuri Passos
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoesYuri Passos
 
Aula03 repeticao
Aula03   repeticaoAula03   repeticao
Aula03 repeticaoYuri Passos
 

Mais de Yuri Passos (16)

07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 
09 problemas de grafos np-completos
09 problemas de grafos np-completos09 problemas de grafos np-completos
09 problemas de grafos np-completos
 
02 maquinas de turing modificadas
02 maquinas de turing modificadas02 maquinas de turing modificadas
02 maquinas de turing modificadas
 
04 tese de church-turing
04 tese de church-turing04 tese de church-turing
04 tese de church-turing
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 
08 SAT e Variacões
08 SAT e Variacões08 SAT e Variacões
08 SAT e Variacões
 
Aula06 matriz em C
Aula06 matriz em CAula06 matriz em C
Aula06 matriz em C
 
Aula04 ponteiros e conversao
Aula04   ponteiros e conversaoAula04   ponteiros e conversao
Aula04 ponteiros e conversao
 
Aula02 condicionais
Aula02   condicionaisAula02   condicionais
Aula02 condicionais
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoes
 
Aula03 repeticao
Aula03   repeticaoAula03   repeticao
Aula03 repeticao
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula05
Aula05Aula05
Aula05
 

06-Complementos de LRE e LR - Reducoes.pdf

  • 2. Problemas ● Informalmente, um problema é uma questão sim/não sobre um conjunto infinito de possíveis instâncias ● Exemplo: “Um grafo G tem um ciclo hamiltoniano (ciclo que passa por cada nó exatamente uma vez)? – Cada grafo não-dirigido é uma instância do “problema do ciclo hamiltoniano”.
  • 3. Problemas ● Formalmente, um problema é uma linguagem. ● Cada string codifica alguma instância. ● A string pertence a linguagem se e somente se a resposta para aquela instância é “sim”.
  • 4. Exemplo: Um problema sobre MT ● Nós podemos pensar na linguagem Ld como um problema. ● “Dada uma MT, ela não aceita ela mesma?” ● Podemos pensar no problema como uma pergunta sobre strings binárias – Como perguntaríamos Ld ?
  • 5. Problemas decidíveis ● Um problema é decidível se há um algoritmo para respondê-lo. – Um algoritmo, formalmente, é uma MT que trava para qualquer entrada, aceitando ou não. – “Problema decidível” = “Linguagem recursiva”. ● Caso contrário, o problema é indecidível.
  • 7. Do abstrato para o real ● Enquanto que o fato de que Ld é indecidível é interessante intelectualmente, não existe um impacto direto nos problemas do mundo real. ● Nós deveríamos desenvolver alguns problemas relacionados a MT que sejam indecídiveis, mas nosso objetivo é usar a teoria para mostrar que alguns problemas reais são indecidíveis.
  • 8. Exemplos de problemas indecidíveis ● Uma linha particular de código dentro de um programa será executada? ● Dada uma gramática livre de contexto, ela é ambígua? ● Dada duas gramáticas livres de contexto, elas geram a mesma linguagem? ● Dada uma linguagem aceita por uma MT, ela é regular? ● É possível verificar se um algoritmo qualquer sempre irá parar?
  • 9. Técnicas para descobrir indecibilidade ● Existem dois métodos convencionais: – Análise do complemento da linguagem – Redução a problemas/linguagens conhecidos(as) ● Um exemplo de problema conhecido será apresentado: a linguagem universal.
  • 10. Complemento de linguagens RE e R ● Dada uma linguagem L e seu complemento L, quantos modos diferentes podemos inserir L e L no diagrama de linguagens R, RE e não-RE? R RE não R Não RE
  • 11. Possibilidade 1 R RE não R Não RE L L
  • 12. Possibilidade 2 R RE não R Não RE L L
  • 13. Possibilidade 3 R RE não R Não RE L L
  • 14. Possibilidade 4 R RE não R Não RE L L
  • 15. Possibilidade 5 R RE não R Não RE L L
  • 16. Possibilidade 6 R RE não R Não RE L L
  • 17. Possibilidade 7 R RE não R Não RE L L
  • 18. Possibilidade 8 R RE não R Não RE L L
  • 19. Possibilidade 9 R RE não R Não RE L L
  • 20. Complemento de linguagens RE e R ● Mas apenas 4 delas são válidas! ● Veremos com os dois teoremas a seguir
  • 21. Teorema 1 ● Se L é uma linguagem recursiva, então L também é. ● Prova: Basta construir uma MT para L como na imagem a seguir.
  • 23. Teorema 2 ● Se L e L são linguagens RE, então também L é recursiva. ● Prova: Considere L = L(M1 ) e L = L(M2 ). ● Construa uma MT M que usa M1 e M2 como na figura a seguir.
  • 25. Complemento de R e RE ● Com estes teoremas, apenas as seguintes combinações são possíveis: – L e L são recursivas. – L e L não são RE. – L é RE mas não é recursiva e L não é RE. – L é RE mas não é recursiva e L não é RE.
  • 26. A linguagem universal ● Um exemplo de uma linguagem RE, mas não recursiva é a linguagem Lu da máquina de Turing universal (MTU). ● A MTU toma como entrada o código de alguma MT M e alguma string binária w e aceita somente se M aceita w.
  • 27. A linguagem universal ● A linguagem universal (Lu ) é definida como a linguagem dos pares (M,w) tais que M aceita w. ● Será apresentado uma MT que aceita Lu .
  • 28. Como criar a MTU ● As entradas da fita serão da forma: – M 111 w ● Nota: Uma MT válida codificada em binário, nunca possui 111, logo podemos dividir M de w. ● A MT deve aceitar sua entrada se e somente se M é um código válido e M aceita w.
  • 29. MTU ● A MTU possuirá várias fitas. ● A fita 1 guarda a entrada M111w. ● A fita 2 guarda a fita de M. – MTU marca a cabeça de leitura como se fosse a cabeça de leitura de M. ● Fita 3 guarda o estado de M.
  • 30. MTU
  • 31. MTU ● Passo 1: A MTU verifica se M é um código válido. – Todos os movimentos devem ter cinco componentes. – Não há dois movimentos com o mesmo par (estado,símbolo). ● Se M não é válida, sua linguagem é vazia, então a MTU pára sem aceitar.
  • 32. MTU ● Passo 2: A MTU examina M para verificar quantas células de sua fita são necessárias para representar um símbolo de M. ● Passo 3: Inicializa a fita 2 para representar a fita de M com a entrada w e inicializa a fita 3 para armazenar o estado inicial.
  • 33. MTU ● Passo 4: Simula M. – Verifica o movimento na fita 1 que corresponde ao estado na fita 3 e o símbolo de fita na cabeça de leitura da fita 2. – Se encontrou, muda o símbolo e move a cabeça de leitura na fita 2 a muda para o estado na fita 3. – Se M aceita, a MTU também aceita.
  • 34. Pergunta ● No mundo real, existe algo semelhante a MTU?
  • 35. O que é Lu ? ● Lu = {z| z=M111w e M é uma MT codificada corretamente e M aceita w} ● não (A e B) = não A ou não B ● Lu = {z| z não é da forma M111w ou M não é uma MT codificada corretamente ou M não aceita w}
  • 36. Lu é RE mas não recursiva ● Uma MT para MTU foi descrita, logo ela é RE. ● Suponha que seja recursiva, isto é, uma MTU U sempre irá parar. ● Então, nós podemos rodar um algoritmo para Ld como segue. ● Ld = { w | w representa uma MT M e w∉L(M)}
  • 37. Lu é RE mas não recursiva ● Ld é um caso especial de Lu . ● Lu = { w | w não tem 111 ou w não é uma MT codificada corretamente ou w ∉ L(w)} – Nota: se w não é uma MT M codificada, L(M)= , logo M não aceita w e, portanto, ∅ w∈Ld .
  • 38. Prova ● Dada uma entrada w, nós podemos decidir se está em Ld seguindo os seguintes passos. 1)Verifica se w é um código para MT válida. 1)Se não é, então sua linguagem é vazia, logo w pertence a Ld 2)Se válido, usa-se U para decidir se w111w ∈ Lu 3)Se w111w ∈ Lu , então w ∉ Ld . Senão, w ∈ Ld .
  • 39. Prova
  • 40. Prova ● Mas nós sabemos que Ld não é RE. ● Portanto, nossa suposição de que Lu é recursiva está errada. ● Logo, Lu é RE, mas não recursiva.
  • 42. Redução ● Uma redução de uma linguagem L para uma linguagem L' é um algoritmo (MT que sempre pára) que usa como entrada uma string w e a converte para uma string x, tal que: – x ∈ L' se e somente se w ∈ L.
  • 43. Redução de L para L’ Conversor MT para L' w x sim sim MT para L – x ∈ L' se e somente se w ∈ L. – Redução de L para L'
  • 45. MT como um tradutor ● Até agora as MT foram consideradas aceitadores de palavras ● Mas, podemos adaptá-las de tal forma que elas possuam fitas de saída, onde uma string é escrita nesta fita apenas se ela parar. ● Dessa forma, a MT traduz sua entrada, escrevendo em sua saída.
  • 46. Reduções ● Se reduzirmos L para L' e L' é decidível, então o algoritmo para L' junto com o algoritmo de redução mostram que L também é decidível ● A contrapositiva mostra que: Se L não é decidível, então L' não pode ser também, dado que há redução de L para L'.
  • 47. Reduções ● Exemplo: Nós reduzimos Ld para Lu .
  • 48. Reduções ● E chegamos a conclusão da contrapositiva, isto é: – Se Ld não é decidível, então, Lu também não é.
  • 49. Exercícios ● Considere a linguagem – L5 = {M|M possui 5 estados}. Esta linguagem/problema é decidível, indecidível ou não-RE? Justifique.
  • 50. Exercícios ● Considere linguagem A contendo uma única cadeia, s, onde: – s = 0, se vida em Marte nunca será encontrada. – s = 1, se algum dia a vida em Marte será encontrada. A linguagem A é decidível? Justifique. Assuma que a pergunta para questão da vida em Marte seja SIM ou NÃO.
  • 51. Exercícios ● O problema/linguagem da parada é enunciado da seguinte forma: – Dada uma MT M e uma string w, w está em H(M)? ● H(M) é a linguagem das palavras que são aceitas por M por parada. ● Mostre que o problema da parada é RE mas não decidível. Dica: use redução.
  • 52. Exercícios ● Dê um exemplo de strings w e problemas P1 e P2 para cada um dos seguintes casos envolvendo reduções de P1 para P2 e justifique cada um: a) w P ∉ 1 e w P ∈ 2. b) w P ∉ 1 e w P ∉ 2. Faça o mesmo assumindo P1 está associado a Ld e P2 a Lu .
  • 53. Exercícios ● Prove que os seguintes problemas são indecidíveis: – Uma linha particular de código dentro de um programa será executada? – Dada uma gramática livre de contexto, ela é ambígua? – Dada duas gramáticas livres de contexto, elas geram a mesma linguagem? – Dada uma linguagem aceita por uma MT, ela é regular? – É possível verificar se um algoritmo qualquer sempre irá parar?
  • 54. Referência ● [1] HOPCROFT, John E.; ULLMAN, Jeffrey D.; MOTWANI, Rajeev. Introdução à teoria de autômatos, linguagens e computação. [Rio de Janeiro]: Campus, c2003. p. 328-352 ● [2] SIPSER, Michael. Introdução à teoria da computação. 2.ed. São Paulo, SP: Cengage Learning, c2007. xxi, 459 p. ISBN 9788522104994 ● Traduzido e adaptado dos slides de Jeffrey D. Ullman.