13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

11. Do algoritmo ao problema<br />

Observação 11.2<br />

Uma mo<strong>de</strong>lo conveniente com k > 1 fitas é usar a primeira fita como fita <strong>de</strong><br />

entrada e permitir somente leitura; uma outra fita das k − 1 restantes e usado<br />

como fita da saída caso a MT calcula uma função. ♦<br />

Proposição 11.1<br />

Se uma MTD M = (Q, Σ, Γ, δ) com Σ = {0, 1} <strong>de</strong>ci<strong>de</strong> uma linguagem L em<br />

tempo t(n), com t(n) tempo-construtível, então existe uma MT com alfabeto<br />

Γ ′ = {0, 1, } que <strong>de</strong>ci<strong>de</strong> L em tempo 4 log |Γ|t(n).<br />

Prova. Para construir uma MT que trabalha com Γ ′ vamos codificar cada<br />

símbolo em Γ por um string <strong>de</strong> log |Γ| bits. Em cada passo, a simulação lê<br />

log |Γ| na posição atual, calcula o novo símbolo e estado usanda as regras <strong>de</strong> M,<br />

escreve os novos log |Γ| símbolos, e movimenta a cabeção log |Γ| posições para<br />

direita ou esquerda. Para essa simulação, a nova máquina precisa armazenar o<br />

estado Q e no máximo log |Γ| símbolos na cabeça, e ainda precisa um contador<br />

<strong>de</strong> 1 até log |Γ|. Isso é possível com O(Q × |Γ| 2 ) estados e em menos que<br />

4 log |Γ|t(n) passos (ler, escrever, movimentar e talvez alguns passos para o<br />

controle). <br />

Proposição 11.2<br />

Se uma MTD M = (Q, Σ, Γ, δ) com Σ = {0, 1} e com k > 1 fitas <strong>de</strong>ci<strong>de</strong> uma<br />

linguagem L em tempo t(n) ≥ n, com t(n) tempo-construtível, então existe<br />

uma MT com única fita que <strong>de</strong>ci<strong>de</strong> L em tempo 5kt(n) 2 .<br />

Prova. Vamos construir uma MT M ′ que simula M com uma única fita.<br />

M ′ armazeno o conteúdo das k fitas <strong>de</strong> M <strong>de</strong> forma intercalada nas posições<br />

1 + ki, para 1 ≤ i ≤ k. Para representar as posições das cabeças, usamos<br />

símbolos com uma marca ˙a. M ′ não altera as primeiras n posições da sua<br />

fita que contém a entrada, mas copia-las para a posição n + 1 na codificação<br />

acima.<br />

Para simular um passo <strong>de</strong> M, M ′ escaneia a fita <strong>de</strong> esquerda para direita para<br />

<strong>de</strong>terminar as posições das cabeças e os símbolos correspon<strong>de</strong>ntes. Depois M ′<br />

usa as regras <strong>de</strong> transição <strong>de</strong> M para <strong>de</strong>terminar o novo símbolo, estado, e o<br />

movimento da cabeça. Um segunda scan da direita para esquerda atualiza a<br />

fita <strong>de</strong> acordo.<br />

M ′ produz as mesma sáida que M. Como a maior posição visitada por M é<br />

t(n), a maior posição visitada por M ′ é no máximo kt(n)+2n ≤ (k +2)t(n) ≤<br />

2kt(n). Portanto, para cada passo <strong>de</strong> M, M ′ precisa no máximo 5kt(n) passos<br />

(4kt(n) para escanear, e alguns para o controle). <br />

246

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!