Universidade Federal de Uberlândia
Mestrado em Ciência da Computação
Solução da 1a Prova de Teoria da Computação - 05/04/2011
Questão 1 (Valor = 12 pontos)
Sejam IN FDF A = {< M >| M é um autômato tal que L(M) é infinita.},
IN FGLC = {< M >| M é uma gramática livre do contexto tal que L(M) é infinita.},
IN FT M = {< M >| M é uma máquina de Turing tal que L(M) é infinita.}. Pede-se:
1. (Valor = 4 pontos) IN FDF A é decidı́vel ? Justifique sua resposta.
Solução: Sim, IN FDF A é decidı́vel. A seguinte máquina de Turing decide IN FDF A :
M = No input < A > faça:
• Testa se < A > é um string correspondente à codificação de um autômato finito
determinista. Se for, vai para o próximo passo, caso contrário rejeita.
• Seja n = número de estados de A.
• Constrói todas os strings w com comprimento entre n e 2n, isto é, n ≤| w |< 2n.
Sejam w1 , ..., wk estes strings.
• Executa o autômato A sobre cada um destes strings wi .
• Se nenhum for aceito, rejeita.
• Se algum for aceito, aceita.
Este algoritmo é baseado no seguinte resultado sobre autômatos finitos: A linguagem L(A)
reconhecida por um autômato A é infinita se e somente se existe uma palavra w ∈ L(A)
tal que n ≤| w |< 2n, onde n = número de estados de A.
Demonstração:
• Se existir uma palavra w ∈ L(A) com comprimento ≥ n, sabemos, pelo Lema do
bombeamento para linguagens regulares que L(A) é infinita (já que w = vxy e vxi y ∈
L(A) para todo i ≥ 0.
• Reciprocamente, suponhamos que L(A) seja infinita. Então, é claro que deve existir
uma palavra w ∈ L(A) com | w |≥ n. Se | w |< 2n, temos nosso resultado. Suponhamos então que toda palavra de L(A) tenha comprimento ≥ 2n ou < n. Como
L(A) é infinita, existe palavra w de L(A) com comprimento ≥ 2n. Pelo lema do
bombeamento para linguagens regulares, sabemos que w = vxy, com 0 <| x | ≤ n
e vx0 y ∈ L(A). Logo: n ≤| vy |<| w | e vy ∈ L(A). Se | vy |< 2n, chegamos ao
nosso resultado. Caso contrário repetimos o raciocinio para vy e encontramos uma
outra palavra w1 em L(A) com comprimento > n e menor do que | vy |. Repetindo
este processo um número finito de vezes encontraremos uma palavra de L(A) com
comprimento entre n e 2n.
2. (Valor = 4 pontos) IN FGLC é decidı́vel ? Justifique sua resposta.
Solução: Sim, IN FGLC é decidı́vel. A demonstração é análoga à da questão anterior,
utilizando o lema do bombeamento para gramáticas livres do contexto, como segue: Consideramos a máquina de Turing S que decide a linguagem : L = {< G, w >| w ∈ L(G)}.
Já vimos em aula que esta máquina existe. Considere a seguinte máquina de Turing que
decide IN FGLC :
M = No input < G > faça:
• Testa se < G > é um string correspondente à codificação de uma gramática livre do
contexto. Se for, vai para o próximo passo, caso contrário rejeita.
• Seja n = 2k−1 , onde k = número de variáveis de G.
• Constrói todos os strings w com comprimento entre n e 2n, isto é, n ≤| w |< 2n.
Sejam w1 , ..., wm estes strings.
• Executa a máquina S sobre cada um destes strings wi .
• Se nenhum for aceito, rejeita.
• Se algum for aceito, aceita.
Este algoritmo é baseado no seguinte resultado sobre gramáticas livres do contexto: A
linguagem L(G) gerada por uma gramática livre do contexto G é infinita se e somente se
existe uma palavra w ∈ L(G) tal que n ≤| w |< 2n, onde n = 2k−1 e k = número de
variáveis de G.
Demonstração:
• Se existir uma palavra z ∈ L(A) com comprimento > n, sabemos, pelo Lema do
bombeamento para linguagens regulares que L(G) é infinita (já que z = uvwxy e
uv i wxi y ∈ L(G) para todo i ≥ 0).
• Reciprocamente, suponhamos que L(G) seja infinita. Então, é claro que deve existir
uma palavra z ∈ L(G) com | z |> n. Se | z |< 2n, temos nosso resultado. Suponhamos
então que toda palavra de L(A) tenha comprimento ≥ 2n ou ≤ n. Como L(G) é
infinita, existe palavra z ∈ L(G) com comprimento ≥ 2n. Pelo lema do bombeamento
para linguagens livres do contexto, sabemos que z = uvwxy, com 0 <| vwx | ≤ n.
Portanto | vx | < n já que w ̸= ϵ. Além disto, para todo i ≥ 0 temos que uv i wxi y ∈
L(G). Em particular para i = 0 temos que uv 0 wx0 y = uwy ∈ L(G). | uwy | =
| z | − | vx | > 2n−n = n. Logo: n <| uwy | e uwy ∈ L(G). Se | uwy |< 2n, chegamos
ao nosso resultado. Caso contrário repetimos o raciocinio para a palavra uwy ∈ L(G)
e encontramos uma outra palavra w1 em L(G) com comprimento > n e menor do
que | uwy |. Repetindo este processo um número finito de vezes encontraremos uma
palavra de L(G) com comprimento entre n e 2n.
3. (Valor = 4 pontos) IN FT M é decidivel ? Justifique sua resposta.
Solução: Não, IN FT M é indecidı́vel. Para provar isto, vamos apresentar uma reduçäo
f : AT M → IN FT M , tal que f (< M, w >) = M ′ , onde M ′ é a máquina de Turing definida
como se segue:
M ′ = No input x faça:
1. Executa M em w;
2. Se M aceita w, M ′ entra em qa ;
3. Se M rejeita w, M ′ entra em qr ;
É fácil ver que L(M ′ ) = Σ∗ (conjunto de todos os strings sobre o alfabeto Σ) se M aceita
w. E L(M ′ ) = ∅ se M não aceita w. Logo L(M ′ ) é infinita se e somente se M aceita w.
Logo, provamos que AT M se reduz a IN FT M . Como AT M é indecidı́vel, então IN FT M é
indecidı́vel.
Questão 2 (Valor = 10 pontos)
Considere a seguinte linguagem: A ={< M > | M é uma máquina de Turing e L(M ) ̸= ∅}.
1. (Valor = 5 pontos) Mostre que A é Turing-reconhecı́vel.
Solução:
Temos de exibir uma máquina de Turing S que reconhece a linguagem A, isto é, S(< M >)
= “sim” se e somente se < M >∈ A, isto é, se e somente se M é uma máquina de Turing
que aceita algum string. A seguinte máquina S faz este trabalho:
S = No input < M > faça:
1. Seja {x1 , x2 , x3 , ...} o conjunto de todos os strings sobre o alfabeto de M . Execute o
seguinte até que M atinja o estado qa :
2.1 passo 1 de M em x1 ,
2.2 passo 2 de M em x1 , passo 1 de M em x2 ,
2.3 passo 3 de M em x1 , passo 2 de M em x2 ,passo 1 de M em x3 ,
2.4 ...
3. Entra no estado qa .
É claro que S < M > = qa se e somente se L(M ) ̸= ∅. Logo S é uma máquina de Turing
que reconhece a linguagem A. Portanto A é Turing-reconhecı́vel.
2. (Valor = 5 pontos) O que você acha a respeito da decidibilidade de A ? Justifique sua
resposta.
Solução: A não é decidı́vel. De fato, vamos mostrar que AT M se reduz a A. Considere a
transformação f : AT M → A, tal que f (< M, w >) = M ′ , onde M ′ é a máquina de Turing
definida como se segue:
M ′ = No input x faça:
1. Se x ̸= w, entra em qr ;
2. Se x = w, executa M em w;
3. Se M aceita w, M ′ entra em qa ;
4. Se M rejeita w, M ′ entra em qr ;
É fácil ver que L(M ′ ) = {w} se M aceita w e L(M ′ ) = ∅ se M não aceita w. Logo < M ′ >
∈ A se e somente se < M, w > ∈ AT M .
Questão 3 (Valor = 10 pontos)
Seja L = {< M >| M é máquina de Turing tal que M pára em algum input }. O objetivo desta
questão é mostrar que L é indecidı́vel.
• (Valor = 3 pontos) É possivel utilizar o Teorema de Rice para mostrar que L é indecidivel ? Justifique sua resposta.
Solução: Não é possı́vel, pois a 3a condição da hipótese do Teorema de Rice não é verificada: Existem máquinas de Turing M1 e M2 tais que L(M1 ) = L(M2 ) mas M1 ∈ L e M2
̸∈ L. De fato, considere as máquinas de Turing descritas abaixo:
M1 = No input x faça:
1. Entra em loop.
M1 = No input x faça:
1. Pára em qr .
Temos que L(M1 ) = L(M2 ) = ∅. Mas M2 ∈ L e M1 ̸∈ L.
• (Valor = 3 pontos) Prove que L é indecidı́vel SEM utilizar o Teorema de Rice.
Solução: Considere a transformação f : AT M → L, tal que f (< M, w >) = M ′ , onde M ′
é a máquina de Turing definida como se segue:
M ′ = No input x faça:
1. Se x ̸= w, entra em loop;
2. Se x = w, executa M em w;
3. Se M aceita w, M ′ entra em qa ;
4. Se M rejeita w, M ′ entra em loop;
É fácil ver que se M aceita w então M ′ pára no input w, logo M ′ ∈ L. Se M não aceita
w então M ′ entra em loop para qualquer input x, logo M ′ ∈
̸ L.
• (Valor = 4 pontos) L é Turing reconhecı́vel ? Justifique sua resposta.
Solução: Sim L é Turing reconhecı́vel. Temos de exibir uma máquina de Turing S que
reconhece a linguagem L, isto é, S(< M >) = “sim” se e somente se < M >∈ L, isto
é, se e somente se M é uma máquina de Turing que pára para algum string. A seguinte
máquina S faz este trabalho:
S = No input < M > faça:
1. Seja {x1 , x2 , x3 , ...} o conjunto de todos os strings sobre o alfabeto de M . Execute o
seguinte até que M atinja o estado qa ou qr :
2.1 passo 1 de M em x1 ,
2.2 passo 2 de M em x1 , passo 1 de M em x2 ,
2.3 passo 3 de M em x1 , passo 2 de M em x2 ,passo 1 de M em x3 ,
2.4 ...
3. Entra no estado qa .
É claro que S < M > = qa se e somente se M pára ao ser executada em algum string
xi . Logo S é uma máquina de Turing que reconhece a linguagem L. Portanto L é Turingreconhecı́vel.
Download

Solução da 1a Prova - Universidade Federal de Uberlândia