Teoria da Complexidade Computacional

Documentos relacionados
Teoria da Complexidade Computacional

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

5COP096 TeoriadaComputação

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

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

Quicksort Letícia Rodrigues Bueno

Algoritmos em Grafos: Caminho Mínimo

Complexidade computacional

Complexidade de Algoritmos. Edson Prestes

Caminho Mínimo de Fonte Única em Grafos sem Pesos Negativos

Caminho Mínimo de Fonte Única em Grafos com Pesos Negativos Letícia Rodrigues Bueno

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

TEORIA DE COMPLEXIDADE

INTRATABILIDADE e NP-COMPLETUDE

Aula 10: Tratabilidade

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

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

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

Medida do Tempo de Execução de um Programa

Introdução à classe de problemas NP- Completos

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

Paulo Guilherme Inça. 7 de dezembro de 2016

Estudo e Implementação de Algoritmos de Roteamento sobre Grafos em um Sistema de Informações Geográficas

Disciplina de Projetos e Análise de Algoritmos. Aula 1 - Apresentação aos Algoritmos Computacionais

Análise Comparativa de Algoritmos NP-Completo Executados em CPU E GPU Utilizando CUDA

Análise e Projeto de Algoritmos

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Quantidade de memória necessária

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Algoritmos e Estruturas de Dados I

MC3305 Algoritmos e Estruturas de Dados II. Aula 00 Apresentação. Prof. Jesús P. Mena-Chalco.

Teoria da computabilidade Indecidíveis Decidíveis

Complexidade de Algoritmos

Análise e Complexidade de Algoritmos

Projeto e Análise de Algoritmos

TEORIA: 60 LABORATÓRIO: 0

Tópicos Especiais em Ciência da Computação I

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

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica. Prof. Humberto Brandão

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

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

Algoritmos e Estruturas de Dados II

Análise e Implementação de Algoritmos para o Roteamento de Veículos

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

Problemas NP-Completo e Algoritmos Aproximados

Estruturas de Dados II. Caixeiro Viajante

Grafo: Algoritmos e Aplicações

5COP096 TeoriadaComputação

Estrutura de Dados. Plano de Ensino. Vilson Heck Junior. Campus Lages. Instituto Federal de Santa Catarina

Algoritmos 2 - Introdução

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

Análise e Síntese de Algoritmos.

Problemas N P-Completo e Algoritmos Aproximados

Árvores: Conceitos Básicos e Árvore Geradora

Informações Importantes! INF TURMA A

Teoria da Computação. Aula 9 Pesquisa em Memória Secundária 5COP096. Aula 9 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

APLICAÇÕES DE BUSCA EM GRAFOS

Busca em Profundidade. Busca em Grafos. Busca em Grafos. Busca em Grafos. Busca em Grafos. Os objetivos da busca são: Aplicações???

Conceitos Básicos da Teoria de Grafos

Pesquisa Operacional II. Professor João Soares de Mello

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

Grafos: caminhos mínimos

15 - Coloração Considere cada um dos grafos abaixo:

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

Complexidade de algoritmos Notação Big-O

Introdução. Estrutura de Dados II Prof Jairo Francisco de Souza

TEORIA DOS GRAFOS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MATEMÁTICA DISCRETA II PROFº MARCOS NASCIMENTO

MÓDULO 3 - PROBLEMAS DE COBERTURAS DE ARCOS E NÓS

Técnicas de projeto de algoritmos: Indução

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

UMA HEURISTICA APLICADA AO PROBLEMA DO CAIXEIRO VIAJANTE

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

CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DA INFORMAÇÃO

Análise e Síntese de Algoritmos

Teoria dos Grafos Aula 5

Busca em Profundidade e em Largura

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

Tópicos Avançados em Algoritmos

Complexidade assintótica de programas

Transcrição:

Teoria da Complexidade Computacional Letícia Rodrigues Bueno UFABC

Motivação

Motivação I can t find an efficient algorithm, I guess I m just too dumb. Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness, W.H. Freeman and Company: New York, 1979.

Motivação

Motivação I can t find an efficient algorithm, because no such algorithm is possible. Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness, W.H. Freeman and Company: New York, 1979.

Motivação

Motivação I can t find an efficient algorithm, but neither can all these famous people. Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness, W.H. Freeman and Company: New York, 1979.

Introdução teoria de análise de algoritmos: estuda análise de complexidade de algoritmos;

Introdução teoria de análise de algoritmos: estuda análise de complexidade de algoritmos; teoria da complexidade computacional: estuda a classificação de problemas com base na complexidade dos algoritmos que os resolvam.

Introdução teoria de análise de algoritmos: estuda análise de complexidade de algoritmos; teoria da complexidade computacional: estuda a classificação de problemas com base na complexidade dos algoritmos que os resolvam. algoritmo polinomial: complexidade é uma função polinomial no tamanho da entrada. Exemplos:

Introdução teoria de análise de algoritmos: estuda análise de complexidade de algoritmos; teoria da complexidade computacional: estuda a classificação de problemas com base na complexidade dos algoritmos que os resolvam. algoritmo polinomial: complexidade é uma função polinomial no tamanho da entrada. Exemplos: pesquisa binária: O(log n); pesquisa sequencial: O(n); ordenação por inserção: O(n 2 ); multiplicação de matrizes: O(n 3 );

