Complexidade de Algoritmos

Documentos relacionados
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?

Análise e Projeto de Algoritmos

Complexidade de Algoritmos. Edson Prestes

Projeto e Análise de Algoritmos

Reduções de Problemas Difíceis

Complexidade de Algoritmos. Edson Prestes

Análise de Algoritmos. Slides de Paulo Feofiloff

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

PCC104 - Projeto e Análise de Algoritmos

Complexidade de Algoritmos

Análise e Síntese de Algoritmos

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

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

Problemas NP-Completos Bolas Mágicas

Algoritmos de aproximação

Teoria da Complexidade Computacional

Problemas NP-completos

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

DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios

Complexidade de Algoritmos

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

Lógica Computacional. Normalização e Formas Normais. Literais, Cláusulas e Monómios; Formas Normais NNF, CNF e DNF. Algoritmos de Conversão

Complexidade computacional

Introdução à classe de problemas NP- Completos

TEORIA DE COMPLEXIDADE

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 45

Teoria da Computação. Exercícios. 1 Máquinas de Registos Ilimitados 2013/2014

Melhores momentos AULA 24. Algoritmos p.906/953

SCC Modelagem Computacional em Grafos Profª Rosane Minghim 1º sem ª lista de exercícios

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

ANÁLISE DE ALGORITMOS (INF 1721)

Aula 10: Tratabilidade

Conceitos Básicos Isomorfismo de Grafos Subgrafos Passeios em Grafos Conexidade

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

Jogos de Anti-Coordenação e Colorações Estáveis em Grafos. Renato Lui Geh NUSP:

5COP096 TeoriadaComputação

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

Departamento de Engenharia de Produção UFPR 57

Lógica Computacional Aula 4

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

Complexidade de Algoritmos

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

Complexidade de Algoritmos

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

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Teoria dos Grafos Aula 2

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

Projeto Lógico Automatizado de Sistemas Digitais Seqüenciais 2 - Fundamentação Teórica

Capítulo 1 Números Reais

Problemas de Fluxo em Redes

Lógica Computacional

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

ANÁLISE DE ALGORITMOS (INF 1721)

Para muitos problemas computacionais, algoritmos razoáveis não existem!

INTRATABILIDADE e NP-COMPLETUDE

CIC 111 Análise e Projeto de Algoritmos II

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

Análise e Complexidade de Algoritmos

Algoritmos de aproximação - Problema do caixeiro viajante

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

GRAFOS Aula 03 Representações de Grafos Max Pereira

Técnicas Digitais para Computação

Uma forma de classificação

Coloração. Carolina Moraes e Lucas Glir

Por que não encontramos algoritmos polinomiais para muitos problemas?

Provadores de Teoremas baseados em contagem

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

PCC104 - Projeto e Análise de Algoritmos

Universidade Federal de Alfenas

GRAFOS Aula 04 Caminhos, Conexidade e Distância Max Pereira

Lógica Computacional. Normalização e Formas Normais. Literais, Cláusulas e Monómios; Formas Normais NNF, CNF e DNF. Algoritmos de Conversão

Pesquisa Operacional II. Professor João Soares de Mello

Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7.

Soluções das Questões de Matemática do Processo Seletivo de Admissão à Escola Preparatória de Cadetes do Exército EsPCEx

Teoria dos Grafos Aula 2

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

IME, UFF 7 de novembro de 2013

Estruturas de Dados 2

Quinta-feira, 11 de abril

Lógica para Computação Segundo Semestre, Aula 10: SAT. Prof. Ricardo Dutra da Silva. ( p (q ( q r))) ( p r) ( p q) ( p q r) p r.

Análise e Síntese de Algoritmos. Programação Linear CLRS, Cap. 29

Curso: Análise e Desenvolvimento de Sistemas. (Conceitos Práticos de Lógica de Programação)

ANÁLISE DE ALGORITMOS

SISTEMAS DIGITAIS MINIMIZAÇÃO DE FUNÇÕES BOOLEANAS

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Algoritmos em Grafos

Por que não encontramos algoritmos polinomiais para muitos problemas?

INF 1010 Estruturas de Dados Avançadas

