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.

Portanto, a classe SIZE(2n2 n ) contém todas funções booleanas computáveis.<br />

Para o estudo <strong>de</strong> <strong>complexida<strong>de</strong></strong> essa classe é po<strong>de</strong>roso <strong>de</strong>mais. Ela contém<br />

até funções não computáveis como o problema <strong>de</strong> parada (por quê?). Isso é o<br />

motivo para investigar quais funções booleanas são computáveis com menos<br />

portas lógicas.<br />

Definição 15.3 (Circuitos com um número polinomial <strong>de</strong> portas)<br />

A classe <strong>de</strong> <strong>complexida<strong>de</strong></strong> P/poly contém todas linguagens <strong>de</strong>cidíveis por familias<br />

<strong>de</strong> circuitos <strong>de</strong> tamanho polinomial, i.e.,<br />

P/poly = <br />

SIZE(n k )<br />

k>0<br />

O seguinte lema estabelece que tudo que po<strong>de</strong> ser <strong>de</strong>cidido por uma MT, po<strong>de</strong><br />

ser <strong>de</strong>cido por uma família <strong>de</strong> circuitos booleanos <strong>de</strong> tamanho não mais que<br />

o quadrado do tempo <strong>de</strong> execução da MT.<br />

Lema 15.1<br />

Para uma função t : N → N tal que L ∈ DTIME(t(n)) temos L ∈ SIZE(O(t(n) 2 )).<br />

Prova. (Rascunho.) Seja L ∈ P alguma linguagem e M a MTD correspon<strong>de</strong>nte.<br />

Cada execução possível <strong>de</strong> M po<strong>de</strong> ser representado por uma tableau<br />

T = (tij) <strong>de</strong> tamanho t(n) × t(n). Cada celula tij contém um símbolo da<br />

fita em Γ ou ainda um símbolo em Γ × Q representando adicionalmente a<br />

posição e o estado da cabeça. O conteúdo da celula tij <strong>de</strong>pen<strong>de</strong> somente do<br />

conteúdo das celulas ti−1,j−1, ti−1,j e ti−1,j+1. Seja sijk ∈ {0, 1} um valor<br />

booleano que é verda<strong>de</strong>ira caso a celula ti,j contém o símbolo k (com<br />

k = |Γ ∪ Γ × Q|). Para cada regra da MTD que <strong>de</strong>fine o valor <strong>de</strong> tij como s0,<br />

dado valores ti−1,j−1 = s1, ti−1,j = s2 e ti−1,j+1 = s3, vamos adicionar um<br />

circuito si−1,j−1,s1 ∧ si−1,j,s2 ∧ si−1,j+1,s3 à celula tij. O novo símbolo em i, j<br />

é k, caso existe alguma transição <strong>de</strong>sse tipo, i.e,<br />

<br />

sijk =<br />

tij=k|ti−1,j−1=s1,ti−1,j=s2,ti−1,j+1=s3<br />

si−1,j−1,s1 ∧ si−1,j,s2 ∧ si−1,j+1,s3<br />

Para terminar a construção do circuito, temos que <strong>de</strong>finir as entradas <strong>de</strong> acordo<br />

com o estado inicial da máquina, e <strong>de</strong>finir uma saída do circuito. Isso é possível<br />

usando uma MTD modificada M ′ que antes <strong>de</strong> aceitar posiciona a cabeça na<br />

primeira celula da fita e escreve o símbolo 0 nessa posição. Com isso a saída<br />

do circuito é s t(n),1,(0,qa).<br />

O número <strong>de</strong> portas lógicas necessárias para implementar o circuito é no<br />

máximo k(k 3 − 1 + 2k 3 ) = O(k 4 ) por celula, e portanto O(t(n) 2 ). <br />

287

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

Saved successfully!

Ooh no, something went wrong!