Introdução teoria de análise de algoritmos: estuda análise de complexidade de algoritmos; teoria da complexidade computacional: estuda a classificação de problemas com base na complexidade dos algoritmos que os resolvam. algoritmo polinomial: complexidade é uma função polinomial no tamanho da entrada. Exemplos: pesquisa binária: O(log n); pesquisa sequencial: O(n); ordenação por inserção: O(n 2 ); multiplicação de matrizes: O(n 3 ); algoritmo exponencial: complexidade é uma função exponencial no tamanho da entrada. Um exemplo: caixeiro viajante: O(n!);

Problema do Caixeiro Viajante (PCV) Sejam n cidades e distância c ij entre quaisquer duas cidades i e j. Existe um percurso que passa por toda cidade exatamente uma vez tal que o custo total é o menor possível? c1 c4 4 9 8 5 c3 8 3 c2

Problema do Caixeiro Viajante (PCV) Sejam n cidades e distância c ij entre quaisquer duas cidades i e j. Existe um percurso que passa por toda cidade exatamente uma vez tal que o custo total é o menor possível? c1 c4 4 9 8 5 c3 8 3 Custo: 25 c2 Número de rotas possíveis: (n 1)!

Problema do Caixeiro Viajante (PCV) Sejam n cidades e distância c ij entre quaisquer duas cidades i e j. Existe um percurso que passa por toda cidade exatamente uma vez tal que o custo total é o menor possível? c1 c4 4 9 8 5 c3 8 3 Custo: 24 c2 Número de rotas possíveis: (n 1)!

Problemas Indecidíveis, Intratáveis e Tratáveis Algoritmos exponenciais demandam tal quantidade de tempo para executar que mesmo problemas de tamanho pequeno a moderado não podem ser resolvidos;

Problemas Indecidíveis, Intratáveis e Tratáveis Algoritmos exponenciais demandam tal quantidade de tempo para executar que mesmo problemas de tamanho pequeno a moderado não podem ser resolvidos; Três tipos de problemas (segundo Garey e Johnson):

Problemas Indecidíveis, Intratáveis e Tratáveis Algoritmos exponenciais demandam tal quantidade de tempo para executar que mesmo problemas de tamanho pequeno a moderado não podem ser resolvidos; Três tipos de problemas (segundo Garey e Johnson): 1. Indecidíveis: nenhum algoritmo pode resolver. Exemplo: problema da parada;

Problemas Indecidíveis, Intratáveis e Tratáveis Algoritmos exponenciais demandam tal quantidade de tempo para executar que mesmo problemas de tamanho pequeno a moderado não podem ser resolvidos; Três tipos de problemas (segundo Garey e Johnson): 1. Indecidíveis: nenhum algoritmo pode resolver. Exemplo: problema da parada; 2. Intratáveis: possivelmente não possuem algoritmos polinomiais;

Problemas Indecidíveis, Intratáveis e Tratáveis Algoritmos exponenciais demandam tal quantidade de tempo para executar que mesmo problemas de tamanho pequeno a moderado não podem ser resolvidos; Três tipos de problemas (segundo Garey e Johnson): 1. Indecidíveis: nenhum algoritmo pode resolver. Exemplo: problema da parada; 2. Intratáveis: possivelmente não possuem algoritmos polinomiais; 3. Tratáveis: possuem algoritmos polinomiais. A partir de agora, nos concentraremos em decidir se um problema é tratável ou intratável.

Problemas de Decisão, Localização e Otimização Classificação segundo a resposta esperada:

Problemas de Decisão, Localização e Otimização Classificação segundo a resposta esperada: 1. Problemas de decisão: Exemplo (PCV) - n cidades e distância c ij entre cidades i e j e inteiro não negativo k, existe percurso do PCV de custo menor ou igual a k?

Problemas de Decisão, Localização e Otimização Classificação segundo a resposta esperada: 1. Problemas de decisão: Exemplo (PCV) - n cidades e distância c ij entre cidades i e j e inteiro não negativo k, existe percurso do PCV de custo menor ou igual a k? 2. Problemas de localização: Exemplo (PCV) - n cidades e distância c ij entre cidades i e j e inteiro não negativo k, problema é localizar, se existe, percurso do PCV com custo menor ou igual a k. A resposta seria uma seqüência de vértices u,...,v.

Problemas de Decisão, Localização e Otimização Classificação segundo a resposta esperada: 1. Problemas de decisão: Exemplo (PCV) - n cidades e distância c ij entre cidades i e j e inteiro não negativo k, existe percurso do PCV de custo menor ou igual a k? 2. Problemas de localização: Exemplo (PCV) - n cidades e distância c ij entre cidades i e j e inteiro não negativo k, problema é localizar, se existe, percurso do PCV com custo menor ou igual a k. A resposta seria uma seqüência de vértices u,...,v. 3. Problemas de otimização: Exemplo (PCV) - n cidades e distância c ij entre cidades i e j, problema é obter percurso do PCV de menor custo possível.