Teoria dos Grafos Aula 26

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

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

LTDA APES PROF. RANILDO LOPES SITE:

O Problema da 3- Coloração de Grafos

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Backtracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada

TEORIA DE COMPLEXIDADE

Transcrição:

Compleidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br

Reduções de Problemas

X NP-Completo Um problema X é NP-Completo se:. O problema deve ser NP: X NP a Conseguir um algoritmo não determinista que resolva o problema em tempo polinomial b Conseguir um algoritmo determinista que verifica em tempo polinomial se uma resposta é verdadeira ou não certificado. Fazer a redução de um problema NP-Completo Y conhecido para o problema X: Y p X para todo Y NP

Forma Normal Conjuntiva Uma formula booleana está na Forma Normal Conjuntiva CNF se é epressa por um grupo cláusulas AND, cada uma das quais formada por OR entre literais. Uma fórmula booleana esta na k-cnf se cada cláusula possui eatamente k literais: Eemplo -CNF: Não é NP- Completo!

3-CNF-SAT NP-Completo Problema: verificar se uma fórmula booleana na 3-CNF é satisfazível. 3-CNF-SAT é NP-Completo? Passo : 3-CNF-SAT NP. Passo : SAT p 3-CNF-SAT. 3 3 3

3-CNF-SAT NP-Completo Passo : 3-CNF-SAT NP.. Para cada símbolo da entrada w: i. Simule a operação booleana sempre que possível, armazenando os resultados parciais ou os símbolos que ainda não puderam ser simplificados. Considerando uma fórmula booleana válida, retorne o último valor booleano restante como resposta V = aceite / F = rejeite 3 3 3 Neste caso qual seria a compleidade do algoritmo?

3-CNF-SAT NP-Completo Passo : SAT p 3-CNF-SAT. Dada uma fórmula booleana: 3 REDUÇÃO SAT. Construir uma árvore que represente à fórmula.. Introduzir uma variável i para a raiz e a saída de cada no interno.

3-CNF-SAT NP-Completo 3 3 3 3. Reescrevemos a fórmula original como conjunções entre a variável raiz e as cláusulas que descrevem as operações de cada nó. Introduz uma variável e uma cláusula para cada operador.

3-CNF-SAT NP-Completo 3 3 4. Para cada i construir uma tabela verdade, usando as entradas que tornam i verdade, construir uma forma normal disjuntiva DNF para cada i

3-CNF-SAT NP-Completo 3 3 V V V V V V F F V F V F V F F F F V V F F V F V F F V V F F F V φ = Cada cláusula de introduz no máimo 8 cláusulas em, pois cada cláusula de possui no máimo 3 variáveis.

3-CNF-SAT NP-Completo Converter a fórmula para a CNF usando as leis de De Morgan:

3-CNF-SAT NP-Completo O último passo faz com que cada cláusula tenha eatamente 3 literais, para isso usamos duas novas variáveis p e q. Para cada cláusula C i em :. Se C i tem 3 literais, simplesmente inclua C i.. Se C i tem literais,, inclua: C i l l l l p l l p 3. Se C i tem literal, l, inclua: l p q l p q l p q l p q Introduz no máimo 4 cláusulas por cláusula em.

3-CNF-SAT NP-Completo 3 3 q p q p q p q p 3 3 q p q p q p q p

3-CNF-SAT NP-Completo Problema: verificar se uma fórmula booleana na 3-CNF é satisfazível. 3-CNF-SAT é NP-Completo? SIM Passo : 3-CNF-SAT NP. Passo : SAT p 3-CNF-SAT. 3 3 3... q p q p q p q p

CLIQUE Um Clique em um grafo não direcionado G = V, A é um subconjunto de vértices V V, onde cada vértice está conectado por uma aresta. Ou seja, um subgrafo completo. Versão de otimização: Encontrar o maior Clique possível. Versão de decisão: Eiste um Clique de tamanho k? b c a f d e

CLIQUE NP-Completo CLIQUE é NP-Completo? Passo : CLIQUE NP. Passo : 3-CNF-SAT p CLIQUE. b c a f d e

