Complexidade computacional

Documentos relacionados
Algoritmos de Aproximação Segundo Semestre de 2012

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos

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

Análise de Algoritmos

Turing e Complexidade

Complexidade computacional

Teoria da Complexidade Computacional

Teoria da Complexidade Computacional

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

Complexidade de Algoritmos. Edson Prestes

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

Aula 10: Tratabilidade

Análise e Síntese de Algoritmos

Teoria da Computação. Computabilidade e complexidade computacional

Uma forma de classificação

Melhores momentos AULA 24. Algoritmos p.906/953

TEORIA DE COMPLEXIDADE

Máquinas de Turing - Computabilidade

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

PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

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

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

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Problemas Algoritmicos

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

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

AULA 24. Algoritmos p.856/905

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

Técnicas de Extensão de MT

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

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing

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.

Universidade Federal de Alfenas

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

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

S. C. Coutinho. Máquina de Turing Universal p. 1/22

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

Aula 10: Decidibilidade

Aula 10: Decidibilidade

Análise e Projeto de Algoritmos

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

Resolução e Eficiência computacionais: Qui pro quo!

Universidade Federal de Uberlândia Mestrado em Ciência da Computação

Linguagens recursivamente enumeráveis

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

Faculdade de Computação

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Análise e Projeto de Algoritmos

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:

Algoritmos de aproximação - Problema da Mochila

Linguagens Formais e Problemas de Decisão

TEORIA DE COMPLEXIDADE

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

Coloração. Carolina Moraes e Lucas Glir

Projeto e Análise de Algoritmos Aula 1: Panorama (0.1,0.2)

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

Análise de Algoritmos

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

Autómatos determísticos de k-pilhas

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

Computação. Sob uma perspectiva teórica. Elloá B. Guedes. IQuanta. 22 de setembro de 2008

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

PLANO DE ENSINO. CURSO: Bacharelado em Sistemas de Informação MODALIDADE: PRESENCIAL ( X ) OBRIGATÓRIA ( ) OPTATIVA DEPARTAMENTO: DEINFO

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

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