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.

06-Complementos de LRE e LR - Reducoes.pdf

  • 1.
  • 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 sobreMT ● 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.
  • 6.
  • 7.
    Do abstrato parao 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 ● Umalinha 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 ● Existemdois 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 REe 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.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Complemento de linguagens REe 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.
  • 22.
  • 23.
    Teorema 2 ● Se Le 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.
  • 24.
  • 25.
    Complemento de Re 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 ● Umexemplo 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 aMTU ● 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.
  • 31.
    MTU ● Passo 1: AMTU 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: AMTU 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: SimulaM. – 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 masnã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 masnã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 entradaw, 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.
  • 40.
    Prova ● Mas nóssabemos que Ld não é RE. ● Portanto, nossa suposição de que Lu é recursiva está errada. ● Logo, Lu é RE, mas não recursiva.
  • 41.
  • 42.
    Redução ● Uma redução deuma 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 Lpara 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'
  • 44.
  • 45.
    MT como umtradutor ● 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 Lpara 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ósreduzimos Ld para Lu .
  • 48.
    Reduções ● E chegamos aconclusã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 Acontendo 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 daparada é 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 exemplode 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 osseguintes 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, JohnE.; 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.