P versus NP Classe P: problemas resolvidos em tempo polinomial por algoritmo determínistico. Exemplos: ordenação, caminho mínimo em grafos, fluxo máximo em redes, etc; Classe NP: problemas verificáveis em tempo polinomial. Algoritmos não-determínisticos polinomiais geram solução candidata e é verificada viabilidade em tempo polinomial. Exemplos: ciclo hamiltoniano, cliques em grafos, conjunto independente em grafos, problema da mochila, etc.

P NP Se um problema é da classe P também é da classe NP, pois algoritmo polinomial determinístico usado para resolver problema pode ser utilizado para verificar solução; Então podemos concluir que P NP; Mas P=NP??? Este é o problema em aberto mais conhecido e importante em Computação.

NP-Completude Um problema de decisão A NP é NP-Completo se todos os outros problemas de NP se transformam polinomialmente em A; Portanto, se existir um algoritmo (determinístico) polinomial para a resolução de algum problema NP-Completo, todos os problemas da classe NP podem ser resolvidos em tempo polinomial; Assim, seria possível mostrar que P = NP; Há fortes evidências de que isso não é possível.

NP-Completude Um problema A pertence a classe NP-Difícil se existe um problema B NP-Completo que pode ser transformado em A em tempo polinomial; Apenas problemas de decisão podem ser NP-Completos; A dificuldade de um problema NP-difícil não é menor do que a dificuldade de um problema NP-Completo.

Problema do Caixeiro Viajante (PCV) é NP-Completo

Problema do Caixeiro Viajante (PCV) é NP-Completo Primeiro passo: mostrar que PCV NP. Para um circuito, algoritmo de verificação confirma que seqüência contém cada vértice exatamente uma vez, totaliza custos de arestas e verifica se soma é no máximo k;

Problema do Caixeiro Viajante (PCV) é NP-Completo Primeiro passo: mostrar que PCV NP. Para um circuito, algoritmo de verificação confirma que seqüência contém cada vértice exatamente uma vez, totaliza custos de arestas e verifica se soma é no máximo k; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano):

Problema do Caixeiro Viajante (PCV) é NP-Completo Primeiro passo: mostrar que PCV NP. Para um circuito, algoritmo de verificação confirma que seqüência contém cada vértice exatamente uma vez, totaliza custos de arestas e verifica se soma é no máximo k; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): G

Problema do Caixeiro Viajante (PCV) é NP-Completo Primeiro passo: mostrar que PCV NP. Para um circuito, algoritmo de verificação confirma que seqüência contém cada vértice exatamente uma vez, totaliza custos de arestas e verifica se soma é no máximo k; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano):

Problema do Caixeiro Viajante (PCV) é NP-Completo Primeiro passo: mostrar que PCV NP. Para um circuito, algoritmo de verificação confirma que seqüência contém cada vértice exatamente uma vez, totaliza custos de arestas e verifica se soma é no máximo k; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano):

Problema do Caixeiro Viajante (PCV) é NP-Completo Primeiro passo: mostrar que PCV NP. Para um circuito, algoritmo de verificação confirma que seqüência contém cada vértice exatamente uma vez, totaliza custos de arestas e verifica se soma é no máximo k; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): G 2 1 1 1 2 2 1 1 1 2

Problema do Caixeiro Viajante (PCV) é NP-Completo Primeiro passo: mostrar que PCV NP. Para um circuito, algoritmo de verificação confirma que seqüência contém cada vértice exatamente uma vez, totaliza custos de arestas e verifica se soma é no máximo k; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): 2 1 1 1 2 2 1 1 2 1

Problema do Caixeiro Viajante (PCV) é NP-Completo Consequemente, o grafo G tem um ciclo hamiltoniano se e somente se o grafo G tem um circuito de custo máximo n.

Problema do Caminho Hamiltoniano (PCH) é NP-Completo

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV;

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano):

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 v 5 v 0 v 3 v 4 G

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 u u v 5 v 0 w v 3 v 4 H

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 u u v 5 v 0 w v 3 v 4 H

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 u u v 5 v 0 w v 3 v 4 H

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 u u v 5 v 0 w v 3 v 4 H

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 u u v 5 v 0 w v 3 v 4 H

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 v 5 v 0 v 3 v 4 G

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 v 5 v 0 w v 3 v 4

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 u u v 5 v 0 w v 3 v 4 H

Problema do Caminho Hamiltoniano (PCH) é NP-Completo Primeiro passo: mostrar que PCH NP. Verificação similar ao do PCV; Segundo passo: transformação polinomial a partir de um problema NP-Completo (problema do ciclo hamiltoniano): v 2 v 1 u u v 5 v 0 w v 3 v 4 H

Perguntas? Fonte: http://xkcd.com/399/

Bibliografia CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C. Introduction to Algorithms, 3 a edição, MIT Press, 2009. GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness, W.H. Freeman and Company: New York, 1979. ZIVIANI, N. Projeto de Algoritmos: com implementações em Pascal e C, 2 a edição, Cengage Learning, 2009.