Complexidade computacional

Documentos relacionados
Complexidade de Algoritmos. Edson Prestes

PCC104 - Projeto e Análise de Algoritmos

Complexidade computacional

Teoria da Computação. Computabilidade

MAC5722 Complexidade Computacional

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

Teoria da Computação. Computabilidade e complexidade computacional

INTRATABILIDADE e NP-COMPLETUDE

Teoria da Complexidade Computacional

Teoria da Complexidade Computacional

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

Complexidade de Algoritmos. Edson Prestes

Aula 10: Tratabilidade

Teoria da Computação. Computabilidade e complexidade computacional

Melhores momentos AULA 24. Algoritmos p.906/953

Máquinas de Turing - Computabilidade

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

I.2 Introdução a Teoria da Computação

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

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

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

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

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Análise e Projeto de Algoritmos

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

Teoria da Computação. Máquinas Universais Máquina de Turing

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Máquinas de Turing 3

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

Algoritmos Combinatórios: Introdução

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

Análise de Algoritmos. Slides de Paulo Feofiloff

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

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

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

Aula 10: Decidibilidade

Aula 10: Decidibilidade

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

Teoria da computabilidade Indecidíveis Decidíveis

Aula 01. Murilo V. G. da Silva DINF/UFPR

COMPUTABILIDADE 2. Indecidibilidade

Introdução à classe de problemas NP- Completos

Teoria da Computação 31 de Maio de 2017 Teste 2A Duração: 1h30

COMPLEXIDADE PARAMETRIZADA PARTE 1. Rafael Coelho.

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

Linguagens recursivamente enumeráveis

Faculdade de Computação

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

SCC-5832 Teoria da Computação

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

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Capítulo 2: Procedimentos e algoritmos

4º 20/10/2003. ÍNDICE

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

Linguagens Formais e Problemas de Decisão

TEORIA DE COMPLEXIDADE

Coloração. Carolina Moraes e Lucas Glir

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

SCC Introdução à Teoria da Computação

Uma introdução à complexidade parametrizada

Teoria da Computação. Máquinas Universais Máquina com Pilhas

Teoria dos Grafos Aula 16

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Aula 18. Cap O Problema da Parada

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

Transcrição:

Complexidade computacional CLRS sec 34.1 e 34.2 Algoritmos p. 1

Algumas questões Por que alguns problemas parecem ser (computacionalmente) mais difíceis do que outros? Algoritmos p. 2

Algumas questões Por que alguns problemas parecem ser (computacionalmente) mais difíceis do que outros? Como podemos medir ou comprovar este diferente e aparentemente intrínseco grau de dificuldade? Algoritmos p. 2

Algumas questões Por que alguns problemas parecem ser (computacionalmente) mais difíceis do que outros? Como podemos medir ou comprovar este diferente e aparentemente intrínseco grau de dificuldade? Quais problemas podem ser resolvidos por um algoritmo? Quais não podem? Por quê? Algoritmos p. 2

Algumas questões Por que alguns problemas parecem ser (computacionalmente) mais difíceis do que outros? Como podemos medir ou comprovar este diferente e aparentemente intrínseco grau de dificuldade? Quais problemas podem ser resolvidos por um algoritmo? Quais não podem? Por quê? Quais problemas podem ser resolvidos por um algoritmo eficiente? Quais não podem? Por quê? Algoritmos p. 2

Problema abstrato Problema abstrato de decisão: conjunto I de instâncias e função f : I {SIM, NÃO} Algoritmos p. 3

