Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar

arquivoescolar.org
from arquivoescolar.org More from this publisher
13.04.2013 Views

12. Classes de complexidade Observação 12.1 A restrição para funções tempo- ou espaço-construtíveis exclui funções nãocomputáveis ou difíceis de computar e assim permite uma simulação eficiente por outras MT. Existem funções que não são espaço-construtíveis; um exemplo simples é uma função que não é computável; um outro exemplo é ⌈log log n⌉. ♦ Classes de complexidade fundamentais • Uma classe de complexidade é um conjunto de linguagens. • Classes fundamentais: Para t, s : N → N e um problema L ⊆ Σ ∗ – L ∈ DTIME[t(n)] se existe uma máquina Turing determinística tal que aceita L com complexidade de tempo t(n). – L ∈ NTIME[t(n)] se existe uma máquina Turing não-determinística que aceita L com complexidade de tempo t(n). – L ∈ DSPACE[s(n)] se existe uma máquina Turing determinística que aceita L com complexidade de espaço s(n). – L ∈ NSPACE[s(n)] se existe uma máquina Turing não-determinística que aceita L com complexidade de espaço s(n). Hierarquia básica 252 • Observação DTIME[F (n)] ⊆ NTIME[F (n)] ⊆ DSPACE[F (n)] ⊆ NSPACE[F (n)] • Definições conhecidas: P = k≥0 DTIME[n k ]; NP = NTIME[n k ] • Definições similares para espaço: PSPACE = DSPACE[n k ]; NSPACE = NSPACE[n k ] k≥0 • Com a observação acima, temos k≥0 k≥0 P ⊆ NP ⊆ DSPACE ⊆ NSPACE .

12.2. Hierarquias básicas Prova. (Da observação.) Como uma máquina não-determinística é uma extensão da uma máquina determinística, temos obviamente DTIME[F (n)] ⊆ NTIME[F (n)] e DSPACE[F (n)] ⊆ NSPACE[F (n)]. A inclusão NTIME[F (n)] ⊆ DSPACE[F (n)] segue, porque todas computações que precisam menos que F (n) passos, precisam menos que F (n) espaço também. Classes de complexidade 12.2. Hierarquias básicas Aceleração Zoológico de complexidade Teorema 12.1 Podemos comprimir ou acelerar computações por um fator constante. Para todos c > 0 no caso de espaço temos L ∈ DSPACE[s(n)] ⇒ L ∈ DSPACE[cs(n)] L ∈ NSPACE[s(n)] ⇒ L ∈ NSPACE[cs(n)] e no caso do tempo, para máquinas de Turing com k > 1 fitas e t(n) = ω(n) L ∈ DTIME[s(n)] ⇒ L ∈ DTIME[cs(n)] L ∈ NTIME[s(n)] ⇒ L ∈ NTIME[cs(n)] Prova. (Rascunho.) A idéia é construir uma MT M ′ que simula uma MT M executando m passos em um passo. M ′ inicialmente copia a entrada para uma outra fita, codificando cada m símbolos em um símbolo em tempo n + ⌈n/m⌉. Depois, em cada passo da simulação, M ′ leia os símbolos na esquerda e direta e na posição atual em tempo 4. Depois ela calcula os novos estados no controle finito, e escreve os três símbolos novos em tempo 4. Logo, cada m passos podem ser simulados em 8 passos em tempo n + ⌈n/m⌉ + ⌈8t(n)/m⌉ ≤ n + n/m + 8t(n)/m + 2 ≤ 3n + 8t(n)/m que para cm ≥ 16 ⇔ 8/m ≤ c/2 e n suficientemente grande não ultrapassa ct(n). O número finito de palavras que não satisfazem esse limite superior é reconhecido diretamente no controle finito. 253

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

Observação 12.1<br />

A restrição para funções tempo- ou espaço-construtíveis exclui funções nãocomputáveis<br />

ou difíceis <strong>de</strong> computar e assim permite uma simulação eficiente<br />

por outras MT. Existem funções que não são espaço-construtíveis; um exemplo<br />

simples é uma função que não é computável; um outro exemplo é ⌈log log n⌉.<br />

♦<br />

Classes <strong>de</strong> <strong>complexida<strong>de</strong></strong> fundamentais<br />

• Uma classe <strong>de</strong> <strong>complexida<strong>de</strong></strong> é um conjunto <strong>de</strong> linguagens.<br />

• Classes fundamentais: Para t, s : N → N e um problema L ⊆ Σ ∗<br />

– L ∈ DTIME[t(n)] se existe uma máquina Turing <strong>de</strong>terminística tal<br />

que aceita L com <strong>complexida<strong>de</strong></strong> <strong>de</strong> tempo t(n).<br />

– L ∈ NTIME[t(n)] se existe uma máquina Turing não-<strong>de</strong>terminística<br />

que aceita L com <strong>complexida<strong>de</strong></strong> <strong>de</strong> tempo t(n).<br />

– L ∈ DSPACE[s(n)] se existe uma máquina Turing <strong>de</strong>terminística<br />

que aceita L com <strong>complexida<strong>de</strong></strong> <strong>de</strong> espaço s(n).<br />

– L ∈ NSPACE[s(n)] se existe uma máquina Turing não-<strong>de</strong>terminística<br />

que aceita L com <strong>complexida<strong>de</strong></strong> <strong>de</strong> espaço s(n).<br />

Hierarquia básica<br />

252<br />

• Observação<br />

DTIME[F (n)] ⊆ NTIME[F (n)] ⊆ DSPACE[F (n)] ⊆ NSPACE[F (n)]<br />

• Definições conhecidas:<br />

P = <br />

k≥0<br />

DTIME[n k ]; NP = <br />

NTIME[n k ]<br />

• Definições similares para espaço:<br />

PSPACE = <br />

DSPACE[n k ]; NSPACE = <br />

NSPACE[n k ]<br />

k≥0<br />

• Com a observação acima, temos<br />

k≥0<br />

k≥0<br />

P ⊆ NP ⊆ DSPACE ⊆ NSPACE .

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

Saved successfully!

Ooh no, something went wrong!