CLIQUE NP-Completo Passo : Clique NP b c V = { a, b, c, d, e, f } A = { a,b, a,f, b,c, b,d, b,e, c,d, c,e, d,e } V = { b, c, d, e } a d e f Dado um grafo G = V, A, a solução certificado V e k, verificar se V é válido e se V k em tempo polinomial Se V < k então retorne Falso Para cada u V Para cada v V Se u v então verificar se u, v A Compleidade?

CLIQUE NP-Completo Passo : 3-CNF-SAT p CLIQUE. Dada uma instancia ϕ do problema 3-CNF-SAT converteremos esta para um grafo G que terá 3k vértices, onde k é o número de cláusulas de ϕ. u e v são vértices que correspondem a literais em diferentes cláusulas; Todos os vértices são ligados por arestas, com eceção: se u e v pertencem a mesma cláusula, então não há ligação; se u corresponde a um literal, e v corresponde ao literal ~, então não há ligação entre esses dois vértices;

CLIQUE NP-Completo Passo : 3-CNF-SAT p CLIQUE. ϕ = ~ ~ 3 ~ 3 3 ~ 3 ~ ~ 3 3 ϕ é satisfazível G possui um clique k

Cobertura de Vértices VERTEX-COVER Uma Cobertura de Vértices de um grafo não orientado G = V, A é um subconjunto V V tal que se u, v A, então u V ou v V. b c Todas as arestas devem ser observadas! a f d e

Cobertura de Vértices VERTEX-COVER Versão de otimização: Encontrar menor Cobertura de Vértices. Versão de decisão: Eiste uma cobertura de tamanho k? b c a f d e

VERTEX-COVER NP-Completo Passo : Cobertura de Vértices NP. V = { a, b, c, d, e, f } b c A = { a,c, a,d, b,f, c,f, f,e } a f V = { a, f } d e Dado um grafo G =V, A e a solução certificado V verificar se V é válido e se V k em tempo polinomial Se V > k então retorne Falso Para cada u, v A Verificar se u V ou v V Compleidade?

VERTEX-COVER NP-Completo Passo : CLIQUE p VERTEX-COVER b c b c a f a f d e d e CLIQUE Entrada G, k, onde G = V, A VERTEX-COVER Entrada G, V - k

Ciclo Hamiltoniano Um Ciclo Hamiltoniano em um grafo não orientado é um caminho que passa por cada vértice do grafo eatamente uma vez e retorna ao vértice inicial. Versão de decisão: um grafo G possui um ciclo Hamiltoniano? A B C D E

Ciclo Hamiltoniano NP-Completo Passo : Ciclo Hamiltoniano NP V = { a, b, c, d, e } A = { a,b, a,c, a,d, b,e, c,e, d,e } V = { a, b, e, d, c } A D C B E Dado um grafo G =V, A e a solução certificado V verificar se V é um ciclo Hamiltoniano em tempo polinomial Para cada v V: viz[v] = não marcado Para cada v V : Se viz[v ]==marcado: retorne falso Senão: viz[v ] = marcado Para cada viz: Se não está marcado: retorne falso retorne verdadeiro Compleidade?

Verte-Cover p Ciclo Hamiltoniano Passo : VERTEX-COVER p CICLO HAMILTONIANO Dado um grafo instância do problema de Cobertura de vértices G = V, E, devemos: - criar k vértices seletores, onde k é o número de vértices que pertencem a solução da cobertura; - criar E dispositivos, totalizando E * novos vértices e E * 4 arestas;

Ciclo Hamiltoniano NP-Completo Passo : VERTEX-COVER p CICLO HAMILTONIANO - criar uma lista com as adjacências de cada nó para formar um caminho entre todas as coberturas de um vértices: u: u, u,... u grauu v: v, v,... v grauv - adicionar arestas para unir pares de dispositivos: { [u,u i,6],[u,u i+,],... } - criar arestas para unir o primeiro [u, u, ] e o último vértice [u, u grauu, 6] de cada um desses caminhos a cada vértice seletor. {sj, [u, u, ] : u V e j k} {sj, [u, u grauu, 6] : u V e j k}