Problema abstrato Problema abstrato de decisão: conjunto I de instâncias e função f : I {SIM, NÃO} Exemplo: Problema circuito hamiltoniano. I: conjunto de todos os grafos. Para todo G em I, { f(g) = SIM NÃO se G tem um circuito hamiltoniano caso contrário Algoritmos p. 3

Problema abstrato Problema abstrato de decisão: conjunto I de instâncias e função f : I {SIM, NÃO} Exemplo: Problema circuito hamiltoniano. I: conjunto de todos os grafos. Para todo G em I, { f(g) = SIM NÃO se G tem um circuito hamiltoniano caso contrário O valor de f(x) é a resposta do problema para a instância X em I. Algoritmos p. 3

Problema concreto Para um problema abstrato ser resolvido, instâncias devem estar convenientemente codificadas. Algoritmos p. 4

Problema concreto Para um problema abstrato ser resolvido, instâncias devem estar convenientemente codificadas. Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas convenientemente em um alfabeto finito Σ. Algoritmos p. 4

Problema concreto Para um problema abstrato ser resolvido, instâncias devem estar convenientemente codificadas. Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas convenientemente em um alfabeto finito Σ. Exemplo: Problema circuito hamiltoniano. G dado pelas suas listas de adjacências. Algoritmos p. 4

Problema concreto Para um problema abstrato ser resolvido, instâncias devem estar convenientemente codificadas. Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas convenientemente em um alfabeto finito Σ. Exemplo: Problema circuito hamiltoniano. G dado pelas suas listas de adjacências. Considere, sem perda de generalidade, que Σ = {0,1}. Algoritmos p. 4

Problema concreto Para um problema abstrato ser resolvido, instâncias devem estar convenientemente codificadas. Problema concreto de decisão: problema abstrato de decisão em que as instâncias estão codificadas convenientemente em um alfabeto finito Σ. Exemplo: Problema circuito hamiltoniano. G dado pelas suas listas de adjacências. Considere, sem perda de generalidade, que Σ = {0,1}. Daqui para frente, todos os problemas são concretos. Algoritmos p. 4

Modelo de computação Algoritmo: programa escrito em uma linguagem como C ou Pascal. Algoritmos p. 5

Modelo de computação Algoritmo: programa escrito em uma linguagem como C ou Pascal. Custo de uma operação: proporcional ao número de bits dos operandos Custo de um acesso à memória: proporcional ao número de bits dos operandos. Algoritmos p. 5

Modelo de computação Algoritmo: programa escrito em uma linguagem como C ou Pascal. Custo de uma operação: proporcional ao número de bits dos operandos Custo de um acesso à memória: proporcional ao número de bits dos operandos. (Isto é polinomialmente equivalente à máquina de Turing.) Algoritmos p. 5

Modelo de computação Algoritmo: programa escrito em uma linguagem como C ou Pascal. Custo de uma operação: proporcional ao número de bits dos operandos Custo de um acesso à memória: proporcional ao número de bits dos operandos. (Isto é polinomialmente equivalente à máquina de Turing.) Um algoritmo resolve ou decide um problema de decisão (I,f) se, para cada X em I, o algoritmo encontra a resposta para X, isto é, o algoritmo calcula f(x). Algoritmos p. 5

Problemas indecidíveis Existem problemas para os quais não existe um algoritmo: são os ditos problemas indecidíveis. Algoritmos p. 6

Problemas indecidíveis Existem problemas para os quais não existe um algoritmo: são os ditos problemas indecidíveis. Exemplo: Problema da parada dado um programa e um arquivo de entrada para ele, decidir se tal programa pára ou não decidir quando executado com este arquivo de entrada. Algoritmos p. 6

Problemas indecidíveis Existem problemas para os quais não existe um algoritmo: são os ditos problemas indecidíveis. Exemplo: Problema da parada dado um programa e um arquivo de entrada para ele, decidir se tal programa pára ou não decidir quando executado com este arquivo de entrada. Não existe algoritmo que resolva o problema da parada. Algoritmos p. 6

A classe P Um algoritmo resolve (ou decide) um problema de decisão (I,f) em tempo O(T(n)) se, para cada n em N e cada X em I com X = n, o algoritmo encontra a resposta f(x) para X em tempo O(T(n)). Algoritmos p. 7

A classe P Um algoritmo resolve (ou decide) um problema de decisão (I,f) em tempo O(T(n)) se, para cada n em N e cada X em I com X = n, o algoritmo encontra a resposta f(x) para X em tempo O(T(n)). Um problema de decisão é solúvel em tempo polinomial se existe algum k para o qual existe um algoritmo que resolve o problema em tempo O(n k ). Algoritmos p. 7

A classe P Um algoritmo resolve (ou decide) um problema de decisão (I,f) em tempo O(T(n)) se, para cada n em N e cada X em I com X = n, o algoritmo encontra a resposta f(x) para X em tempo O(T(n)). Um problema de decisão é solúvel em tempo polinomial se existe algum k para o qual existe um algoritmo que resolve o problema em tempo O(n k ). Tais problemas são ditos tratáveis. Algoritmos p. 7

A classe P Um algoritmo resolve (ou decide) um problema de decisão (I,f) em tempo O(T(n)) se, para cada n em N e cada X em I com X = n, o algoritmo encontra a resposta f(x) para X em tempo O(T(n)). Um problema de decisão é solúvel em tempo polinomial se existe algum k para o qual existe um algoritmo que resolve o problema em tempo O(n k ). Tais problemas são ditos tratáveis. Classe de complexidade P: conjunto dos problemas de decisão tratáveis (isto é, que são solúveis em tempo polinomial) Algoritmos p. 7

A classe NP Considere o problema circuito hamiltoniano. Algoritmos p. 8

A classe NP Considere o problema circuito hamiltoniano. Se a resposta para uma instância G for SIM, então existe um circuito hamiltoniano C no grafo. Algoritmos p. 8

A classe NP Considere o problema circuito hamiltoniano. Se a resposta para uma instância G for SIM, então existe um circuito hamiltoniano C no grafo. Dados G e C, é possível verificar em tempo polinomial em G se C é de fato um circuito hamiltoniano em G ou não. Algoritmos p. 8

A classe NP Considere o problema circuito hamiltoniano. Se a resposta para uma instância G for SIM, então existe um circuito hamiltoniano C no grafo. Dados G e C, é possível verificar em tempo polinomial em G se C é de fato um circuito hamiltoniano em G ou não. Ou seja, temos como certificar eficientemente que a resposta SIM está correta. Algoritmos p. 8

A classe NP Considere o problema circuito hamiltoniano. Se a resposta para uma instância G for SIM, então existe um circuito hamiltoniano C no grafo. Dados G e C, é possível verificar em tempo polinomial em G se C é de fato um circuito hamiltoniano em G ou não. Ou seja, temos como certificar eficientemente que a resposta SIM está correta. Conseguimos certificar eficientemente a resposta NÃO? Surpreendentemente, não se conhece nenhum método de certificação eficiente para a resposta NÃO no caso do problema circuito hamiltoniano. Algoritmos p. 8

A classe NP Classe de complexidade NP: problemas para os quais a resposta SIM pode ser certificada e verificada em tempo polinomial. Algoritmos p. 9

A classe NP Classe de complexidade NP: problemas para os quais a resposta SIM pode ser certificada e verificada em tempo polinomial. Mais precisamente, um problema de decisão está em NP se existe um algoritmo A tal que 1. para qualquer instância X do problema com resposta SIM, existe um Y em Σ tal que A(X,Y) devolve SIM; 2. para qualquer instância X do problema com resposta NÃO, para todo Y em Σ, A(X,Y) devolve NÃO; 3. A consome tempo polinomial em X. Algoritmos p. 9

A classe NP Classe de complexidade NP: problemas para os quais a resposta SIM pode ser certificada e verificada em tempo polinomial. Mais precisamente, um problema de decisão está em NP se existe um algoritmo A tal que 1. para qualquer instância X do problema com resposta SIM, existe um Y em Σ tal que A(X,Y) devolve SIM; 2. para qualquer instância X do problema com resposta NÃO, para todo Y em Σ, A(X,Y) devolve NÃO; 3. A consome tempo polinomial em X. Y é chamado de certificado para SIM da instância X. Algoritmos p. 9

A classe conp Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q. Algoritmos p. 10

A classe conp Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q. Exemplo: Problema não-hamiltoniano Resposta é SIM sempre que o grafo não tem um circuito hamiltoniano e NÃO caso contrário. Algoritmos p. 10

A classe conp Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q. Exemplo: Problema não-hamiltoniano Resposta é SIM sempre que o grafo não tem um circuito hamiltoniano e NÃO caso contrário. Classe de complexidade conp: problemas de decisão que são complemento de problemas de decisão em NP. Algoritmos p. 10

A classe conp Complemento de um problema de decisão Q: problema de decisão obtido invertendo-se o SIM e o NÃO na resposta ao problema Q. Exemplo: Problema não-hamiltoniano Resposta é SIM sempre que o grafo não tem um circuito hamiltoniano e NÃO caso contrário. Classe de complexidade conp: problemas de decisão que são complemento de problemas de decisão em NP. Problemas para os quais existe um certificado (curto) para a resposta NÃO. Algoritmos p. 10

P NP conp O problema circuito hamiltoniano é um exemplo de problema em NP enquanto que o problema não-hamiltoniano é um exemplo de problema em conp. Algoritmos p. 11

P NP conp O problema circuito hamiltoniano é um exemplo de problema em NP enquanto que o problema não-hamiltoniano é um exemplo de problema em conp. Note ainda que P NP conp. Algoritmos p. 11

P NP conp O problema circuito hamiltoniano é um exemplo de problema em NP enquanto que o problema não-hamiltoniano é um exemplo de problema em conp. Note ainda que P NP conp. NP=coNP P NP P conp P=NP=coNP NP P conp Algoritmos p. 11