Complexidade de Algoritmos. Edson Prestes

Documentos relacionados
Complexidade de Algoritmos. Edson Prestes

Complexidade computacional

PCC104 - Projeto e Análise de Algoritmos

Teoria da Computação. Complexidade computacional classes de problemas

Como saber se um problema está em NP e não está em P?

Busca e Decisão. Problemas de Otimização. Kakuro. P e NP. Pode-se resolver o Kakuro somente resolvendo problemas de decisão?

Complexidade computacional

Teoria da Complexidade Computacional

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Análise de Algoritmos. Slides de Paulo Feofiloff

Agenda. Complexidade Não Determinista A classe NP. A classe Co-NP Reduções de tempo polinomial. Definida por. Exemplos em:

Redução polinomial. Permite comparar o grau de complexidade de problemas diferentes.

Aula 10: Tratabilidade

Melhores momentos AULA 24. Algoritmos p.906/953

Teoria da Computação. Computabilidade

Problemas NP-completos

INTRATABILIDADE e NP-COMPLETUDE

Análise e Projeto de Algoritmos

PCC104 - Projeto e Análise de Algoritmos

Coloração. Carolina Moraes e Lucas Glir

Teoria da Complexidade Computacional

Teoria da Computação. Computabilidade e complexidade computacional

Algoritmos de aproximação

P, NP e NP-Completo. André Vignatti DINF- UFPR

Introdução à classe de problemas NP- Completos

3. Resolução de problemas por meio de busca

Complexidade de Algoritmos

Projeto e Análise de Algoritmos NP Completude Parte 2. Prof. Humberto Brandão

5COP096 TeoriadaComputação

Para muitos problemas computacionais, algoritmos razoáveis não existem!

Redução de Cook-Levin e Considerações Finais

Análise e Projeto de Algoritmos

Teoria dos problemas completos em NP algumas notas

RESOLVENDO O PROBLEMA PSAT COM O AUXÍLIO DA FERRAMENTA DE SOFTWARE LIVRE MINISAT. Aluno: Mikail Campos Freitas Orientador: Prof.

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

2.6 O ALGORITMO DPLL. Preliminares

TEORIA DE COMPLEXIDADE

Uma introdução à complexidade parametrizada

Complexidade de Algoritmos. Edson Prestes

Paulo Guilherme Inça. 7 de dezembro de 2016

Introdução à Teoria da Computação Exercícios

Máquinas de Turing 3

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Medida do Tempo de Execução de um Programa

ANÁLISE DE ALGORITMOS (INF 1721)

DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Algoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira

Otimização Combinatória - Parte 4

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

Algoritmos Combinatórios: Introdução

Projeto e Análise de Algoritmos

Teoria da Computação. Computabilidade e complexidade computacional

Aula 1. Teoria da Computação III

Análise de Algoritmos

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

Definição e avaliação de métricas para solucionadores SAT

ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira

Reduções de Problemas Difíceis

COMPLEXIDADE PARAMETRIZADA PARTE 1. Rafael Coelho.

Conhecimento e Raciocínio Lógica Proposicional

Algoritmos de Aproximação para o Problema do Caixeiro Viajante

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 25

Algoritmos de aproximação - Problema de cobertura por conjuntos

Paulo Eduardo Rauber. Análise da Solução do Problema do Caminho Hamiltoniano Através de Redução para Problema da Satisfazibilidade Booleana

ANÁLISE DE ALGORITMOS (INF 1721)

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

Transcrição:

Edson Prestes

O limite superior de complexidade de um problema refere-se ao melhor algoritmo que o resolve. nlog 2 n é um limite superior para o problema de classificação. O limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade possível que um algoritmo pode alcançar. Quando a diferença entre esses limites desaparece, a complexidade mínima do problema é conhecida e o problema é chamado fechado.

O problema de classificação por comparação é um problema com limite de complexidade determinada, nlogn. Não existe algoritmo de classificação com complexidade por comparação melhor que nlogn.

Considere três elementos a, b, c, que desejamos classificar. A única informação disponível a respeito é uma relação de ordem (<) entre os elementos.

