Complexidade computacional

Slides:



Advertisements
Apresentações semelhantes
Cálculo Comprimento de Arco Amintas Paiva Afonso
Advertisements

Teoria da Computação EQUIVALÊNCIA DE PROGRAMAS E MÁQUINA Fabrício Dias
Funções Polinomiais do 2º Grau
A Classe de Problemas NP
Funções Especiais Aula 3 – Prof Marli.
Engenharia de Computação.
PERCEPTRON (CONTINUAÇÃO)
Programação Linear Método Simplex
Complexidade de Linguagens Influência do Modelo de Computação
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Algoritmos e Estruturas de Dados
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
Padrões GoF – Factory Method
Projeto e Análise de Algoritmo Prof. Diane Castonguay
O que você deve saber sobre
EQUAÇÕES POLINOMIAIS Prof. Marlon.
Daniel Felipe Neves Martins
Complexidade de Computação Para avaliar a qualidade de um algoritmo usamos como critério o espaço e o tempo de execução. Ao.
Introdução à NP-completude
Problemas NP-completo
Informática Teórica Engenharia da Computação
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Prof. Roberto Cristóvão
Aprendizado de Máquina Aula 8
Prof. Roberto Cristóvão
CURSO DE MATEMÁTICA BÁSICA
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Linguagem de Programação II Parte IX
Tópicos em otimização combinatória
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
EQUAÇÕES POLINOMIAIS Dorta.
Subset Sum Algoritmos e Estruturas de Dados – IF672
Interpolação.
Algoritmos Crescimento de Funções
Teoria da Computação Aula 5 Prof. Fabiano Sabha.
Campus de Caraguatatuba Aula 12: Sistemas de Equações Lineares (2)
Liliane Salgado NP-Completude Liliane Salgado
NP-Completude Algoritmos e Estruturas de Dados – IF672
Complexidade de Algoritmos
Máquina de Turing Universal
Introdução a Cálculo Numérico
Análise e Síntese de Algoritmos
ANÁLISE ESTATÍSTICA II
2.3. Aplicações das Integrais Simples
Redução.
A Classe NP Teoria da Computação Profa. Sandra de Amo.
Programação Dinâmica.
Problemas NP-completos e Programação Dinâmica
Algoritmos FPT para o Problema da k-Cobertura por Vértices
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Exercícios de Fluxo em Redes
Teoria da complexidade
Analise de Algoritmos e Notação Assintótica
Potenciação an = a . a . a a (a ≠ 0) n fatores onde: a: base
INTRODUÇÃO AOS MÉTODOS NUMÉRICOS Professor: Dr. Edwin B. Mitacc Meza
Portfólio De Matemática
Calculo II Prof Me Carlos Bifi
UNIDADE 2 – ZEROS DAS FUNÇÕES REAIS
POLO MG_09 Encontro 7 – Polinômios Prof. Luciano.
Aula 8: Completeza em R, Supremos e Ínfimos
Informática Teórica Engenharia da Computação
Interpolação PROF. HERON JR.. Objetivo  Interpolar uma função f(x) consiste em aproximar essa função por uma outra função g(x), escolhida entre uma classe.
Comportamento Assintótico
Transcrição da apresentação:

Complexidade computacional Prof.: Edson Holanda edsonholanda@gmail.com

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.

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.

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.

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.

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.

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?"

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!

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)

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.

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.

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

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. 

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.

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.

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.

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.

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.

Importante! É claro que P faz parte de NP

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).

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.

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.

Fonte: http://www.ime.usp.br/~pf/mac5711-2000/