Uma forma de classificação

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

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

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

Aula 10: Tratabilidade

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

Teoria da Complexidade Computacional

INTRATABILIDADE e NP-COMPLETUDE

5COP096 TeoriadaComputação

Teoria da Complexidade Computacional

Complexidade de Algoritmos. Edson Prestes

PCC104 - Projeto e Análise de Algoritmos

TEORIA DE COMPLEXIDADE

Complexidade de Algoritmos

Teoria da Computação. Computabilidade e complexidade computacional

Complexidade de Algoritmos. Edson Prestes

Noções da Teoria dos Grafos

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

Noções da Teoria dos Grafos. André Arbex Hallack

Máquinas de Turing 3

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ

Projeto e Análise de Algoritmos

Aula 1. Teoria da Computação III

Técnicas de Extensão de MT

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

Problemas Computáveis

Complexidade computacional

TEORIA DE COMPLEXIDADE

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

Complexidade e algoritmos para algumas

Noções da Teoria dos Grafos. André Arbex Hallack

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

Conceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem

Melhores momentos AULA 24. Algoritmos p.906/953

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

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

Introdução à classe de problemas NP- Completos

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Análise e Projeto de Algoritmos

Uma introdução à indecilibidade a forma máxima de complexidade!

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

Análise e Síntese de Algoritmos

x y Grafo Euleriano Figura 1

Tópicos de Matemática Finita Data: a Época Código: 2D. I II-1 II-2 II-3 II-4 III-1 III-2 III-3 III-4 IV-1 IV-2 IV-3 IV-4 Nota Final

Melhores momentos AULA PASSADA. Complexidade Computacional p. 205

Teoria da Computação. Computabilidade

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

Algoritmos de Aproximação Segundo Semestre de 2012

MAC5722 Complexidade Computacional

Análise e Projeto de Algoritmos

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

Problemas de Busca (a.k.a NP) - parte 2

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

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

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

O grau de saída d + (v) de um vértice v é o número de arcos que tem

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

Teoria dos Grafos. Edson Prestes

COMPLEXIDADE PARAMETRIZADA PARTE 1. Rafael Coelho.

Complexidade computacional

Teoria dos grafos. Caminho euleriano e Hamiltoniano. Prof. Jesuliana N. Ulysses

Percursos em um grafo

Linguagens Formais e Autômatos (LFA)

Uma introdução à complexidade parametrizada

Análise de Algoritmos. Slides de Paulo Feofiloff

Tópicos de Matemática Finita 2 a Chamada 5 de Julho de 2001

Tópicos de Matemática Finita Data: I II-1 II-2 II-3 II-4 III-1 III-2 III-3 III-4 IV-1 IV-2 IV-3 IV-4 Nota Final

Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios

Linguagem Universal. assim como a entrada ser processada por a. (b) A segunda fita de representa a fita de

Tópicos de Matemática Finita Data: a Chamada Correcção Código: 2D

Introdução à Teoria da Computação Exercícios

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

Percursos em um grafo

Algoritmos Combinatórios: Introdução

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 5 a Lista de Exercícios

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 11: Introdução aos Grafos

ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos Site:

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

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

76) 1.1 Sim 1.2 Não 1.3 Não

Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios

Preliminares. Profa. Sheila Morais de Almeida. agosto

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

Tópicos de Matemática Finita 2 a Chamada 5 de Julho de 2001

Análise de Algoritmos

Turing e Complexidade

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

Teoria e Algoritmos em Grafos

Teoria da Computação. Computabilidade e complexidade computacional

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

A resposta para este problema envolve a partição do conjunto de arestas de tal forma que arestas adjacentes não pertençam a um mesmo conjunto.

Grafos Eulerianos e o Problema do Carteiro Chinês

Máquinas de Turing 3

Análise de algoritmos. Parte I

Parte B Teoria dos Grafos

Teoria dos Grafos. Edson Prestes

ANÁLISE DE ALGORITMOS (INF 1721)

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

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

Transcrição:

Uma forma de classificação L. Não-RE ou f. nãocomputáveis LRE ou MT ou f. comput. L. Indecidíveis ou Procedimentos L. Recursivas ou Decidíveis ou Algoritmos

