Algoritmos Aproximados
Contedo do Captulo
Introduo
Problemas intratveis ou difceis so comuns na natureza e nas reas do
conhecimento.
Problemas fceis: resolvidos por algoritmos polinomiais.
Problemas difceis: somente possuem algoritmos exponenciais para
resolv-los.
A complexidade de tempo da maioria dos problemas polinomial ou
exponencial.
Polinomial: funo de complexidade O(p(n)), onde p(n) um polinmio.
Ex.: algoritmos com pesquisa binria (O(log n)), pesquisa sequencial
(O(n)), ordenao por insero (O(n2 )), e multiplicao de matrizes
(O(n3 )).
Exponencial: funo de complexidade O(cn ), c > 1.
Ex.: problema do caixeiro viajante (PCV) (O(n!)).
Mesmo problemas de tamanho pequeno a moderado no podem ser
resolvidos por algoritmos no-polinomiais.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 3
Problemas N P-Completo
Caminho em um Grafo
Considere um grafo com peso nas arestas, dois vrtices i, j e um
inteiro k > 0.
5 12 j
2 7 9 10 13
11 5 1
3 2 8 3
i 7 3
Colorao de um Grafo
Em um grafo G = (V, A), mapear C : V S, sendo S um conjunto
finito de cores tal que se vw A ento c(v) 6= c(w) (vrtices adjacentes
possuem cores distintas).
O nmero cromtico X(G) de G o menor nmero de cores
necessrio para colorir G, isto , o menor k para o qual existe uma
colorao C para G e |C(V )| = k.
O problema produzir uma colorao tima, que a que usa apenas
X(G) cores.
Formulao do tipo sim/no: dados G e um inteiro positivo k, existe
uma colorao de G usando k cores?
Fcil: k = 2.
Difcil: k > 2.
Aplicao: modelar problemas de agrupamento (clustering) e de
horrio (scheduling).
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 7
Ciclo de Hamilton
Ciclo de Hamilton: ciclo simples (passa por todos os vrtices uma
nica vez).
Caminho de Hamilton: caminho simples (passa por todos os
vrtices uma nica vez).
Exemplo de ciclo de Hamilton: 0 1 4 2 3 0. Exemplo de caminho de
Hamilton: 0 1 4 2 3.
0 1 Existe um ciclo de Hamilton no grafo G?
4
Fcil: Grafos com grau mximo = 2 (vr-
tices com no mximo duas arestas inci-
3 2 dentes).
Difcil: Grafos com grau > 2.
um caso especial do PCV. Pares de vrtices com uma aresta entre
eles tem distncia 1 e pares de vrtices sem aresta entre eles tm
distncia infinita.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 11
Cobertura de Arestas
Uma cobertura de arestas de um grafo G = (V, A) um subconjunto
A A de k arestas tal que todo v V parte de pelo menos uma
aresta de A .
O conjunto resposta para k = 4 A = {(0, 3), (2, 3), (4, 6), (1, 5)}.
0 1 Uma cobertura de vrtices um sub-
conjunto V V tal que se (u, v) A
3 4 5 ento u V ou v V , isto , cada
aresta do grafo incidente em um dos
vrtices de V .
2 6
Algoritmos No-Deterministas
Funo escolhe(C)
Mquina No-Determinista
Pesquisa No-Determinista
void PesquisaND(A, 1 , n)
{ j escolhe(A, 1 , n)
i f (A[ j ] == x ) sucesso ; else insucesso ;
}
Ordenao No-Determinista
Ordenar um conjunto A[1 : n] contendo n inteiros positivos, n 1.
Problema da Satisfabilidade
Considere um conjunto de variveis booleanas x1 , x2 , , xn , que
podem assumir valores lgicos verdadeiro ou falso.
A negao de xi representada por xi .
Expresso booleana: variveis booleanas e operaes ou () e e ().
(tambm chamadas respectivamente de adio e multiplicao).
Uma expresso booleana E contendo um produto de adies de
variveis booleanas dita estar na forma normal conjuntiva.
Dada E na forma normal conjuntiva, com variveis xi , 1 i n, existe
uma atribuio de valores verdadeiro ou falso s variveis que torne E
verdadeira (satisfaa)?
E1 = (x1 x2 ) (x1 x3 x2 ) (x3 ) satisfatvel (x1 = F , x2 = V ,
x3 = V ).
A expresso E2 = x1 x1 no satisfatvel.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 19
Problema da Satisfabilidade
void AvalND(E, n) ;
{ for ( i = 1; i <= n ; i ++)
{ xi escolhe ( true , false ) ;
i f ( E(x1 , x2 , , xn ) == true ) sucesso ; else insucesso ;
}
}
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 20
Problema da Satisfabilidade
N P P ou N P = P? - Conseqncias
Transformao Polinomial
Sejam 1 e 2 dois problemas sim/no.
Suponha que um algoritmo A2 resolva 2 .
Se for possvel transformar 1 em 2 e a soluo de 2 em soluo de
1 , ento A2 pode ser utilizado para resolver 1 .
Se pudermos realizar as transformaes nos dois sentidos em tempo
polinomial, ento 1 polinomialmente transformvel em 2 .
Dados Dados Soluo Soluo
de 1 de 2 para 2 para 1
Transformao Algoritmo A 2
Transformao
Polinomial Polinomial
0 1
3 4 5
2 6
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 26
Clique de um grafo
0 1
3 4 5
2 6
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 28
Transformao Polinomial
Transformao Polinomial
A relao transitiva (1 2 e 2 3 1 3 ).
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 31
Teorema de Cook
Existe algum problema em N P tal que se ele for mostrado estar em P,
implicaria P = N P?
Teorema de Cook: Satisfabilidade (SAT) est em P se e somente se
P = N P.
Ou seja, se existisse um algoritmo polinomial determinista para
satisfabilidade, ento todos os problemas em N P poderiam ser resolvidos
em tempo polinomial.
A prova considera os dois sentidos:
1. SAT est em N P (basta apresentar um algoritmo no-determinista que
execute em tempo polinomial). Logo, se P = N P, ento SAT est em P.
2. Se SAT est em P, ento P = N P. A prova descreve como obter de
qualquer algoritmo polinomial no determinista de deciso A, com entrada
E, uma frmula Q(A, E) de modo que Q satisfatvel se e somente se A
termina com sucesso para E. O comprimento e tempo para construir Q
O(p3 (n) log(n)), onde n o tamanho de E e p(n) a complexidade de A.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 35
2 2
1 1
1 2 1 2
1 1
1 1
1 5 1 5 2
1 1
1 1
4 3 4 3
1 1
Classe N P-Intermediria
NP
NPC
NPI
P
Membros Potenciais de N PI
Problemas Exponenciais
desejvel resolver instncias grandes de problemas de otimizao
em tempo razovel.
Os melhores algoritmos para problemas N P-completo tm
comportamento de pior caso exponencial no tamanho da entrada.
Para um algoritmo que execute em tempo proporcional a 2N , no
garantido obter resposta para todos os problemas de tamanho
N 100.
Independente da velocidade do computador, ningum poderia esperar
por um algoritmo que leva 2100 passos para terminar sua tarefa.
Um supercomputador poderia resolver um problema de tamanho
N = 50 em 1 hora, ou N = 51 em 2 horas, ou N = 59 em um ano.
Nem um computador paralelo com um milho de processadores, (cada
um sendo um milho de vezes mais rpido que o mais rpido
existente) suficiente para N = 100.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2 43
Para o grafo
0
2 6
1
1 3 2 1
5 1 2 6
2 4
4
2 1
4
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 48
1 5 6
2 3 4 3 4 4
4 4 5 2 3 5 6 1 4 1 2 3 6 1 2 3 5
3 5 6 2 5 6 4 5 3 2 4 1 2 6 2 3 1 1 2 3 1 1 5 3
5 3 2 6 4 2 6 2 1 3 2 5 3 2 1
6 5 2
0 0
5 6
3 4 4
4 2 3 6 2 3 5
2 6 1 1 5 3
1 3 3
0
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 51
0 1 2 3 4 5
0 3 10 11 7 25
5 1
1 8 12 9 26
2 9 4 20
4 2 3 5 15
3 4 18
Pode mesmo ser arbitrariamente ruim, uma vez que a aresta final pode
ser muito longa.
Passos do algoritmo:
Suponha uma AGM que tenha cidades do PCV como vrtices.
Dobre suas arestas para obter um grafo Euleriano.
Encontre um caminho Euleriano para esse grafo.
Converta-o em um caminho do caixeiro viajante usando
curto-circuitos.
(c) (d)
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 74
timo PVC
1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1
AGM 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1
timo 1
1 1 1 1