Ciclo Hamiltoniano NP-Completo Passo : VERTEX-COVER p CICLO HAMILTONIANO s W w W w * W wz s W W w * s O caminho 3 entre dispositivos * só ocorre em arestas compartilhadas por vértices que fazem parte da solução da cobertura de vértices

Ciclo Hamiltoniano NP-Completo Passo : VERTEX-COVER p CICLO HAMILTONIANO Importante: note que o novo grafo G = V, E V = E + k V E + V Instância cresceu apenas em tamanho polinomial E = 4 E + E - V + k V E = 6 E + k V E 6 E + V V

Caieiro Viajante Um vendedor deseja visitar n cidades e retornar a cidade de origem. Dado um grafo não orientado completo com n vértices, onde eiste um custo ci, j associado a cada aresta para viajar da cidade i a cidade j. Otimização: Qual é o menor caminho para o vendedor? Decisão: Eiste um caminho para o vendedor com custo máimo igual a k? E 9 0 7 A 5 4 6 C D 3 4 B

Caieiro Viajante NP-Completo Passo : Caieiro Viajante NP Dado um grafo G =V, A, a solução certificado V e o custo máimo k, verificar se V é um caminho válido do Caieiro com custo menor ou igual a k em tempo polinomial Para cada v V: viz[v] = não marcado custo = 0, n = V Compleidade? Se V [0] V [n-]: retorne falso Para i=0 até n-: Se viz[ V [i] ]==marcado: retorne falso Senão: viz[ V [i] ] = marcado custo = custo + G[ V [i] ][ V [i+] ].custo Se custo > k: retorne falso Para i=0 até n-: Se viz[ i ] == não marcado: retorne falso retorne verdadeiro

Caieiro Viajante NP-Completo Passo : CICLO HAMILTON p CAIXEIRO A G G, 0 B A 0 B 0 D C E p Redução em tempo polinomial 0 D 0 C 0 E 0 para cada vértice i para cada vértice j se i, j H então ci, j 0 senão ci, j

SUBSET-SUM Dado um conjunto finito de inteiros positivos S e um inteiro t > 0, determinar se eiste um subconjunto S S onde o somatório dos elementos de S é igual a t. n i s t i Eemplo: S = {,, 7, 4, 49, 98, 343, 686,.409,.793, 6.808, 7.06, 7.705, 7.993 } t = 38.457

SUBSET-SUM Eemplo: S = {,, 7, 4, 49, 98, 343, 686,.409,.793, 6.808, 7.06, 7.705, 7.993 } t = 38.457 S = {,, 7, 98, 343, 686,.409, 7.06, 7.705 }

SUBSET-SUM NP-Completo Passo : Subset-Sum NP Dado um conjunto de números inteiros S, o valor t objetivo e a solução certificado S, verificar se S é uma solução do problema em tempo polinomial. soma = 0 Para cada s S : Se s S: retorne falso soma = soma + s Se soma!= t: retorne falso Senão: retorne verdadeiro Compleidade?

SUBSET-SUM NP-Completo Passo : 3-CNF-SAT p SUBSET-SUM Dada uma fórmula ϕ instância de 3-CNF-SAT, devemos: Criar dois números para cada variável i em ϕ: v i e v i Criar dois números para cada cláusula C j em ϕ: s j e s j Cada número criado terá n + k dígitos, onde n é o número de variáveis e k é o número de cláusulas. O valor t terá um valor para cada dígito identificado por variável e 4 em cada dígito identificado por uma cláusula

SUBSET-SUM NP-Completo Passo : 3-CNF-SAT p SUBSET-SUM Para cada variável v i e v i colocamos o valor no dígito identificado por i e 0 nos outros dígitos; Se o literal i aparece na cláusula C j, então o dígito identificado por C j em v i contém valor ; Se o literal ~ i aparece na cláusula C j, então o dígito identificado por C j em v i contém valor 0; Para cada s j e s j colocamos valor 0 em todos os dígitos, com duas eceções: em s j colocamos no dígito C j em s j colocamos no dígito C j

