Uma introdução à complexidade parametrizada

Documentos relacionados
COMPLEXIDADE PARAMETRIZADA PARTE 1. Rafael Coelho.

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

Complexidade computacional

INTRATABILIDADE e NP-COMPLETUDE

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

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos

Aula 10: Tratabilidade

Teoria da Complexidade Computacional

Teoria da computabilidade Indecidíveis Decidíveis

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

Teoria da Computação. Computabilidade e complexidade computacional

Problemas de otimização

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

Complexidade de Algoritmos. Edson Prestes

Coloração. Carolina Moraes e Lucas Glir

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

Teoria da Computação. Computabilidade

Complexidade computacional

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

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

Análise e Projeto de Algoritmos

5COP096 TeoriadaComputação

Introdução à classe de problemas NP- Completos

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

Projeto e Análise de Algoritmos

Técnicas de Demonstração. Raquel de Souza Francisco Bravo 17 de novembro de 2016

Complexidade de Algoritmos. Edson Prestes

Algoritmos Combinatórios: Introdução

LINGUAGENS FORMAIS E AUTÔMATOS

Melhores momentos AULA 24. Algoritmos p.906/953

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

PROBLEMAS DE CORTES DE ARESTAS MÁXIMOS E MÍNIMOS EM GRAFOS. Rubens André Sucupira

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

Aula 1. Teoria da Computação III

Análise e Projeto de Algoritmos

Teoria da Complexidade Computacional

Teoria dos Conjuntos. (Aula 6) Ruy de Queiroz. O Teorema da. (Aula 6) Ruy J. G. B. de Queiroz. Centro de Informática, UFPE

ANÁLISE DE ALGORITMOS (INF 1721)

4º 20/10/2003. ÍNDICE

Paulo Guilherme Inça. 7 de dezembro de 2016

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

BCC204 - Teoria dos Grafos

Teoria dos Grafos Aula 14

Estruturas de Dados Apresentação

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Otimização Combinatória - Parte 4

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

a complexidade no desempenho de algoritmos

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

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

Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos. Prof. Dr. Bruno Moreno

Algoritmos 2 - Introdução

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

Aula 10: Decidibilidade

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

ANÁLISE DE ALGORITMOS (INF 1721)

Lógica Computacional

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

Linguagens de Programação

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

Complexidade de Algoritmos. Edson Prestes

Teoria da Computação. Computabilidade e complexidade computacional

Transcrição:

Vinicius Fernandes dos Santos - CEFET-MG Uéverton dos Santos Souza - UFF/CEFET-RJ 34 o JAI - Jornadas de Atualização em Informática XXXV Congresso da Sociedade Brasileira de Computação Recife, Julho 20 23, 2015

Complexidade clássica Problema computacional 1 Uma entrada. 2 A questão a ser respondida. 2 / 29

Complexidade clássica Problema computacional 1 Uma entrada. 2 A questão a ser respondida. Um algoritmo A para um problema Π é uma sequência finita de instruções para um computador, com a finalidade de solucionar Π. 2 / 29

Complexidade clássica Tratabilidade de tempo polinomial Um algoritmo de tempo polinomial é definido como um algoritmo cuja sua função de complexidade de tempo é O(p(n)), para alguma função polinomial p, onde n é usado para denotar o tamanho da entrada. 3 / 29

Complexidade clássica Tratabilidade de tempo polinomial Um algoritmo de tempo polinomial é definido como um algoritmo cuja sua função de complexidade de tempo é O(p(n)), para alguma função polinomial p, onde n é usado para denotar o tamanho da entrada. Um problema Π pertence à classe P se e somente se Π pode ser solucionado em tempo polinomial por um algoritmo determinístico. 3 / 29

Complexidade clássica Definição Um problema Π pertence à classe NP se e somente se para um dado certificado (uma string que certifica a resposta de uma computação), há um algoritmo determinístico que verifica sua validade em tempo polinomial. 4 / 29

