Projeto e Análise de Algoritmos

Documentos relacionados
Análise e Projeto de Algoritmos

Teoria da Complexidade Computacional

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

Problemas NP-completos

Teoria da Complexidade Computacional

Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34

Análise e Projeto de Algoritmos

Complexidade de Algoritmos

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

Problemas Intratáveis ou computação eficiente X computação ineficiente

Complexidade de Algoritmos. Edson Prestes

ANÁLISE DE ALGORITMOS (INF 1721)

Reduções de Problemas Difíceis

TEORIA DE COMPLEXIDADE

Algoritmos de aproximação

Análise de Algoritmos. Slides de Paulo Feofiloff

PCC104 - Projeto e Análise de Algoritmos

Uma forma de classificação

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

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

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

Projeto e Análise de Algoritmos

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

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

5COP096 TeoriadaComputação

Melhores momentos AULA 24. Algoritmos p.906/953

TEORIA DE COMPLEXIDADE

Polinomial: função de complexidade é O(p(n)), onde p(n) é um polinômio.

Complexidade computacional

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

Algoritmos de Aproximação Segundo Semestre de 2012

Provadores de Teoremas baseados em contagem

Complexidade de Algoritmos. Edson Prestes

Problemas NP-Completos Bolas Mágicas

ANÁLISE DE ALGORITMOS (INF 1721)

Análise de Algoritmos

Linguagem Computacional

Ciclos hamiltonianos e o problema do caixeiro viajante

Complexidade de Algoritmos

Algoritmos Combinatórios: Introdução

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

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

Por que não encontramos algoritmos polinomiais para muitos problemas?

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

Por que não encontramos algoritmos polinomiais para muitos problemas?

Análise de Algoritmos

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Complexidade de Algoritmos

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

Complexidade Parametrizada - Intratabilidade Uéverton S. Souza - UFF

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

Complexidade computacional

Introdução à classe de problemas NP- Completos

Projeto e Análise de Algoritmos

Aula 10: Tratabilidade

Análise e Complexidade de Algoritmos

Análise e Projeto de Algoritmos

Coloração. Carolina Moraes e Lucas Glir

Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú

Algoritmos de Aproximação Segundo Semestre de 2012

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

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

Ciência da Computação A&P

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Aula 19: Lifting e matrizes ideais

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

Lógica para Computação Segundo Semestre, Aula 10: SAT. Prof. Ricardo Dutra da Silva. ( p (q ( q r))) ( p r) ( p q) ( p q r) p r.

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

Análise e Síntese de Algoritmos

Teoria e Algoritmos em Grafos

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

INTRATABILIDADE e NP-COMPLETUDE

Projeto e Análise de Algoritmos

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Máquinas de Turing 3

Classes de Complexidade e NP-Completude

Complexidade de Tempo

Análise de Algoritmos

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Algoritmos de aproximação - Problema do caixeiro viajante

Forma Normal de Boyce-Codd

Grafos: componentes fortemente conexos, árvores geradoras mínimas

O Problema da 3- Coloração de Grafos

Lógica Computacional Aula 4

Paulo Guilherme Inça. 7 de dezembro de 2016

Otimização em Grafos

Medida do Tempo de Execução de um Programa

Análise e Complexidade de Algoritmos

Complexidade computacional

Teoria dos Grafos. Coloração de Vértices

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

Árvores: Conceitos Básicos e Árvore Geradora

Transcrição:

Projeto e Análise de Algoritmos Tempo polinomial Verificação de tempo polinomial Diane Castonguay diane@inf.ufg.br Instituto de Informática Universidade Federal de Goiás

Tempo polinomial Um algoritmo é eficiente se ele é de complexidade polinomial no tamanho da entrada. Ideia tamanho da entrada : n Complexidade do algoritmo: O(n a )

Algoritmo de primalidade Primo(n) 1. m SqrtInteiro(n) // m = sqrt(n) 2. para d 2 até m faça 3. se n mod d = 0 4. então retorna n não é primo 5. fim se 6. fim para 7. retorna n é primo Para uma solução melhor: http://www.educ.fc.ul.pt/icm/icm98/icm12/algoritmos.htm

Complexidade do algoritmo Primo É O(n 1/2 ), mas o algoritmo Primo não é eficiente! Porque??? Para implementar um numero inteiro usa se o binario, isto quer dizer que o tamanho da entrada é (lg n) e não n. n 1/2 = (2 lg n ) 1/2 = ( 2) lg n é exponencial em lg n!

Algoritmo de raiz quadrada inteira /* m = sqrt(n), n > 1*/ SqrtInteiro(n) 1. m 1 2. enquanto (m+1)*(m+1) n faça 3. m m + 1 4. fim enquanto 5. retorna Para uma solução melhor: http://www2.fundao.pro.br/articles.asp?cod=151

