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.