Complexidade clássica 5 / 29

Complexidade clássica 6 / 29

A principal questão em aberto da computação P = N P? 7 / 29

Reduções Definição Dados dois problemas Π e Π, Π Π (Π se reduz a Π em tempo polinomial) se existe um algoritmo que, dado uma instância I de Π, constrói uma instância I de Π em tempo polinomial em I tal que a partir de uma solução para I, uma resposta correta para I pode ser emitida em tempo polinomial, e vice-versa. 8 / 29

NP-completude Definição Um problema Π é NP-difícil se para todo problema Π NP, Π Π ; se Π também está em NP, então Π é NP-completo. 9 / 29

A principal questão em aberto da computação P = N P? 10 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? 11 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? O que torna um problema NP-completo, de fato, difícil de ser solucionado na prática? 11 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? O que torna um problema NP-completo, de fato, difícil de ser solucionado na prática? Quais aspectos de um problema NP-completo são suas fontes de intratabilidade? 11 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? O que torna um problema NP-completo, de fato, difícil de ser solucionado na prática? Quais aspectos de um problema NP-completo são suas fontes de intratabilidade? Como explorar algumas fontes de intratabilidade de um problema para auxiliar a sua resolução? 11 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? O que torna um problema NP-completo, de fato, difícil de ser solucionado na prática? Quais aspectos de um problema NP-completo são suas fontes de intratabilidade? Como explorar algumas fontes de intratabilidade de um problema para auxiliar a sua resolução? Todo problema NP-completo possui o mesmo nível de dificuldade? 11 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? O que torna um problema NP-completo, de fato, difícil de ser solucionado na prática? Quais aspectos de um problema NP-completo são suas fontes de intratabilidade? Como explorar algumas fontes de intratabilidade de um problema para auxiliar a sua resolução? Todo problema NP-completo possui o mesmo nível de dificuldade? Como distinguir diferentes níveis de dificuldade entre problemas NP-completos? 11 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? O que torna um problema NP-completo, de fato, difícil de ser solucionado na prática? Quais aspectos de um problema NP-completo são suas fontes de intratabilidade? Como explorar algumas fontes de intratabilidade de um problema para auxiliar a sua resolução? Todo problema NP-completo possui o mesmo nível de dificuldade? Como distinguir diferentes níveis de dificuldade entre problemas NP-completos? Quão bom pode ser um algoritmo de pré-processamento para um problema NP-completo? 11 / 29

Questões Como resolver um problema NP-completo de forma eficiente na prática? O que torna um problema NP-completo, de fato, difícil de ser solucionado na prática? Quais aspectos de um problema NP-completo são suas fontes de intratabilidade? Como explorar algumas fontes de intratabilidade de um problema para auxiliar a sua resolução? Todo problema NP-completo possui o mesmo nível de dificuldade? Como distinguir diferentes níveis de dificuldade entre problemas NP-completos? Quão bom pode ser um algoritmo de pré-processamento para um problema NP-completo? Existe alguma teoria para avaliar a eficiência de algoritmos de pré-processamento? 11 / 29

Complexidade parametrizada 12 / 29

Complexidade parametrizada Os pais da teoria Rod Downey & Michael Fellows 13 / 29