Outra forma de classificação Problemas Indecidíveis ou Não-computáveis (não admitem algoritmos) Problemas Intratáveis (não admitem algoritmos eficientes) Problemas Tratáveis (admitem algoritmos eficientes polinomiais)

Classes de Problemas P e NP Eficiência de Algoritmos Um algoritmo é eficiente precisamente quando sua complexidade for baixa. Um algoritmo é eficiente precisamente quando a sua complexidade for um polinômio nos tamanhos da entrada e saída. Este critério não é absoluto, mas na maioria dos casos é realmente aceitável.

Classes de Problemas P e NP Problemas Tratáveis e Intratáveis Considere a coleção de todos os algoritmos que resolvem um certo problema p. Se existir algum algoritmo de complexidade polinomial, então p é dito tratável; caso contrário, é dito intratável. A ideia é que um problema tratável sempre pode ser resolvido por um processo automático (computador, p.ex.) em tempo factível. Algoritmos não polinomiais podem levar séculos, mesmo para entradas de tamanho reduzido.

Problemas intratáveis Problemas tratáveis Não admitem algoritmos razoáveis Admitem algoritmos razoáveis (tempo polinomial)

Classes de Problemas P e NP Verificando a Tratabilidade Um problema é tratável se for possível exibir um algoritmo de complexidade polinomial que o resolva.

Verificando a Intratabilidade Classes de Problemas P e NP Por outro lado, para verificar se um problema é intratável, há a necessidade de se provar que todo possível algoritmo que o resolva possui complexidade maior que a polinomial. Há uma classe de problemas para os quais todos os algoritmos conhecidos são de complexidade exponencial (pior caso). Envolvem, em geral, tarefas de scheduling e matching. Em geral, atingem o pior caso para entradas razoavelmente pequenas. Por outro lado, não se conhecem provas, até o momento, de que seja impossível encontrar um algoritmo polinomial para esses problemas.

Classes de Problemas P e NP Exemplos de problemas para os quais NÃO se conhece solução polinomial: Problema do Caixeiro Viajante (matching) : qual é o caminho (ciclo) simples mais barato/curto entre 2 cidades? (Grafo correspondente possui um ciclo hamiltoniano contém todos os vértices do grafo, sem repetição - de peso mínimo?); Problema da Coloração de Grafos (scheduling): qual é o número mínimo de cores necessárias para colorir (as arestas de) um grafo, sem que 2 vértices adjacentes tenham a mesma cor? (Encontrar o número cromático de um grafo)

Classes de Problemas P e NP A Classe P - Easy to find Define-se a classe P de problemas como sendo aquela que compreende precisamente aqueles problemas que admitem algoritmo polinomial. (= classe de problemas que podem ser resolvidos por uma Máquina de Turing determinística em tempo polinomial ao tamanho da entrada pior caso) Problemas para os quais não se conhecem algoritmos polinomiais estão fora de P; podem estar em NP.

A Classe NP - Easy to check Dizemos que um problema p está em NP se: 1. Não se conhece nenhuma solução polinomial para p; 2. E se for possível decidir, em tempo polinomial, se uma candidata à solução de p é de fato solução; se tem a propriedade da solução. (em outras palavras, se o problema de decisão subjacente é polinomial, i.e. se existe uma MT que decide - algoritmo, sempre termina se uma cadeia pertence ou não à linguagem das soluções de p) Ou seja, não se consegue achar a solução em tempo polinomial, mas se consegue verificar uma candidata à solução, em tempo polinomial.

A Classe NP - Easy to check São polinomiais os problemas de decisão associados aos exemplos: Caixeiro Viajante: Problema de decisão: Dada uma sequência de vértices do grafo, ela é um ciclo hamiltoniano? Coloração de Grafos: Problema de decisão: dados G, e uma atribuição de cores para G, ela consiste no número cromático de G? Mas, encontrar a tal sequência de vértices ou a atribuição de cores não é (ou tem sido) possível em tempo polinomial, apenas em tempo exponencial. Dizemos então que os problemas acima estão em NP.

