• Nenhum resultado encontrado

Complexidade computacional

N/A
N/A
Protected

Academic year: 2022

Share "Complexidade computacional"

Copied!
39
0
0

Texto

(1)

Complexidade computacional

CLRS sec 34.1 e 34.2

(2)

Algumas questões

Por que alguns problemas parecem ser

(computacionalmente) mais difíceis do que outros?

(3)

Algumas questões

Por que alguns problemas parecem ser

(computacionalmente) mais difíceis do que outros?

Como podemos medir ou comprovar este diferente e aparentemente intrínseco grau de dificuldade?

(4)

Algumas questões

Por que alguns problemas parecem ser

(computacionalmente) mais difíceis do que outros?

Como podemos medir ou comprovar este diferente e aparentemente intrínseco grau de dificuldade?

Quais problemas podem ser resolvidos por um algoritmo?

Quais não podem? Por quê?

(5)

Algumas questões

Por que alguns problemas parecem ser

(computacionalmente) mais difíceis do que outros?

Como podemos medir ou comprovar este diferente e aparentemente intrínseco grau de dificuldade?

Quais problemas podem ser resolvidos por um algoritmo?

Quais não podem? Por quê?

Quais problemas podem ser resolvidos por um algoritmo eficiente? Quais não podem? Por quê?

(6)

Problema abstrato

Problema abstrato de decisão:

conjunto I de instâncias e função f : I → {SIM, NÃO}

(7)

Problema abstrato

Problema abstrato de decisão:

conjunto I de instâncias e função f : I → {SIM, NÃO}

Exemplo: Problema circuito hamiltoniano.

I: conjunto de todos os grafos.

Para todo G em I, f(G) =

