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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

12. Classes <strong>de</strong> <strong>complexida<strong>de</strong></strong><br />

Hierarquia <strong>de</strong> tempo (1)<br />

•<br />

É possível que a <strong>de</strong>cisão <strong>de</strong> todos problemas tem um limite superior (em<br />

termos <strong>de</strong> tempo ou espaço)? Não.<br />

Teorema 12.2<br />

Para t(n) e s(n) total e recursivo, existe um linguagem L tal que L ∈ DTIME[t(n)]<br />

ou L ∈ DSPACE[s(n)], respectivamente.<br />

Prova. (Rascunho). Por diagonalização. As máquinas <strong>de</strong> Turing são enumeráveis:<br />

seja M1, M2, . . . uma enumeração <strong>de</strong>les e seja x1, x2, . . . uma enumeração<br />

das palavras em Σ ∗ . Define<br />

L = {xi | Mi naõ aceita xi em tempo t(|xi|)}.<br />

Essa linguagem é <strong>de</strong>cidível: Uma MT primeiramento calcula t(|xi|) (que é<br />

possível porque t(n) é recursivo e total.). Depois com entrada xi, ela <strong>de</strong>termina<br />

i e a máquina Mi correspon<strong>de</strong>nte e simula Mi t(|xi|) passos. Se Mi aceita, ela<br />

rejeita, senão ela aceita.<br />

Essa linguagem não pertence a DTIME[t(n)]. Prova por contradição: Seja<br />

L = L(Mi). Então xi ∈ L? Caso sim, Mi não aceita em tempo t(|xi|), uma<br />

contradição. Caso não, Mi não aceita em tempo t(|xi|), e portanto xi ∈ L,<br />

outra contradição. <br />

Hierarquia <strong>de</strong> tempo (2)<br />

Além disso, as hierarquias <strong>de</strong> tempo são “razoavelmente <strong>de</strong>nsos”:<br />

Teorema 12.3 (Hartmanis,Stearns, 1965)<br />

Para f, g com g tempo-construtível e f log f = o(g) temos<br />

DTIME(f) DTIME(g).<br />

Para funções f, g, com g(n) ≥ log 2 n espaço-construtível e f = o(g) temos<br />

DSPACE(f) DSPACE(g).<br />

Prova. (Rascunho.) Para provar o segundo parte (que é mais fácil) temos que<br />

mostrar que existe uma linguagem L ⊆ Σ ∗ tal que L ∈ DSPACE[g] mas L ∈<br />

DSPACE[f]. Vamos construir uma MT M sobre alfabeto <strong>de</strong> entrada Σ = {0, 1}<br />

tal que L(M) satisfaz essas característica. A idéia básica é diagonalização:<br />

com entrada w simula a máquina Mw sobre w e garante nunca reconhecer a<br />

mesma linguagem que Mw caso ela é limitada por f.<br />

Para realizer essa i<strong>de</strong>ia:<br />

254

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

Saved successfully!

Ooh no, something went wrong!