A Classe NP Easy to check Observa-se que: 1. Não se exige uma solução polinomial para os problemas de NP; somente que uma certificação possa ser verificada em tempo polinomial; 2. Todo problema que está em P também está em NP, pois, se é possível achar uma solução em tempo polinomial, então é possível verificá-la (por meio do algoritmo de geração) em tempo polinomial também. Logo, P NP. 3. Assim, os problemas que estão em NP e não estão em P são aqueles cuja certificação é polinomial, mas para os quais não se conhece solução polinomial.

A Classe NP Easy to check 4. Considere uma MT Não-determinística. Uma MTND funcionando em tempo polinomial tem a habilidade de pressupor um número exponencial de soluções possíveis para um problema e verificar cada uma, em tempo polinomial, em paralelo. Essa MT pode, então, resolver os problemas de NP. 5. NP NÃO significa Não-Polinomial ; significa: Classe de problemas que podem ser resolvidos por uma MT NÃO-Determinística, em tempo POLINOMIAL.

A Classe NP Easy to check Classes de Problemas P e NP Exemplo 1: Considere o problema do CAIXEIRO VIAJANTE (CV): a pergunta um grafo G possui um CICLO HAMILTONIANO?, necessária para resolver o problema, já torna o CV um problema de NP. Problema de Decisão subjacente: dad uma sequência de vértices de G, ela possui a propriedade de ser um ciclo hamiltoniano? (ou seja, ser um ciclo simples, contendo todos os vértices de G)

Para encontrar (find) um ciclo hamiltoniano no grafo G (n vértices): seria necessário exibir todos os ciclos de G e verificar se há um hamiltoniano entre eles. Para tanto, é preciso, para cada sequência possível de vértices: (i) Verificar se é um ciclo; Classes de Problemas P e NP (ii) Verificar se cada um desses ciclos é simples (sem vértices repetidos); (iii) Verificar se todo vértice de G está presente na sequência exibida. As operações (i), (ii) e (iii) são O(n) e devem ser realizadas para cada ciclo exibido;

No entanto, teríamos que enumerar todas as sequências de vértices do grafo, ou seja, O(n!), portanto, um algoritmo de natureza exponencial (até o momento, não se conhece outro processo que corresponda a um algoritmo polinomial). n! > 2 cn para qualquer constante c n! > n k n n > n! Classes de Problemas P e NP

Algoritmo de Certificação (check): exibe-se uma sequência de vértices C de G e atesta-se que ela é hamiltoniana - o que consiste em verificar: (i) se C é um ciclo, isto é, se vértices consecutivos na sequência são adjacentes no grafo e, além disso, o primeiro e o último coincidem; O(n) (ii) se C é um ciclo simples, ou seja, se não há vértice repetido em C, a menos do primeiro e último; O(n) (iii) se todo vértice de G participa de C. O(n) O algoritmo correspondente a esse processo é simples e pode ser implementado em tempo linear O(n). Logo, Caixeiro Viajante está em NP. Classes de Problemas P e NP

( No entanto, se, ao invés de um ciclo Hamiltoniano, quiséssemos um ciclo Euleriano passar por cada aresta do grafo uma única vez o algoritmo seria polinomial (na verdade, linear), já que bastaria verificar as seguintes condições para concluir que um grafo possui um ciclo Euleriano: O grafo é conexo (todo vértice é alcançável a partir de qualquer outro): há um algoritmo O(m); Todo vértice tem grau par (número par de arestas incidentes ao vértice): algoritmo trivial O(n). )

A Classe NP Easy to check Exemplo 2: Considere o problema da Coloração de um Grafo: qual é o número cromático de G? Problema de Decisão subjacente: dados G e um inteiro positivo k, existe uma coloração de G usando k<n cores? - Essa verificação é polinomial (confira!). Porém, encontrar o número cromático: Requer verificar, para cada atribuição possível de k cores a n vértices k n se ela obedece o requisito. Logo, exponencial. Para grafos particulares perfeitos, bipartidos, etc. há algoritmos polinomiais. Logo, esse problema está em NP. Classes de Problemas P e NP