(

SIM se G tem um circuito hamiltoniano

NÃO caso contrário

(8)

Problema abstrato

Problema abstrato de decisão:

conjunto I de instâncias e função f : I → {SIM, NÃO}

Exemplo: Problema circuito hamiltoniano.

I: conjunto de todos os grafos.

Para todo G em I, f(G) =

(

SIM se G tem um circuito hamiltoniano

NÃO caso contrário

(9)

Problema concreto

Para um problema abstrato ser resolvido,

instâncias devem estar convenientemente codificadas.

(10)

Problema concreto

Para um problema abstrato ser resolvido,

instâncias devem estar convenientemente codificadas.

Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas

convenientemente em um alfabeto finito Σ.

(11)

Problema concreto

Para um problema abstrato ser resolvido,

instâncias devem estar convenientemente codificadas.

Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas

convenientemente em um alfabeto finito Σ. Exemplo: Problema circuito hamiltoniano.

G dado pelas suas listas de adjacências.

(12)

Problema concreto

Para um problema abstrato ser resolvido,

instâncias devem estar convenientemente codificadas.

Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas

convenientemente em um alfabeto finito Σ. Exemplo: Problema circuito hamiltoniano.

G dado pelas suas listas de adjacências.

Considere, sem perda de generalidade, que Σ = {0, 1}.

(13)

Problema concreto

Para um problema abstrato ser resolvido,

instâncias devem estar convenientemente codificadas.

Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas

convenientemente em um alfabeto finito Σ. Exemplo: Problema circuito hamiltoniano.

G dado pelas suas listas de adjacências.

Considere, sem perda de generalidade, que Σ = {0, 1}. Daqui para frente, todos os problemas são concretos.

(14)

Modelo de computação

Algoritmo:

programa escrito em uma linguagem como C ou Pascal.

(15)

Modelo de computação

Algoritmo:

programa escrito em uma linguagem como C ou Pascal. Custo de uma operação:

proporcional ao número de bits dos operandos Custo de um acesso à memória:

proporcional ao número de bits dos operandos.

(16)

Modelo de computação

Algoritmo:

programa escrito em uma linguagem como C ou Pascal. Custo de uma operação:

proporcional ao número de bits dos operandos Custo de um acesso à memória:

proporcional ao número de bits dos operandos.

(Isto é polinomialmente equivalente à máquina de Turing.)

(17)

Modelo de computação

Algoritmo:

programa escrito em uma linguagem como C ou Pascal. Custo de uma operação:

proporcional ao número de bits dos operandos Custo de um acesso à memória:

proporcional ao número de bits dos operandos.

(Isto é polinomialmente equivalente à máquina de Turing.)

Um algoritmo resolve ou decide um problema de decisão (I, f) se, para cada X em I, o algoritmo encontra a

resposta para X, isto é, o algoritmo calcula f(X).

(18)

Problemas indecidíveis

Existem problemas para os quais não existe um algoritmo:

são os ditos problemas indecidíveis.

(19)

Problemas indecidíveis

Existem problemas para os quais não existe um algoritmo:

são os ditos problemas indecidíveis.

Exemplo: Problema da parada

dado um programa e um arquivo de entrada para ele, decidir se tal programa pára ou não

decidir quando executado com este arquivo de entrada.

(20)

Problemas indecidíveis

Existem problemas para os quais não existe um algoritmo:

são os ditos problemas indecidíveis.

Exemplo: Problema da parada

dado um programa e um arquivo de entrada para ele, decidir se tal programa pára ou não

decidir quando executado com este arquivo de entrada.

Não existe algoritmo que resolva o problema da parada.

(21)

A classe P

Um algoritmo resolve (ou decide) um problema de decisão (I, f) em tempo O(T(n)) se, para cada n em N e cada X em I com |X| = n, o algoritmo encontra a resposta f(X) para X em tempo O(T (n)).

(22)

A classe P

Um algoritmo resolve (ou decide) um problema de decisão (I, f) em tempo O(T(n)) se, para cada n em N e cada X em I com |X| = n, o algoritmo encontra a resposta f(X) para X em tempo O(T (n)).

Um problema de decisão é solúvel em tempo polinomial se existe algum k para o qual existe um algoritmo que resolve o problema em tempo O(nk).

(23)

A classe P

Um algoritmo resolve (ou decide) um problema de decisão (I, f) em tempo O(T(n)) se, para cada n em N e cada X em I com |X| = n, o algoritmo encontra a resposta f(X) para X em tempo O(T (n)).

Um problema de decisão é solúvel em tempo polinomial se existe algum k para o qual existe um algoritmo que resolve o problema em tempo O(nk).

Tais problemas são ditos tratáveis.

(24)

A classe P

Um algoritmo resolve (ou decide) um problema de decisão (I, f) em tempo O(T(n)) se, para cada n em N e cada X em I com |X| = n, o algoritmo encontra a resposta f(X) para X em tempo O(T (n)).

Um problema de decisão é solúvel em tempo polinomial se existe algum k para o qual existe um algoritmo que resolve o problema em tempo O(nk).

Tais problemas são ditos tratáveis.

Classe de complexidade P:

conjunto dos problemas de decisão tratáveis

(25)

A classe NP

Considere o problema circuito hamiltoniano.

(26)

A classe NP

Considere o problema circuito hamiltoniano.

Se a resposta para uma instância G for SIM,

então existe um circuito hamiltoniano C no grafo.

(27)

A classe NP

Considere o problema circuito hamiltoniano.

Se a resposta para uma instância G for SIM,

então existe um circuito hamiltoniano C no grafo.

Dados G e C, é possível verificar em tempo polinomial em

|G| se C é de fato um circuito hamiltoniano em G ou não.

(28)

A classe NP

Considere o problema circuito hamiltoniano.

Se a resposta para uma instância G for SIM,

então existe um circuito hamiltoniano C no grafo.

Dados G e C, é possível verificar em tempo polinomial em

|G| se C é de fato um circuito hamiltoniano em G ou não.

Ou seja, temos como certificar eficientemente que a resposta SIM está correta.

(29)

A classe NP

Considere o problema circuito hamiltoniano.

Se a resposta para uma instância G for SIM,

então existe um circuito hamiltoniano C no grafo.

Dados G e C, é possível verificar em tempo polinomial em

|G| se C é de fato um circuito hamiltoniano em G ou não.

Ou seja, temos como certificar eficientemente que a resposta SIM está correta.

Conseguimos certificar eficientemente a resposta NÃO? Surpreendentemente, não se conhece nenhum método de certificação eficiente para a resposta NÃO no caso do

problema circuito hamiltoniano.

(30)

A classe NP

Classe de complexidade NP: problemas para os quais a resposta SIM pode ser certificada e verificada em tempo polinomial.

(31)

A classe NP

Classe de complexidade NP: problemas para os quais a resposta SIM pode ser certificada e verificada em tempo polinomial.

Mais precisamente, um problema de decisão está em NP se existe um algoritmo A tal que

1. para qualquer instância X do problema com resposta

SIM, existe um Y em Σ tal que A(X, Y ) devolve SIM; 2. para qualquer instância X do problema com resposta

NÃO, para todo Y em Σ, A(X, Y ) devolve NÃO; 3. A consome tempo polinomial em |X|.

(32)

A classe NP

Classe de complexidade NP: problemas para os quais a resposta SIM pode ser certificada e verificada em tempo polinomial.

Mais precisamente, um problema de decisão está em NP se existe um algoritmo A tal que

1. para qualquer instância X do problema com resposta

SIM, existe um Y em Σ tal que A(X, Y ) devolve SIM; 2. para qualquer instância X do problema com resposta

NÃO, para todo Y em Σ, A(X, Y ) devolve NÃO; 3. A consome tempo polinomial em |X|.

(33)

A classe coNP

Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q.

(34)

A classe coNP

Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q.

Exemplo: Problema não-hamiltoniano

Resposta é SIM sempre que o grafo não tem um circuito hamiltoniano e NÃO caso contrário.

(35)

A classe coNP

Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q.

Exemplo: Problema não-hamiltoniano

Resposta é SIM sempre que o grafo não tem um circuito hamiltoniano e NÃO caso contrário.

Classe de complexidade coNP: problemas de decisão que são complemento de problemas de decisão em NP.

(36)

A classe coNP

Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q.

Exemplo: Problema não-hamiltoniano

Resposta é SIM sempre que o grafo não tem um circuito hamiltoniano e NÃO caso contrário.

Classe de complexidade coNP: problemas de decisão que são complemento de problemas de decisão em NP.

Problemas para os quais existe

(37)

P × NP × coNP

O problema circuito hamiltoniano é um exemplo de problema em NP enquanto que o problema

não-hamiltoniano é um exemplo de problema em coNP.

(38)

P × NP × coNP

O problema circuito hamiltoniano é um exemplo de problema em NP enquanto que o problema

não-hamiltoniano é um exemplo de problema em coNP.

Note ainda que P ⊆ NP ∩ coNP.

(39)

P × NP × coNP

O problema circuito hamiltoniano é um exemplo de problema em NP enquanto que o problema

não-hamiltoniano é um exemplo de problema em coNP.

Note ainda que P ⊆ NP ∩ coNP.

P=NP=coNP P

P

P NP=coNP

NP

coNP NP

coNP

Referências

Documentos relacionados

3º Lugar – Seletiva Nacional Combat Games - Lívia Braga Luciano 3º Lugar - Taça Brasil de Juniores – André Henrique Humberto 3º Lugar - Brasileiro Sênior - André

Porém, esta dissertação visa desenvolver um trabalho que identifique os critérios que tenham sua aplicabilidade na tomada de decisão pelo melhor conjunto transportador/modo

Em outras palavras, a medição da grandeza C, a partir da unidade E, ocorre mediante a apropriação da lei (modelo universal) em que se manifestam as relações internas

No capítulo 4 são abordados os principais resultados obtidos diante das restrições impostas à coleta de dados, bem como a avaliação dos dados obtidos caracterizando os períodos

Quando se fez a comparação dos teores de com- posição química dos ingredientes estudados, em relação aos citados por Diggs et al (1965), Morgan et a!- (1975), Ewan (s.n.t),

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Outra nova possibilidade de despejo liminar é tratada no inciso VII. Como visto no art. 40, parágrafo único, se o fiador denunciou a fiança com intenção de exonerar-se da

Quanto a dimensão empreendedorismo rural, os jovens agroempreendedores revelaram que tem muitas ideias de atividades de prestação de serviços para ganhar dinheiro no meio rural