SUBSET-SUM NP-Completo ~ ~ 3 ~ 3 S = {,, 0, 0, 00,,.000,.0, 0.00,0.00 } t = 44 S = { 000, 0,, 0, } { v,v,v 3,s,s } X = V, X = V, X 3 = F 3 C C v 0 0 0 v' 0 0 0 v 0 0 v' 0 0 0 0 v 3 0 0 0 0 v' 3 0 0 s 0 0 0 0 s' 0 0 0 0 s 0 0 0 0 s' 0 0 0 0 t 4 4

SUBSET-SUM NP-Completo Note que a maior soma de cada coluna dígito é no máimo 6. Assim, para esta conversão devemos usar uma base 7. A redução de 3-CNF-SAT para SUBSET-SUM acontece em tempo polinomial.

Resolvendo SUBSET-SUM É possível resolver o problema do SUBSET-SUM usando programação dinâmica com compleidade de tempo e espaço Ont, onde n é o número de elementos no conjunto e t o valor do somatório que se deseja alcançar!! Isso significa então que P = NP? e só agora você me fala isso?!

Resolvendo SUBSET-SUM É possível resolver o problema do SUBSET-SUM usando programação dinâmica com compleidade de tempo e espaço Ont, onde n é o número de elementos no conjunto e t o valor do somatório que se deseja alcançar!! Isso significa então que P = NP? e só agora você me fala isso?! R: Não. Eiste um detalhe importante que não está sendo considerado

Programação Dinâmica Subset-Sum Dado um conjunto de inteiros positivos, representados como um arranjo S[..n], e um inteiro t, eiste algum subconjunto de S tal que a soma de seus elementos seja t. SubsetS i, t Verdade Falsidade SubsetS i, t set 0 set 0 i SubsetS i, t n [ i] Eemplo: = {, 3, 5} e t = 8.

Programação Dinâmica Subset-Sum SubsetSum [..n], t S[n +, 0] Verdade para j até t S[n +, j] Falso para i n até S[i, 0] Verdade para j até [i] S[i, j] S[i +, j] para j [i] até t S[i, j] S[i +, j] v S[i +, j [i]] retorne S[,t]

Programação Dinâmica Subset-Sum Eemplo: = {, 3, 5, 7} e t = 9. 0 3 4 5 6 7 8 9 V V F V V V V V V V V F F V F V F V V F 3 V F F F F V F V F F 4 V F F F F F F V F F 5 V F F F F F F F F F

Algoritmos que Eecutam em Tempo Pseudo-Polinomial Usando programação dinâmica podemos implementar um algoritmo pseudo-polinomial com compleidade Ont, onde n é o número de elementos no conjunto e t o valor do somatório que se deseja alcançar!! Como assim pseudo-polinomial? Se o valor de t é limitado por um polinômio eiste uma solução eficiente. Mas, se o valor de t for muito grande e.g. t = n, a solução deia de ser eficiente, se tornando eponencial ou pior. Números pequenos [64 bits] vs. BigInt [n bits]

Algoritmos que Eecutam em Tempo Pseudo-Polinomial A restrição de t pequeno pode ser bastante razoável na prática: Problemas onde é impossível a ocorrência de números muito grandes e.g. problemas de escalonamento; Problemas onde o tamanho do número possa ser restrito ao tamanho da palavra do processador. Note contudo que esse não é o caso da redução do 3-CNF-SAT ao SUBSET-SUM, onde o valor de t cresce eponencialmente em relação ao número de variáveis e cláusulas presentes na fórmula booleana.

Reduções Resumindo, quais reduções de problemas foram feitas: SAT 3-CNF-SAT SUBSET-SUM CLIQUE COBERTURA DE VÉRTICES CICLO HAMILTONIANO CAIXEIRO-VIAJANTE

Eercícios Reduzir a seguinte instância de SAT em uma instância 3-CNF-SAT: ϕ = ~ Reduzir a seguinte instância de VERTEX-COVER em uma instância de CLIQUE. Mostre uma solução equivalente para ambos os problemas:

Eercícios 3 Reduzir a seguinte instância do problema CLIQUE para uma instância do SUBSET-SUM CLIQUE => 3-CNF-SAT => SUBSET-SUM. Para a instância do 3-CNF-SAT, elabore uma solução válida resultado = verdade e outra não válida resultado = falsidade e as soluções correspondentes na instância do SUBSET-SUM.