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

13. Teoria de NP-completude • Intuição: Uma relação é a especificação de um problema de busca: para entrada x queremos achar alguma solução y tal que (x, y) ∈ R. • Nosso interesse são soluções que podem ser “escritas” em tempo polinomial: Definição 13.1 Uma relação binária R é polinomialmente limitada se P e NP em termos de busca ∃p ∈ poly : ∀(x, y) ∈ R : |y| ≤ p(|x|) • A definição de P e NP é como classes de problemas de decisão. • A linguagem correspondente com uma relação R é LR = {x | ∃y : (x, y) ∈ R} • A classe P: Linguagens LR tal que existe uma MTD que, com entrada x ∈ LR, em tempo polinomial, busque (x, y) ∈ R ou responda, que não tem. • Essa definição do P às vezes é chamado FP ou PF. • A classe NP: Linguagens LR tal que existe MTD que, com entrada (x, y), decide se (x, y) ∈ R em tempo polinomial. y se chama um certificado. A restrição para problemas de decisão facilita o tratamento teórico, mas não é importante para a tratabilidade de problemas. Teorema 13.2 ([65, Th. 2],[6, Th. 2.18]) Para cada problema de busca definido por uma relação polinomialmente limitada R, existe um problema de decisão tal que, caso o problema de decisão pode ser resolvido em tempo t(n), o problema de busca pode ser resolvido em tempo n O(1) t(n). Em particular, P = NP sse cada problema de busca possui solução em tempo polinomial. Prova. Para a relação R, considera o problema de decidir, para entrada x, w, se existe um z tal que (x, w ◦ z) ∈ R. Supõe que temos um algoritmo A que resolve este problema em tempo t(n). Então podemos construir o seguinte algoritmo, para entrada x 260

13.2. Reduções 1 i f A(x, ɛ) = não then 2 return ‘ ‘ não e x i s t e solução ’ ’ 3 end i f 4 w := ɛ 5 while (x, w) ∈ R do 6 i f A(x, w ◦ 0) = sim then 7 w := w ◦ 0 8 else 9 w := w ◦ 1 10 end i f 11 end while 12 return w É simples de ver que este algoritmo acha uma solução para o problema de busca, caso existe uma, construindo-a símbolo por símbolo. Como R é polinomialmente limitado, uma solução possui no máximo um número polinomial de símbolos, e por isso o algoritmo o número de chamadas de A é não mais que polinomial no tamanho da entrada. Exemplos de problemas em NP CLIQUE = {〈G, k〉 | Grafo não-direcionado G com clique de tamanho k} SAT = {〈φ〉 | φ fórmula satisfatível da lógica proposicional em FNC} TSP = {〈M, b〉 | Matriz simétrica de distâncias M que tem TSP-cíclo ≤ b} COMPOSITE = {〈n〉 | n = m1m2 com m1, m2 > 1} 13.2. Reduções Reduções Definição 13.2 (Redução em tempo polinomial) Uma (many-one) redução entre duas linguagens L, L ′ com alfabetos Σ e Σ ′ é um função total f : Σ ∗ → Σ ′∗ tal que x ∈ L ⇐⇒ f(x) ∈ L ′ . Se f é computável em tempo polinomial, se chama uma redução em tempo polinomial; escrevemos L ≤P L ′ . Definição 13.3 (Problemas difíceis e completos) Dado uma classe de problemas C e um tipo de redução ≤, um problema L é 261

13.2. Reduções<br />

1 i f A(x, ɛ) = não then<br />

2 return ‘ ‘ não e x i s t e solução ’ ’<br />

3 end i f<br />

4 w := ɛ<br />

5 while (x, w) ∈ R do<br />

6 i f A(x, w ◦ 0) = sim then<br />

7 w := w ◦ 0<br />

8 else<br />

9 w := w ◦ 1<br />

10 end i f<br />

11 end while<br />

12 return w<br />

É simples <strong>de</strong> ver que este algoritmo acha uma solução para o problema <strong>de</strong><br />

busca, caso existe uma, construindo-a símbolo por símbolo. Como R é polinomialmente<br />

limitado, uma solução possui no máximo um número polinomial<br />

<strong>de</strong> símbolos, e por isso o algoritmo o número <strong>de</strong> chamadas <strong>de</strong> A é não mais<br />

que polinomial no tamanho da entrada. <br />

Exemplos <strong>de</strong> problemas em NP<br />

CLIQUE = {〈G, k〉 | Grafo não-direcionado G com clique <strong>de</strong> tamanho k}<br />

SAT = {〈φ〉 | φ fórmula satisfatível da lógica proposicional em FNC}<br />

TSP = {〈M, b〉 | Matriz simétrica <strong>de</strong> distâncias M que tem TSP-cíclo ≤ b}<br />

COMPOSITE = {〈n〉 | n = m1m2 com m1, m2 > 1}<br />

13.2. Reduções<br />

Reduções<br />

Definição 13.2 (Redução em tempo polinomial)<br />

Uma (many-one) redução entre duas linguagens L, L ′ com alfabetos Σ e Σ ′ é<br />

um função total f : Σ ∗ → Σ ′∗ tal que x ∈ L ⇐⇒ f(x) ∈ L ′ . Se f é computável<br />

em tempo polinomial, se chama uma redução em tempo polinomial;<br />

escrevemos L ≤P L ′ .<br />

Definição 13.3 (Problemas difíceis e completos)<br />

Dado uma classe <strong>de</strong> problemas C e um tipo <strong>de</strong> redução ≤, um problema L é<br />

261

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

Saved successfully!

Ooh no, something went wrong!