Exemplo de algoritmos eficientes Vimos varios exemplos ao longo da disciplina. Há problemas pelos quais vimos algoritmos não éficientes e as suas soluções eficientes. Um exemplo é os problemas que resolvemos com a programação dinâmica.

Problema versus algoritmo Tendo um problema e um algoritmo que o resolve, se o algoritmo não é eficiente, isto quer dizer que não existe um algoritmo eficiente que resolva o problema? CLARO QUE NÃO!!!

Tipos de problemas DECISÃO Existe uma estrutura S que satisfaça uma propriedade P? RESPOSTA: SIM ou NÃO LOCALIZAÇÃO Encontrar uma estrutura S que satisfaça uma propriedade P. RESPOSTA: uma estrutura S OPTIMIZAÇÃO Encontrar uma estrutura S que satisfaça uma propriedade P e que seja melhor segundo algum critério C de medida. RESPOSTA: uma estrutura S tal que não haja outra melhor

Definition de CLIQUE Seja G = (V, E) um grafo não orientado. Uma clique V' é um subconjunto de vértices de G (V' V) tal que para cada par de vértices u, v V' temos uma aretsa (u, v) em G (i.e (u, v) E). O tamanho de uma clique V' é a quantia de vértices em V'.

Tipos de problemas: CLIQUE DECISÃO Dado um grafo G não orientado. existe uma clique de tamanho maior ou igual a k? LOCALIZAÇÃO Dado um grafo G não orientado. Encontre uma clique de tamanho maior ou igual a k. OPTIMIZAÇÃO Dado um grafo G não orientado. Encontre uma clique de maoir tamanho.

Definição do Problema do caixeiro viajante Seja G = (V, E) um grafo orientado com peso. Um percurso é um ciclo simples que passa por cada vertice do grafo. O peso do percurso é a soma dos pesos das arestas do ciclo.

Tipo de problemas do caixeiro viajante DECISÃO Dado um grafo G orientado com peso. existe um percurso de peso menor ou igual a k? LOCALIZAÇÃO Dado um grafo G orientado com peso. Encontre um percurso de peso menor ou igual a k. OPTIMIZAÇÃO Dado um grafo G orientado com peso. Encontre um percurso de menor peso.

CLASSE P Um problema pertence a classe P (polinomial) se existe um algoritmo eficiente que o resolva. Para mostrar que um problema é polinomial precisa exibir um algoritmo que o resolva em tempo polinomial (no tamanho da entrada) Para mostar que um problema NÃO é polinomial precisa mostrar que nenhum algoritmo de complexidade polinomial possa resolve lo.

CERTIFICADO ALGORITMO DE VERIFICAÇÃO Vamos nos concentrar em problemas de decisão. Muitos problemas de decisão podem ser resolvido através de um certificado. Um certificado é uma estrutura S que satisfaz a propriedade P. Um algoritmo de verificação é um algoritmo que prova se uma estrutura S satisfaz a propriedade P.

Verificação de um certificado CLIQUE E CLIQUE(G, V') 1. para u, v V' faça 2. se (u, v) E 3. então retorna FALSE 4. fim se 5. fim para 6. retorna TRUE Podemos implementar este algoritmo para seja O(V 2 ).

CLASSE NP Um problema de decisão pertence a classe NP (non deterministic polinomial) se a resposta sim do problema tem certificado polinomial. Isto é: tem um algoritmo de verificação polinomial da propriedade P por um certificado dado S.

Exemplo CLIQUE é NP SAT é NP P NP

Exemplo: SAT Entrada: uma fórmula booleana Composição: variaveis booleanas conectivos booleanos (AND), ( OR), (NOT), (implicação), (Se e somente se) parênteses Problemas relacionados a SAT CIRCUIT SAT, CNF SAT, 3 CNF SAT FNC = forma normal conjunta : (de ) 3 FNC = forma normal conjunta de 3 : (3 de )

Problema de decisão: SAT Dado uma fórmula booleana, ele é capaz de satisfação?

SAT é NP Para mostrar que SAT pertence a NP mostramos que um certificado (i.e uma atribuição satisfatória para a formula de entrada) pode ser verificado em tempo polinomial. O algoritmo de verificação simplesmente subsitui cada variável na fórmula por seu valor correspondente, e então avalia a expressão. Essa tarefa é realizável em tempo polinomial. Se a expressão tem o valor 1, a fórmula é capaz de satisfação.

CLASSE co NP Um problema de decisão pertence a classe co NP se a resposta não do problema tem certificado polinomial.

O grande questionamento! P = NP???