A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Complexidade computacional

Apresentações semelhantes


Apresentação em tema: "Complexidade computacional"— Transcrição da apresentação:

1 Complexidade computacional
Prof.: Edson Holanda

2 Importância A análise da complexidade de um algoritmo é essencial para prever como será o comportamento do algoritmo, sem que haja a necessidade de implementá-lo em um computador específico.

3 Importância Infelizmente é praticamente impossível se prever exatamente o comportamento de um algoritmo. Somente as características essenciais dos algoritmos são analisadas e muitos detalhes de implementação são ignorados.

4 Importância Portanto essa análise é uma aproximação e não é exata.
Nesse estudo os valores constantes são ignorados e analisamos o comportamento do algoritmo quando o tamanho da entrada tendo ao infinito.

5 Instâncias de problemas
O conceito de instância de um problema corresponde ao de "entrada" de um algoritmo.  A distinção entre um problema e suas instâncias é análogo à distinção entre uma função e os seus valores. Um algoritmo para um problema deve ser capaz de resolver qualquer instância do problema.

6 Tamanho de uma instância
O tamanho de uma instância de um problema é comprimento da cadeia de caracteres que defina a instância ou pela quantidades de valores da instância. O tamanho de uma instância será denotado por N.

7 Problemas de decisão Podemos nos restringir, sem perder muita generalidade, a problemas de decisão, ou seja, problemas cujas instâncias têm solução SIM ou NÃO.  Diremos que uma instância é positiva se tem solução SIM e negativa em caso contrário. Exemplo (raiz de polinômio): "Existe um inteiro x tal que ax² + bx + c = 0?"

8 Complexidade de um problema
A complexidade de um problema é o consumo de tempo de um algoritmo ‘ótimo’ para o problema. O consumo é medido em função do tamanho N da instância. Não se trata necessariamente do melhor algoritmo conhecido para o problema, pois um algoritmo ótimo pode não ter sido descoberto ainda!

9 A notação O Definição: Dizemos que uma função g(x) é O(f(x)) para outra função f(x), se existem constantes c e n, tais que para todo N  n, temos que g(N)  cf(N)

10 Complexidade de Máquinas de Turing
Uma máquina de Turing M é dita de complexidade (de tempo) T(N), se sempre que M recebe uma entrada w de comprimento N, M pára depois de efetuar no máximo T(N) movimentos, aceitanto ou rejeitando.

11 Problemas polinomiais (Tratáveis)
Um problema é polinomial se existe uma Máquina de Turing M (algortimo) que resolva o problema, com complexidade de O(Nk)  para algum k,  onde N é o tamanho da instância.

12 Problemas polinomiais (Tratáveis)
Ou seja, um problema é polinomial se sua complexidade é  O(Nk)  para algum k,  onde N é o tamanho da instância.

13 Problemas não-polinomiais
Um problema é não-polinomial se não existe k tal que a complexidade do problema é  O(Nk),  onde N é o tamanho da instância. 

14 Classe P de problemas A classe P de problemas é o conjunto de todos os problemas polinomiais, ou seja, o conjunto de problemas que têm complexidade O(Nk) para algum k. Para muitos problemas não sabemos (ainda) se ele está ou não em P, pois ainda não descobrimos um algoritmo polinomial nem conseguimos demonstrar que um tal algoritmo não existe.

15 Classe P de problemas A classe P de problemas é o conjunto de todos os problemas polinomiais, ou seja, o conjunto de problemas que têm complexidade O(Nk) para algum k.

16 Verificação de soluções
Um algoritmo verificador para um problema de decisão é um algoritmo polinomial que: recebe uma instância supostamente positiva do problema e uma cadeia de caractecteres que serve como "certificado" do caráter positivo da instância e anuncia se o certificado apresentado constitui, de fato, uma prova de que a instância é positiva.

17 Verificação de soluções
Exemplo de problema: Dados números inteiros a, b, c e d, decidir se existe um número inteiro x tal que ax³ + bx² + cx + d = 0 Certificado: número inteiro x. Algoritmo verificador: basta fazer oito operações aritméticas para verificar se é verdade que ax³ + bx² + cx + d = 0.

18 Classe NP de problemas A classe NP de problemas é o conjunto de todos os problemas de decisão que admitem um algoritmo verificador.  Ou seja, um problema está em NP se toda instância positiva do problema admite um certificado que seja aceito por um algoritmo verificador.

19 Importante! É claro que P faz parte de NP

20 Classe coNP de problemas
O complemento de um problema de decisão X tem solução NÃO se e somente se o problema X tem solução SIM. A classe coNP de problemas é o conjunto de todos os problemas de decisão cujo complemento está em NP  (ou seja, cujo complemento admite um algoritmo verificador).

21 A questão "P = NP?" É claro que P é parte de NP.  A maioria dos especialistas acredita que que P é parte própria de NP, ou seja, que P ≠ NP.  A maioria dos especialistas acredita que há problemas em NP que não podem ser resolvidos por um algoritmo polinomial.  Mas ninguém conseguiu ainda provar essa conjectura.

22 Problemas NP-completos
Um problemas A é NP-completo  se A está em NP e qualquer outro problema em NP pode ser polinomialmente reduzido a A.  Ou seja, A é NP-completo se, para qualquer B em NP, um algoritmo polinomial para A pode ser adaptado para resolver B em tempo polinomial.

23 Fonte:


Carregar ppt "Complexidade computacional"

Apresentações semelhantes


Anúncios Google