Complexidade parametrizada Os pais da teoria Rod Downey Uma ideia simples, mas brilhante & Michael Fellows Talvez boa parte ou toda a explosão combinatória que precisamos enfrentar para resolver de forma exata uma instância qualquer de um problema intratável, esteja confinada em uma característica estrutural pequena dessa instância. 13 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? 14 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? Primeiramente, temos duas possibilidades: 14 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? Primeiramente, temos duas possibilidades: - Tentar construir um algoritmo de tempo polinomial (implica P = NP). 14 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? Primeiramente, temos duas possibilidades: - Tentar construir um algoritmo de tempo polinomial (implica P = NP). - Invocar algum tipo de algoritmo heurístico ou aproximativo, de tempo polinomial. 14 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? Primeiramente, temos duas possibilidades: - Tentar construir um algoritmo de tempo polinomial (implica P = NP). - Invocar algum tipo de algoritmo heurístico ou aproximativo, de tempo polinomial. Entretanto, caso estejamos restritos a soluções exatas e ótimas, heurísticas e aproximações podem não ser suficientes. 14 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? Observação Frequentemente, problemas práticos possuem diversos aspectos adicionais que podem ser considerados como, por exemplo, o grafo de entrada ser planar, as instâncias possuírem grau máximo ou diâmetro constantes, a estrutura buscada possuir tamanho limitado, e assim por diante. 15 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? Observação Frequentemente, problemas práticos possuem diversos aspectos adicionais que podem ser considerados como, por exemplo, o grafo de entrada ser planar, as instâncias possuírem grau máximo ou diâmetro constantes, a estrutura buscada possuir tamanho limitado, e assim por diante. Sendo assim, dado que na prática alguns aspectos do problema possuem tamanho ou valor delimitado, existem outras abordagens para a sua resolução: 15 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? - Invocar algum tipo de técnica de força bruta, que pode ser executada em tempo polinomial com complexidade O(n f (k) ), onde n é usado para denotar o tamanho da entrada e k é algum aspecto com tamanho ou valor delimitado. Neste caso, quando as instâncias a serem resolvidas são grandes, esta abordagem pode não ser muito viável. 16 / 29

Questões Como solucionar um problema NP-difícil da melhor forma possível na prática? - Invocar um algoritmo de tempo não polinomial tal que sua complexidade de tempo não polinomial é apenas uma função de algum subconjunto de aspectos do problema que possuem tamanho ou valor delimitado na prática. 17 / 29

Questões Como podemos observar, um problema genérico possui inúmeros aspectos que poderiam ser considerados para análise. No entanto, para cada aplicação existe um subconjunto particular de aspectos do problema que são de fato interessantes. 18 / 29

Questões Como podemos observar, um problema genérico possui inúmeros aspectos que poderiam ser considerados para análise. No entanto, para cada aplicação existe um subconjunto particular de aspectos do problema que são de fato interessantes. Parâmetro Um parâmetro, por sua vez, é uma função que extrai um aspecto ou um conjunto de aspectos particulares de um problema; isto é, um parâmetro é um mecânismo para isolar aspectos de um problema e um receptáculo no qual aspectos são encapsulados para manipulação e análise subsequente. 18 / 29

Questões Como podemos observar, um problema genérico possui inúmeros aspectos que poderiam ser considerados para análise. No entanto, para cada aplicação existe um subconjunto particular de aspectos do problema que são de fato interessantes. Parâmetro Um parâmetro, por sua vez, é uma função que extrai um aspecto ou um conjunto de aspectos particulares de um problema; isto é, um parâmetro é um mecânismo para isolar aspectos de um problema e um receptáculo no qual aspectos são encapsulados para manipulação e análise subsequente. Neste ponto, outras questoes emergem: 18 / 29

Questões 1 Dado um problema e um parâmetro do problema, existe um algoritmo para o problema cuja complexidade de tempo não polinomial é puramente uma função deste parâmetro? 2 Relativo a quais parâmetros do problema tal algoritmo existe? 19 / 29

Complexidade parametrizada Um parâmetro é aspecto do problema encapsulado para posterior análise. 20 / 29

Complexidade parametrizada Um parâmetro é aspecto do problema encapsulado para posterior análise. Problema parametrizado 1 A parte principal da entrada do problema. 2 Alguns aspectos do problema, que constituem o(s) parâmetro(s). 3 A questão a ser respondida. 20 / 29