Classes de Problemas P e NP A Classe NP: Definição Define-se a Classe NP como sendo aquela que compreende todos os problemas para os quais existe um algoritmo de certificação que é polinomial em relação ao tamanho da entrada.

Classes de Problemas P e NP Repare que: Considerando que toda MT determinística é uma MTND com no máximo uma opção de movimento, então P NP. Mas, P NP? Em caso afirmativo, então existem problemas na classe NP para os quais nunca se achará solução polinomial. Em caso negativo, então todo problema de NP admite necessariamente uma solução polinomial, mas está em NP pois ainda não se conhece tal solução. E, nesse caso, a exigência de uma certificação polinomial seria condição suficiente para garantir a existência de um algoritmo polinomial para solucioná-lo.

Classes de Problemas P e NP Até o momento, não se conhece a resposta a essa pergunta. Todas as evidências apontam na direção P NP. O principal argumento para essa conjectura é que a classe NP incorpora um conjunto enorme de problemas para os quais inúmeros pesquisadores têm procurado algoritmos polinomiais, porém sem sucesso. Esses problemas pertenceriam, então, a NP - P, o que conduz à conjectura P NP; Se não são polinomiais, então quão complexo pode ser um problema da classe NP? Ou seja, admitindo-se que P NP, seria possível ao menos resolver em tempo exponencial todo problema da classe NP? Resposta (pode ser provada): Sim. Se p NP, então uma resposta pode ser obtida em tempo exponencial.

Classes de Problemas P e NP Não necessariamente toda entrada de p NP requer tempo exponencial. Se p NP, então p = O(2 n ), ou seja, seu pior caso é exponencial. No entanto, pode acontecer de p = (n), ou seja, seu melhor caso ser linear ou polinomial de outra ordem. A questão sobre esses problemas, não é tanto o quanto demora chegar a uma solução, mas sim, SE podemos ou não resolvê-los mesmo para entradas pequenas, ainda que em computadores poderosíssimos. Simplesmente não sabemos se são tratáveis ou intratáveis, já que seu limite inferior está na classe dos tratáveis, e o superior, na categoria dos intratáveis.

Há problemas que não estão em P Relembrando: e nem em NP? Problemas de P correspondem a MTD polinomiais (fáceis de verificar e fáceis de achar); Problemas de NP correspondem a MTND polinomiais (fáceis de verificar). Há problemas que comprovadamente não são fáceis nem verificar, nem achar? Ou seja, correspondentes a MTND exponenciais? Sim, são os problemas exponenciais para os quais se comprovou que tanto achar quanto verificar só ocorrem em tempo exponencial.

Torres de Hanoi Objetivo: transferir n discos, de diferentes tamanhos, um por vez, de uma torre A a outra torre B, sem que um disco maior fique em cima de um menor. Usa-se uma torre auxiliar C. Solução Recursiva: mover (n, A, B, C) :- se n=1 transfere (A,B) senão {mover (n-1, A, C, B); transfere(a, B); mover (n-1, C, B, A)}

mover (n, A, B, C) (n-1, A, C) A->B (n-1,c,b) (n-2, A, B) A->C (n-2, B, C) (n-2, C, A) C->B (n-2, A, B) A->B (1,A,B) B->C (1,B,C)

Quantos movimentos são necessários? mover (n, A, B, C) (n-1, A, C) A->B (n-1,c,b) 1=2 0 (n-2, A, B) A->C (n-2, B, C) (n-2, C, A) C->B (n-2, A, B) 2 = 2 1 A->B B->C i=n-1 2 i = 2 n -1 i=0 4 = 2 2 2 n-1 (1,A,B) (1,B,C)

Problemas comprovadamente exponenciais São problemas cujas MT têm custo exponencial para verificar candidatos à solução. Podem ser MTD ou MTND. O custo de cada caminho (# transições do estado inicial ao final) é exponencial em relação ao tamanho da entrada. Exs. Torres de Hanoi, Xadrez.

Complexidade de Algoritmos Ordenação; Busca; etc. Torre de Hanoi; Xadrez NP P NPcompleto Exponencial Caixeiro Viajante Número Cromático