Observe que a quantidade de folhas da árvore corresponde às n! permutações possíveis dos elementos a serem classificados O número de comparações necessárias para classificar n elementos está associada à profundidade das folhas na árvore de decisão. No pior caso, esta complexidade é =

Pela a aproximação de Stirling, sabemos que Logo, Portanto, Mostre que a complexidade média é O(nlog 2 n)

A classe P consiste nos problemas que podem ser resolvidos em tempo Polinomial (Problemas tratáveis) A classe NP consiste nos problemas que podem ser verificados em tempo polinomial (Problemas Intratáveis). Dada uma entrada, é possível verificar se ela corresponde a uma solução do problema: o conjunto de vértices <v 1, v 2,, v n > corresponde a um ciclo hamiltoniano? Isto pode ser feito em tempo polinomial. Sabemos que dolares!!!), mas não sabemos se P = NP! (1 milhão de A classe NP-completo são problemas NP que possuem a característica de que se um deles puder ser resolvido em tempo polinomial então todo problema NP- Completo terá uma solução em tempo polinomial.

Um aspecto interessante é que vários problemas NP-Completos são, a principio, semelhantes a problemas que têm algoritmos de tempo polinomial. Circuito Euleriano x Ciclo Hamiltoniano Satisfabilidade 2-CNF x Satisfabilidade 3-CNF Forma normal k-conjuntiva, ou k-cnf : And de claúsulas Or de exatamente k variáveis ( x y) ( y z) (x z) (z y) - 2-CNF ( x y z) ( y x z) (x z y) - 3-CNF

Problemas de Decisão x Problemas de otimização Problemas de otimização : dentre as soluções viáveis, qual é a melhor? Problemas de decisão : existe uma solução para um dado problema? É possível formular um problema de otimização como um problema de decisão impondo um limite sobre o valor a ser otimizado. Isto nos beneficia quando queremos mostrar que um problema de otimização é difícil, pois o problema de decisão associado é mais fácil ou não mais difícil que o de otimização (limite inferior).

Reduções Permite determinar afinidades entre problemas computacionais. Visitar cada cidade em um conjunto de cidades apenas uma única vez Organizar pessoas ao redor de uma mesa redonda de acordo com uma dada preferência

Reduções Considere dois problemas A e B. A redução consiste em um procedimento que transforma qualquer instância α (entrada) de A em alguma instância β de B de forma que : A transformação ocorre em tempo polinomial As respostas são as mesmas tanto para A quanto para B. Isto é, a resposta para α é sim sse a resposta para β é sim

A existência de uma redução polinomial de A para B indica que B é no mínimo tão dificil que A. Se B é eficientemente solúvel então A também será. Se A exige tempo exponencial então B também exige.

A redução é expressa por A P B Observe que B pode ser mais dificil que A. Este processo pode ser chamado de mapeamento em tempo polinomial redução Karp em tempo polinomial f(a) pode ser a parte fácil de B.

Em termos de linguagem, dizemos que uma linguagem L é C-Completa, onde C é uma classe de linguagens, se 1. L C 2. Para qualquer linguagem A C,

Problemas Abstratos Relaciona um conjunto I de instâncias e um conjunto S de soluções. Em um problema de decisão o conjunto de soluções é igual a {0 (não),1 (sim) }, e a instância é igual a entrada que será processada. Quando as instâncias de um problema são codificadas em cadeias binárias para serem executadas em um computador, este problema passa de um problema abstrato para um problema concreto.

Um algoritmo resolve um problema concreto no tempo O(T(n)) se ele é capaz de produzir uma resposta em um tempo máximo O(T(n)), onde n= I e I corresponde a uma instância do problema. Um problema pode ser resolvido em tempo polinomial se existe um algoritmo para resolvê-lo no tempo O(n k ), k R. A codificação afeta o tempo de execução do algoritmo. Considere um inteiro k e um algoritmo cujo tempo de execução é O(k). Se k é codificado em unário então o tempo de execução do algoritmo é O(n), n= k. Se k é codificado em binário algoritmo é O(2 n ),, o tempo de execução do

Linguagem Formal O conjunto de instâncias para qualquer problema de decisão Q pode ser visto como uma linguagem L definida sob o alfabeto Um algoritmo A aceita uma cadeia se a saída de A(x) é 1. Um algoritmo A rejeita uma cadeia se a saída de A(x) é 0. Uma linguagem é decidida por um algoritmo A, se toda cadeia que pertença a L é aceita por A e toda cadeia que não pertença a L é rejeitada por A.

Linguagem Formal Uma linguagem L é decidida em tempo polinomial por um algoritmo A se existe uma constante k tal que, para qualquer cadeia A decide corretamente se em O(n k ), onde n= x. A classe P = { polinomial}. existe um algoritmo A que decide L em tempo

Verificação de tempo polinomial Considere o problema de encontrar um ciclo hamiltoniano em um grafo não orientado. Ele é definido através da seguinte linguagem Ham-ciclo ={ <G> G é um grafo hamiltoniano} Um algoritmo para decidir a linguagem Ham-ciclo necessitaria listar todas as possíveis combinações de vértices de G, e depois verificar cada permutação para ver se ela corresponde a um caminho hamiltoniano. Este processo demora O(n!). Logo, este algoritmo não é executado em tempo polinomial.

Verificação de tempo polinomial É possível verificar em tempo polinomial se uma dada configuração de vértices é alguma permutação dos vértices de G e se ela forma um ciclo. A partir dai, definimos um algoritmo A de verificação, como sendo um algoritmo de dois argumentos : uma cadeia de entrada x e uma cadeia binária y chamada certificado. A linguagem verificada por A é

A classe de complexidade NP A classe NP (nondeterministic polynomial time) é a classe de linguagens que podem ser verificadas por um algoritmo em tempo polinomial. Uma linguagem pertence a NP sse existe um algoritmo A que verifica L em tempo polinomial, ou seja, L = { existe um certificado y com y = O( x c ) tal que A(x,y)=1} Exemplo : O problema Ham-ciclo NP.

A classe de complexidade NP Note que se L P então L NP existe um algoritmo de tempo polinomial para decidir L, o qual pode ser convertido em um algoritmo de verificação que ignora o certificado e aceita as cadeias fornecidas como entrada. Logo P NP, mas não sabemos se P = NP!

A classe de complexidade NP Em 1971, Stephen Cook mostrou que todos os problemas da Classe NP podem ser reduzidos ao problema SAT. Se SAT admitir um algoritmo polinomial, então qualquer problema em NP pode ser resolvido por este algoritmo. Assim, SAT é dito NP-Completo. Em 1972, Richard Karp reduziu SAT a diversos outros problemas da Classe NP. Ele foi o autor da pergunta P = NP?

Classe NP - Completo Possui a propriedade de que se qualquer problema NP-completo for ser resolvido em tempo polinomial então todo problema NP terá uma solução em tempo polinomial e P=NP. Para provar que um problema P NP é um problema NP-Completo, devemos reformular-lo em termos de um problema Q já conhecido como sendo NP- Completo. Isto pode é feito através de redução.

Classe NP - Completo A linguagem L 1 é redutivel em tempo polinomial a uma linguagem L 2 se existe uma função f : {0,1} * {0,1} *, computável em tempo polinomial, tal que para todo x {0,1} *, x L 1 se e somente se f(x) L 2 A função f é chamada função de redução, e o algoritmo que calcula f é chamado algoritmo de redução. Isto é representado por

Classe NP - Completo -Completo

Classe NP - Completo http://en.wikipedia.org/wiki/file:p_np_np-complete_np-hard.svg Portanto, a classe NP-completo é uma subclasse da NP-difícil

Classe NP - Completo Se existe algum problema NP-Completo que pode ser decidido em tempo polinomial então para todo A NP, teremos A P. Prova: Se A NP, então por definição de NP-completude, A P B. Se B P, então A P.

Problema da Satisfabilidade Dada uma fórmula booleana f na forma normal conjuntiva (CNF), ela é satisfazível? Ou seja, existe um conjunto de valores que quando associados às variáveis de f a tornam verdadeira? A CNF é uma conjuncão de m claúsulas C i, onde cada claúsula é a disjunção de literais x 1 =f, x 2 =v, x 3 =v Não é Possível

2 - Satisfabilidade É uma versão do problema original com a diferença de que cada claúsula tem exatamente 2 literais.