Complexidade parametrizada Um parâmetro é aspecto do problema encapsulado para posterior análise. Problema parametrizado 1 A parte principal da entrada do problema. 2 Alguns aspectos do problema, que constituem o(s) parâmetro(s). 3 A questão a ser respondida. Definição Sejam Π um problema NP-difícil; S = {a 1, a 2,..., a l } um subconjunto de aspectos de Π Denotamos por: Π(a 1, a 2,..., a l ), ou Π(S), a versão parametrizada de Π onde os aspectos em S são parâmetros fixados. 20 / 29

Complexidade parametrizada Tratabilidade por parâmetro fixo Um problema parametrizado Π(k) pertence à classe FPT se e somente se existe um algoritmo determinístico que o resolva em tempo f (k).n O(1). 21 / 29

Complexidade parametrizada na prática Caracterização da classe FPT Redução a um núcleo (kernelization): Um problema parametrizado Π(k) pertence à classe FPT se e somente se existe um algoritmo de pré-processamento que em tempo polinomial reduz a instância original do problema a uma outra instância cujo tamanho é uma função de k. x = f (k) 22 / 29

Complexidade clássica complexidade parametrizada Análise clássica 23 / 29

Complexidade clássica complexidade parametrizada Análise multivariada 24 / 29

Complexidade parametrizada Tratabilidade por parâmetro fixo Um problema parametrizado Π(k) pertence à classe FPT se e somente se existe um algoritmo determinístico que o resolva em tempo f (k).n O(1). Dado um problema NP-difícil Π e algum subconjunto de aspectos S de Π, dizemos que S é uma uma fonte de intratabilidade de tempo polinomial para Π, se Π(S) pertence a FPT. 25 / 29

Complexidade parametrizada Tratabilidade por parâmetro fixo Um problema parametrizado Π(k) pertence à classe FPT se e somente se existe um algoritmo determinístico que o resolva em tempo f (k).n O(1). Dado um problema NP-difícil Π e algum subconjunto de aspectos S de Π, dizemos que S é uma uma fonte de intratabilidade de tempo polinomial para Π, se Π(S) pertence a FPT. Na teoria da complexidade parametrizada, o foco não está em verificar se um problema é difícil, a teoria parte da suposição que os problemas mais interessantes são intratáveis quando considerados classicamente. O foco desta teoria está na seguinte questão: O que faz o problema computacionalmente difícil?. 25 / 29

Como provar que um problema pertence à classe FPT? Primeiro passo: 26 / 29

Como provar que um problema pertence à classe FPT? Primeiro passo: FPT XP 26 / 29

Como provar que um problema pertence à classe FPT? Primeiro passo: FPT XP verificar se o problema parametrizado em questão, Π(k), pertence à classe XP. 26 / 29

A classe XP Definição Um problema parametrizado Π(S) pertence à classe XP se existe um algoritmo para solucionar Π(S) em tempo f (S).n g(s), onde n é usado para denotar o tamanho da entrada e f e g são funções arbitrárias. 27 / 29

A classe XP Lema Dado um problema NP-difícil Π e um subconjunto S de seus aspectos, se Π permanece NP-difícil mesmo quando os aspectos em S são delimitados por constantes, então um problema parametrizado Π(S) não está em XP, a menos que P = NP. 28 / 29

A classe XP Lema Dado um problema NP-difícil Π e um subconjunto S de seus aspectos, se Π permanece NP-difícil mesmo quando os aspectos em S são delimitados por constantes, então um problema parametrizado Π(S) não está em XP, a menos que P = NP. Prova. Se Π está em XP então por definição este problema é solucionado por um algoritmo que pode ser executado em tempo f (S)n g(s) para algumas funções f e g. Quando o valor de todos os aspectos em S são delimitados por uma constate, os valores de f (S) e g(s) são constantes e este tempo de execução torna-se polinomial em n. Como Π é NP-difícil então P = NP. 28 / 29

A classe XP Corolário Se P NP, então Π(S) pertence a XP se e somente se Π é solucionável em tempo polinomial quando os aspectos em S são delimitados por constantes. 29 / 29