Вы находитесь на странице: 1из 78

Problemas N P-Completo e

Algoritmos Aproximados

ltima alterao: 28 de Setembro de 2010


Transparncias elaboradas por Charles Ornelas Almeida, Israel Guerra e Nivio Ziviani
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados 1

Contedo do Captulo

9.1 Problemas N P-Completo


9.1.1 Algoritmos No Deterministas
9.1.2 As Classes N P-Completo e N P-Difcil

9.2 Heursticas e Algoritmos Aproximados


9.2.1 Algoritmos Exponenciais Usando Tentativa e Erro
9.2.2 Heursticas para Problemas N P-Completo
9.2.3 Algoritmos Aproximados para Problemas N P-Completo
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados 2

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

A teoria de complexidade a ser apresentada no mostra como obter


algoritmos polinomiais para problemas que demandam algoritmos
exponenciais, nem afirma que no existem.

possvel mostrar que os problemas para os quais no h algoritmo


polinomial conhecido so computacionalmente relacionados.

Formam a classe conhecida como N P.

Propriedade: um problema da classe N P poder ser resolvido em


tempo polinomial se e somente se todos os outros problemas em N P
tambm puderem.

Este fato um indcio forte de que dificilmente algum ser capaz de


encontrar um algoritmo eficiente para um problema da classe N P.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 4

Classe N P - Problemas Sim/No


Para o estudo terico da complexidade de algoritmos considera-se
problemas cujo resultado da computao seja sim ou no.
Verso do Problema do Caixeiro Viajante (PCV) cujo resultado do
tipo sim/no:
Dados: uma constante k, um conjunto de cidades
C = {c1 , c2 , , cn } e uma distncia d(ci , cj ) para cada par de
cidades ci , cj C.
Questo: Existe um roteiro para todas as cidades em C cujo
comprimento total seja menor ou igual a k?
Caracterstica da classe N P: problemas sim/no para os quais uma
dada soluo pode ser verificada facilmente.
A soluo pode ser muito difcil ou impossvel de ser obtida, mas uma
vez conhecida ela pode ser verificada em tempo polinomial.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 5

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

Fcil: Existe um caminho de i at j com peso k?.


H um algoritmo eficiente com complexidade de tempo O(A log V ),
sendo A o nmero de arestas e V o nmero de vrtices (algoritmo
de Dijkstra).
Difcil: Existe um caminho de i at j com peso k?
No existe algoritmo eficiente. equivalente ao PCV em termos de
complexidade.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 6

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

Colorao de um Grafo - Otimizao de Compiladores

Escalonar o uso de um nmero finito de registradores (idealmente com


o nmero mnimo).

No trecho de programa a ser otimizado, cada varivel tem intervalos


de tempo em que seu valor tem de permanecer inalterado, como
depois de inicializada e antes do uso final.

Variveis com interseo nos tempos de vida til no podem ocupar o


mesmo registrador.

Modelagem por grafo: vrtices representam variveis e cada aresta


liga duas variveis que possuem interseo nos tempos de vida.

Colorao dos vrtices: atibui cada varivel a um agrupamento (ou


classe). Duas variveis com a mesma cor no colidem, podendo
assim ser atribudas ao mesmo registrador.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 8

Colorao de um Grafo - Otimizao de Compiladores

Evidentemente, no existe conflito se cada vrtice for colorido com


uma cor distinta.

O objetivo porm encontrar uma colorao usando o mnimo de


cores (computadores tm um nmero limitado de registradores).

Nmero cromtico: menor nmero de cores suficientes para colorir


um grafo.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 9

Colorao de um Grafo - Problema de Horrio

Suponha que os exames finais de um curso tenham de ser realizados


em uma nica semana.

Disciplinas com alunos de cursos diferentes devem ter seus exames


marcados em horrios diferentes.

Dadas uma lista de todos os cursos e outra lista de todas as


disciplinas cujos exames no podem ser marcados no mesmo horrio,
o problema em questo pode ser modelado como um problema de
colorao de grafos.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1 10

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

Na figura, o conjunto resposta V = {3, 4, 5}, para k = 3.


Dados um grafo e um inteiro k > 0
Fcil: h uma cobertura de arestas k?.
Difcil: h uma cobertura de vrtices k?
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 12

Algoritmos No-Deterministas

Algoritmos deterministas: o resultado de cada operao definido


de forma nica.
Em um arcabouo terico, possvel remover essa restrio.
Apesar de parecer irreal, este um conceito importante e geralmente
utilizado para definir a classe N P.
Neste caso, os algoritmos podem conter operaes cujo resultado no
definido de forma nica.
Algorimo no-determinista: capaz de escolher uma dentre as vrias
alternativas possveis a cada passo.
Algoritmos no-deterministas contm operaes cujo resultado no
unicamente definido, ainda que limitado a um conjunto especificado de
possibilidades.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 13

Funo escolhe(C)

Algoritmos no-deterministas utilizam uma funo escolhe(C), que


escolhe um dos elementos do conjunto C de forma arbitrria.
O comando de atribuio X escolhe (1:n) pode resultar na
atribuio a X de qualquer dos inteiros no intervalo [1, n].
A complexidade de tempo para cada chamada da funo escolhe
O(1).
Neste caso, no existe nenhuma regra especificando como a escolha
realizada.
Se um conjunto de possibilidades levam a uma resposta, este conjunto
escolhido sempre e o algoritmo terminar com sucesso.
Por outro lado, um algoritmo no-determinista termina sem sucesso se
e somente se no h um conjunto de escolhas que indica sucesso.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 14

Comandos sucesso e insucesso

Algoritmos no-deterministas utilizam tambm dois comandos, a


saber:
insucesso: indica trmino sem sucesso.
sucesso: indica trmino com sucesso.

Os comandos insucesso e sucesso so usados para definir uma


execuo do algoritmo.

Esses comandos so equivalentes a um comando de parada de um


algoritmo determinista.

Os comandos insucesso e sucesso tambm tm complexidade de


tempo O(1).
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 15

Mquina No-Determinista

Uma mquina capaz de executar a funo escolhe admite a


capacidade de computao no-determinista.

Uma mquina no-determinista capaz de produzir cpias de si


mesma quando diante de duas ou mais alternativas, e continuar a
computao independentemente para cada alternativa.

A mquina no-determinista que acabamos de definir no existe na


prtica, mas ainda assim fornece fortes evidncias de que certos
problemas no podem ser resolvidos por algoritmos deterministas em
tempo polinomial, conforme mostrado na definio da classe
N P-completo frente.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 16

Pesquisa No-Determinista

Pesquisar o elemento x em um conjunto de elementos A[1 : n], n 1.

void PesquisaND(A, 1 , n)
{ j escolhe(A, 1 , n)
i f (A[ j ] == x ) sucesso ; else insucesso ;
}

Determina um ndice j tal que A[j] = x para um trmino com sucesso


ou ento insucesso quando x no est presente em A.

O algoritmo tem complexidade no-determinista O(1).

Para um algoritmo determinista a complexidade (n).


Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 17

Ordenao No-Determinista
Ordenar um conjunto A[1 : n] contendo n inteiros positivos, n 1.

void OrdenaND(A, 1 , n) ; Um vetor auxiliar B[1:n]


{ for ( i = 1; i <= n ; i ++) B[ i ] : = 0 ; utilizado. Ao final, B contm
for ( i = 1; i <= n ; i ++) o conjunto em ordem cres-
{ j escolhe(A, 1 , n) ; cente.
i f (B[ j ] == 0) B[ j ] : = A[ i ] ;
A posio correta em B de
else insucesso ;
cada inteiro de A obtida de
}
forma no-determinista pela
}
funo escolhe.

Em seguida, o comando de deciso verifica se a posio B[j] ainda


no foi utilizada.
A complexidade O(n). (Para um algoritmo determinista a
complexidade (n log n))
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.1 18

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

O algoritmo AvalND(E,n) verifica se uma expresso E na forma normal


conjuntiva, com variveis xi , 1 i n, satisfatvel.

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

O algoritmo obtm uma das 2n atribuies possveis de forma


no-determinista em O(n).

Melhor algoritmo determinista: O(2n ).

Aplicao: definio de circuitos eltricos combinatrios que


produzam valores lgicos como sada e sejam constitudos de portas
lgicas e, ou e no.

Neste caso, o mapeamento direto, pois o circuito pode ser descrito


por uma expresso lgica na forma normal conjuntiva.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 21

Caracterizao das Classes P e N P

P: conjunto de todos os problemas que podem ser resolvidos por


algoritmos deterministas em tempo polinomial.

N P: conjunto de todos os problemas que podem ser resolvidos por


algoritmos no-deterministas em tempo polinomial.

Para mostrar que um determinado problema est em N P, basta


apresentar um algoritmo no-determinista que execute em tempo
polinomial para resolver o problema.

Outra maneira encontrar um algoritmo determinista polinomial para


verificar que uma dada soluo vlida.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 22

Existe Diferena entre P e N P?


P N P, pois algoritmos deterministas so um caso especial dos
no-deterministas.
A questo se P = N P ou P =
6 N P.
Esse o problema no resolvido mais famoso que existe na rea de cincia
da computao.
Se existem algoritmos polinomiais deterministas para todos os problemas em
N P, ento P = N P.
Por outro lado, a prova de que P =
6 N P parece exigir tcnicas ainda
desconhecidas.
Descrio tentativa do mundo N P, em que a classe P est contida na classe
N P.
Acredita-se que N P P, pois para muitos pro-
NP
blemas em N P, no existem algoritmos polino-
P miais conhecidos, nem um limite inferior no-
polinomial provado.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 23

N P P ou N P = P? - Conseqncias

Muitos problemas prticos em N P podem ou no pertencer a P (no


conhecemos nenhum algoritmo determinista eficiente para eles).

Se conseguirmos provar que um problema no pertence a P, ento


no precisamos procurar por uma soluo eficiente para ele.

Como no existe tal prova, sempre h esperana de que algum


descubra um algoritmo eficiente.

Quase ningum acredita que N P = P.

Existe um esforo considervel para provar o contrrio, mas a questo


continua em aberto!
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 24

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

Esse conceito importante para definir a classe N P-completo.


Para mostrar um exemplo de transformao polinomial, definiremos
clique de um grafo e conjunto independente de vrtices de um grafo.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 25

Conjunto Independente de Vrtices de um Grafo

O conjunto independente de vrtices de um grafo G = (V, A)


constitudo do subconjunto V V , tal que v, w V (v, w)
/ A.

Todo par de vrtices de V no adjacente (V um subgrafo


totalmente desconectado).

Exemplo de cardinalidade 4: V = {0, 2, 1, 6}.

0 1

3 4 5

2 6
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 26

Conjunto Independente de Vrtices - Aplicao

Em problemas de disperso necessrio encontrar grandes conjuntos


independentes de vrtices. Procura-se um conjunto de pontos
mutuamente separados.
Exemplo: identificar localizaes para instalao de franquias.
Duas localizaes no podem estar perto o suficiente para
competirem entre si.
Soluo: construir um grafo em que possveis localizaes so
representadas por vrtices, e arestas so criadas entre duas
localizaes que esto prximas o suficiente para interferir.
O maior conjunto independente fornece o maior nmero de franquias
que podem ser concedidas sem prejudicar as vendas.
Em geral, cunjuntos independentes evitam conflitos entre elementos.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 27

Clique de um grafo

Clique de um grafo G = (V, A) constitudo do subconjunto V V ,


tal que v, w V (v, w) A.

Todo par de vrtices de V adjacente (V um subgrafo completo).

Exemplo de cardinalidade 3: V = {3, 1, 4}.

0 1

3 4 5

2 6
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 28

Clique de um grafo - Aplicao


O problema de identificar agrupamentos de objetos relacionados
freqentemente se reduz a encontrar grandes cliques em grafos.
Exemplo: empresa de fabricao de peas por meio de injeo
plstica que fornece para diversas outras empresas montadoras.
Para reduzir o custo relativo ao tempo de preparao das mquinas
injetoras, pode-se aumentar o tamanho dos lotes produzidos para
cada pea encomendada.
preciso identificar os clientes que adquirem os mesmos produtos,
para negociar prazos de entrega comuns e assim aumentar o tamanho
dos lotes produzidos.
Soluo: construir um grafo com cada vrtice representando um
cliente e ligar com uma aresta os que adquirem os mesmos produtos.
Um clique no grafo representa o conjunto de clientes que adquirem os
mesmos produtos.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 29

Transformao Polinomial

Considere 1 o problema clique e 2 o problema conjunto


independente de vrtices.

A instncia I de clique consiste de um grafo G = (V, A) e um inteiro


k > 0.

A instncia f (I) de conjunto independente pode ser obtida


considerando-se o grafo complementar G de G e o mesmo inteiro k.

f (I) uma transformao polinomial:


1. G pode ser obtido a partir de G em tempo polinomial.
2. G possui clique de tamanho k se e somente se G possui
conjunto independente de vrtices de tamanho k.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 30

Transformao Polinomial

Se existe um algoritmo que resolve o conjunto independente em


tempo polinomial, ele pode ser utilizado para resolver clique tambm
em tempo polinomial.

Diz-se que clique conjunto independente.

Denota-se 1 2 para indicar que 1 polinomialmente


transformvel em 2 .

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

Problemas N P-Completo e N P-Difcil

Dois problemas 1 e 2 so polinomialmente equivalentes se e


somente se 1 2 e 2 1 .

Exemplo: problema da satisfabilidade. Se SAT 1 e 1 2 ,


ento SAT 2 .

Um problema N P-difcil se e somente se SAT


(satisfabilidade redutvel a ).

Um problema de deciso denominado N P-completo quando:


1. N P ;.
2. Todo problema de deciso N P-completo satisfaz .
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 32

Problemas N P-Completo e N P-Difcil

Um problema de deciso que seja N P-difcil pode ser mostrado ser


N P-completo exibindo um algoritmo no-determinista polinomial para
.

Apenas problemas de deciso (sim/no) podem ser N P-completo.

Problemas de otimizao podem ser N P-difcil, mas geralmente, se


1 um problema de deciso e 2 um problema de otimizao, bem
possvel que 1 2 .

A dificuldade de um problema N P-difcil no menor do que a


dificuldade de um problema N P-completo.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 33

Exemplo - Problema da Parada

um exemplo de problema N P-difcil que no N P-completo.


Consiste em determinar, para um algoritmo determinista qualquer A
com entrada de dados E, se o algoritmo A termina (ou entra em um
loop infinito).
um problema indecidvel. No h algoritmo de qualquer
complexidade para resolv-lo.
Mostrando que SAT problema da parada:
Considere o algoritmo A cuja entrada uma expresso booleana
na forma normal conjuntiva com n variveis.
Basta tentar 2n possibilidades e verificar se E satisfatvel.
Se for, A pra; seno, entra em loop.
Logo, o problema da parada N P-difcil, mas no N P-completo.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 34

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

Prova do Teorema de Cook


A prova, bastante longa, mostra como construir Q a partir de A e E.
A expresso booleana Q longa, mas pode ser construda em tempo
polinomial no tamanho de E.
Prova usa definio matemtica da Mquina de Turing no-determinista
(MTND), capaz de resolver qualquer problema em N P.
incluindo uma descrio da mquina e de como instrues so
executadas em termos de frmulas booleanas.
Estabelece uma correspondncia entre todo problema em N P (expresso por
um programa na MTnd) e alguma instncia de SAT.
Uma instncia de SAT corresponde traduo do programa em uma frmula
booleana.
A soluo de SAT corresponde simulao da mquina executando o
programa em cima da frmula obtida, o que produz uma soluo para uma
instncia do problema inicial dado.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 36

Prova de que um Problema N P-Completo

So necessrios os seguintes passos:


1. Mostre que o problema est em N P.
2. Mostre que um problema N P-completo conhecido pode ser
polinomialmente transformado para ele.

possvel porque Cook apresentou uma prova direta de que SAT


N P-completo, alm do fato de a reduo polinomial ser transitiva
(SAT 1 & 1 2
SAT 2 ).

Para ilustrar como um problema pode ser provado ser N P-completo,


basta considerar um problema j provado ser N P-completo e
apresentar uma reduo polinomial desse problema para .
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 37

PCV N P-completo - Parte 1 da Prova

Mostrar que o Problema do Caixeiro Viajante (PCV) est em N P.

Prova a partir do problema ciclo de Hamilton, um dos primeiros que


se provou ser N P-completo.

void PCVND ; Isso pode ser feito:


{ i = 1; apresentando (como abaixo) um al-
for ( i = 1; i <= v ; i ++) goritmo no-determinista polinomial
{ j : = escolhe( i , listaadj ( i ) ) ; para o PCV ou
antecessor [ j ] : = i ;
mostrando que, a partir de uma
}
dada soluo para o PCV, esta
}
pode ser verificada em tempo poli-
nomial.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 38

PCV N P-completo - Parte 2 da Prova


Apresentar uma reduo polinomial do ciclo de Hamilton para o PCV.
Pode ser feita conforme o exemplo abaixo.

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

Dado um grafo representando uma instncia do ciclo de Hamilton,


construa uma instncia do PCV como se segue:
1. Para cidades use os vrtices.
2. Para distncias use 1 se existir um arco no grafo e 2 se no existir.
A seguir, use o PCV para achar um roteiro menor ou igual a V .
O roteiro o ciclo de Hamilton.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 39

Classe N P-Intermediria

Segunda descrio tentativa do mundo N P, assumindo P =


6 N P.

NP
NPC
NPI
P

Existe uma classe intermediria entre P e N P chamada N PI.

N PI seria constituda por problemas que ningum conseguiu uma


reduo polinomial de um problema N P-completo para eles, onde
N PI = N P - (P N P-completo).
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 40

Membros Potenciais de N PI

Isomorfismo de grafos: Dados G = (V, E) e G = (V, E ), existe uma


funo f : V V , tal que (u, v) E (f (u), f (v)) E ?
Isomorfismo o problema de testar se dois grafos so o mesmo.
Suponha que seja dado um conjunto de grafos e que alguma
operao tenha de ser realizada sobre cada grafo.
Se pudermos identificar quais grafos so duplicatas, eles poderiam
ser descartados para evitar trabalho redundante.

Nmeros compostos: Dado um inteiro positivo k, existem inteiros


m, n > 1 tais que k = mn?
Princpio da criptografia RSA: fcil encontrar nmeros primos
grandes, mas difcil fatorar o produto de dois deles.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.2 41

Classe N P-Completo - Resumo


Problemas que pertencem a N P, mas que podem ou no pertencer a
P.
Propriedade: se qualquer problema N P-completo puder ser resolvido
em tempo polinomial por uma mquina determinista, ento todos os
problemas da classe podem, isto , P = N P.
A falha coletiva de todos os pesquisadores para encontrar algoritmos
eficientes para estes problemas pode ser vista como uma dificuldade
para provar que P = N P.
Contribuio prtica da teoria: fornece um mecanismo que permite
descobrir se um novo problema fcil ou difcil.
Se encontrarmos um algoritmo eficiente para o problema, ento no
h dificuldade. Seno, uma prova de que o problema N P-completo
nos diz que o problema to difcil quanto todos os outros problemas
difceis da classe N P-completo.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2 42

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

O Que Fazer para Resolver Problemas Exponenciais?


Usar algoritmos exponenciais eficientes aplicando tcnicas de
tentativa e erro.
Usar algoritmos aproximados. Acham uma resposta que pode no ser
a soluo tima, mas garantido ser prxima dela.
Concentrar no caso mdio. Buscar algoritmos melhores que outros
neste quesito e que funcionem bem para as entradas de dados que
ocorrem usualmente na prtica.
Existem poucos algoritmos exponenciais que so muito teis na
prtica.
Exemplo: Simplex (programao linear). Complexidade de tempo
exponencial no pior caso, mas muito rpido na prtica.
Tais exemplos so raros. A grande maioria dos algoritmos
exponenciais conhecidos no muito til.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 44

Encontrar um Ciclo de Hamilton em um Grafo


Tentativa e Erro

void Visita (long k , TipoGrafo Grafo , long Tempo, long d)


{ long j ;
(Tempo)++;
d[ k] = Tempo; Obter algoritmo ten-
for ( j = 0; j < Grafo>NumVertices ; j ++) tativa e erro a par-
i f ( Grafo>Mat[ k ] [ j ] > 0) tir de algoritmo para
i f (d[ j ] == 0) Visita ( j , Grafo , Tempo, d) ;
caminhamento em
}
um grafo.
void Dfs(TipoGrafo Grafo)
{ long Tempo, i , d[ MAXNUMVERTICES + 1]; O Dfs faz uma
Tempo = 0; busca em profundi-
for ( i = 0; i < Grafo>NumVertices ; i ++) d[ i ] = 0; dade no grafo em
i = 0; tempo O(|V | + |A|).
Visita ( i , Grafo, &Tempo, d) ;
}
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 45

Ciclo de Hamilton - Tentativa e Erro

Aplicando o Dfs ao grafo da figura abaixo a partir do vrtice 0, o


procedimento Visita obtm o caminho 0 1 2 4 3 5 6, o que no um
ciclo simples.
0 1 2 3 4 5 6
2 6 0 1 2 6
1
1 1 2 4
1 3 2 1
5 1 2 6 2 4
2 4
4 3 2 1
2 1
4 4 2 1
5

Para encontrar um ciclo de Hamilton, caso exista, devemos visitar os


vrtices do grafo de outras maneiras.
A rigor, o melhor algoritmo conhecido resolve o problema tentando
todos os caminhos possveis.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 46

Ciclo de Hamilton - Tentando Todas as Possibilidades

Para tentar todas as possibilidades, alteramos o procedimento Visita.

Desmarca o vrtice j visitado no caminho anterior e permite que seja


visitado novamente em outra tentativa.

void Visita (long k , TipoGrafo Grafo, O custo proporcional


long Tempo, long d) ao nmero de chamadas
{ long j ; para o procedimento Vi-
Tempo++; sita.
d[ k] = Tempo;
for ( j = 0; j < Grafo > NumVertices ; j ++) Para um grafo completo,
i f ( Grafo > Mat[ k ] [ j ] > 0) (arestas ligando todos os
i f (d[ j ] == 0) Visita ( j , Grafo , Tempo, d) ; pares de ns) existem N !
Tempo; ciclos simples. Custo
d[ k] = 0; proibitivo.
}
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 47

Ciclo de Hamilton - Tentando Todas as Possibilidades

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

Ciclo de Hamilton - Tentando Todas as Possibilidades


A rvore de caminhamento :
0

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

Existem duas respostas: 0 5 3 1 2 4 6 0 e


0 6 4 2 1 3 5 0.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 49

Ciclo de Hamilton - Tentativa e Erro com Poda

Diminuir nmero de chamadas a Visita fazendo poda na rvore de


caminhamento.

No exemplo anterior, cada ciclo obtido duas vezes, caminhando em


ambas as direes.

Insistindo que o n 2 aparea antes do 0 e do 1, no precisamos


chamar Visita para o n 1 a no ser que o n 2 j esteja no caminho.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 50

Ciclo de Hamilton - Tentativa e Erro com Poda

rvore de caminhamento obtida:


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

Ciclo de Hamilton - Tentativa e Erro com Poda

Entretanto, esta tcnica no sempre possvel de ser aplicada.

Suponha que se queira um caminho de custo mnimo que no seja um


ciclo e passe por todos os vrtices: 0 6 4 5 3 1 2 soluo.

Neste caso, a tcnica de eliminar simetrias no funciona porque no


sabemos a priori se um caminho leva a um ciclo ou no.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.1 52

Ciclo de Hamilton - Branch-and-Bound

Outra sada para tentar diminuir o nmero de chamadas a Visita por


meio da tcnica de branch-and-bound.

A ideia cortar a pesquisa to logo se saiba que no levar a uma


soluo.

Corta chamadas a Visita to logo se chegue a um custo para qualquer


caminho que seja maior que um caminho soluo j obtido.

Exemplo: encontrando 0 5 3 1 2 4 6, de custo 11, no faz sentido


continuar no caminho 0 6 4 1, de custo 11 tambm.

Neste caso, podemos evitar chamadas a Visita se o custo do caminho


corrente for maior ou igual ao melhor caminho obtido at o momento.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.2 53

Heursticas para Problemas N P-Completo

Heurstica: algoritmo que pode produzir um bom resultado (ou at a


soluo tima), mas pode tambm no obter soluo ou obter uma
distante da tima.

Uma heurstica pode ser determinista ou probabilstica.

Pode haver instncias em que uma heurstica (probabilstica ou no)


nunca vai encontrar uma soluo.

A principal diferena entre uma heurstica probabilstica e um


algoritmo Monte Carlo que o algoritmo Monte Carlo tem que
encontrar uma soluo correta com uma certa probabilidade (de
preferncia alta) para qualquer instncia do problema.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.2 54

Heurstica para o PCV

Algoritmo do vizinho mais prximo, heurstica gulosa simples:


1. Inicie com um vrtice arbitrrio.
2. Procure o vrtice mais prximo do ltimo vrtice adicionado que
no esteja no caminho e adicione ao caminho a aresta que liga
esses dois vrtices.
3. Quando todos os vrtices estiverem no caminho, adicione uma
aresta conectando o vrtice inicial e o ltimo vrtice adicionado.

Complexidade: O(n2 ), sendo n o nmero de cidades, ou O(d), sendo d


o conjunto de distncias entre cidades.

Aspecto negativo: embora todas as arestas escolhidas sejam


localmente mnimas, a aresta final pode ser bastante longa.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.2 55

Heurstica para o PCV

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

Caminho timo para esta instncia: 0 1 2 5 3 4 0 (comprimento 58).


Para a heurstica do vizinho mais prximo, se iniciarmos pelo vrtice 0,
o vrtice mais prximo o 1 com distncia 3.
A partir do 1, o mais prximo o 2, a partir do 2 o mais prximo o 4,
a partir do 4 o mais prximo o 3, a partir do 3 restam o 5 e o 0.
O comprimento do caminho 0 1 2 4 3 5 0 60.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.2 56

Heurstica para o PCV

Embora o algoritmo do vizinho mais prximo no encontre a soluo


tima, a obtida est bem prxima do timo.

Entretanto, possvel encontrar instncias em que a soluo obtida


pode ser muito ruim.

Pode mesmo ser arbitrariamente ruim, uma vez que a aresta final pode
ser muito longa.

possvel achar um algoritmo que garanta encontrar uma soluo que


seja razoavelmente boa no pior caso, desde que a classe de instncias
consideradas seja restrita.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 57

Algoritmos Aproximados para Problemas N P-Completo


Para projetar algoritmos polinomiais para resolver um problema de
otimizao N P-completo necessrio relaxar o significado de
resolver.
Removemos a exigncia de que o algoritmo tenha sempre de obter a
soluo tima.
Procuramos algoritmos eficientes que no garantem obter a soluo
tima, mas sempre obtm uma prxima da tima.
Tal soluo, com valor prximo da tima, chamada de soluo
aproximada.
Um algoritmo aproximado para um problema um algoritmo que
gera solues aproximadas para .
Para ser til, importante obter um limite para a razo entre a soluo
tima e a produzida pelo algoritmo aproximado.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 58

Medindo a Qualidade da Aproximao

O comportamento de algoritmos aproximados quanto A qualidade dos


resultados (no o tempo para obt-los) tem de ser monitorado.
Seja I uma instncia de um problema e seja S (I) o valor da
soluo tima para I.
Um algoritmo aproximado gera uma soluo possvel para I cujo valor
S(I) maior (pior) do que o valor timo S (I).
Dependendo do problema, a soluo a ser obtida pode minimizar ou
maximizar S(I).
Para o PCV, podemos estar interessados em um algoritmo aproximado
que minimize S(I): obtm o valor mais prximo possvel de S (I).
No caso de o algoritmo aproximado obter a soluo tima, ento
S(I) = S (I).
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 59

Algoritmos Aproximados - Definio

Um algoritmo aproximado para um problema um algoritmo


polinomial que produz uma soluo S(I) para uma instncia I de .

O comportamento do algoritmo A descrito pela razo de


aproximao
S(I)
RA (I) = ,
S (I)
que representa um problema de minimizao

No caso de um problema de maximizao, a razo invertida.

Em ambos os casos, RA (I) 1.


Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 60

Algoritmos Aproximados para o PCV


Seja G = (V, A) um grafo no direcionado, completo, especificado por um par
(N, d).
N o conjunto de vrtices do grafo (cidades), e d uma funo distncia que
mapeia as arestas em nmeros reais, onde d satisfaz:
1. d(i, j) = d(j, i) i, j N ,
2. d(i, j) > 0 i, j N ,
3. d(i, j) + d(j, k) d(i, k) i, j, k N
1a propriedade: a distncia da cidade i at outra adjacente j igual de j
at i.
Quando isso no acontece, temos o problema conhecido como PCV
Assimtrico
2a propriedade: apenas distncias positivas.
3a propriedade: desigualdade triangular. A distncia de i at j somada com
a de j at k deve ser maior do que a distncia de i at k.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 61

Algoritmos Aproximados para o PCV

Quando o problema exige distncias no restritas desigualdade


triangular, basta adicionar uma constante k a cada distncia.

Exemplo: as trs distncias envolvidas so 2, 3 e 10, que no


obedecem desigualdade triangular pois 2 + 3 < 10. Adicionando
k = 10 s trs distncias obtendo 12, 13 e 20, que agora satisfazem a
desigualdade triangular.

O problema alterado ter a mesma soluo tima que o problema


anterior, apenas com o comprimento da rota tima diferindo de n k.

Cabe observar que o PCV equivale a encontrar no grafo G = (V, A) um


ciclo de Hamilton de custo mnimo.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 62

rvore Geradora Mnima (AGM)


Considere um grafo G = (V, A), sendo V as n cidades e A as
distncias entre cidades.
Uma rvore geradora uma coleo de n 1 arestas que ligam todas
as cidades por meio de um subgrafo conectado nico.
A rvore geradora mnima a rvore geradora de custo mnimo.
Existem algoritmos polinomiais de custo O(|A| log |V |) para obter a
rvore geradora mnima quando o grafo de entrada dado na forma
de uma matriz de adjacncia.
Grafo e rvore geradora mnima correspondente:
0 0
2 6 2
1 1
1 3 2 1 1 3 1
5 1 2 6 5 1 2 6
2 4 2
4
2 1 1
4 4
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 63

Limite Inferior para a Soluo do PCV a Partir da AGM

A partir da AGM, podemos derivar o limite inferior para o PCV.

Considere uma aresta (x1 , x2 ) do caminho timo do PCV. Remova a


aresta e ache um caminho iniciando em x1 e terminando em x2 .

Ao retirar uma aresta do caminho timo, temos uma rvore geradora


que consiste de um caminho que visita todas as cidades.

Logo, o caminho timo para o PCV necessariamente maior do que o


comprimento da AGM.

O limite inferior para o custo deste caminho a AGM.

Logo, Otimo P CV > AGM .


Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 64

Limite Superior de Aproximao para o PCV


A desigualdade triangular permite utilizar a AGM para obter um limite
superior para a razo de aproximao com relao ao comprimento
do caminho timo.
Vamos considerar um algoritmo que visita todas as cidades, mas pode
usar somente as arestas da AGM.
Uma possibilidade iniciar em um vrtice folha e usar a seguinte
estratgia:
Se houver aresta ainda no visitada saindo do vrtice corrente,
siga aquela aresta para um novo vrtice.
Se todas as arestas a partir do vrtice corrente tiverem sido
visitadas, volte para o vrtice adjacente pela aresta pela qual o
vrtice corrente foi inicialmente alcanado.
Termine quando retornar ao vrtice inicial.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 65

Limite Superior de Aproximao para o PCV - Busca em


Profundidade
O algoritmo descrito anteriormente a Busca em Profundidade
aplicada AGM.
Verifica-se que:
o algoritmo visita todos os vrtices.
nenhuma aresta visitada mais do que duas vezes.
Obtm um caminho que visita todas as cidades cujo custo menor ou
igual a duas vezes o custo da rvore geradora mnima.
Como o caminho timo maior do que o custo da AGM, ento o
caminho obtido no mximo duas vezes o custo do caminho timo.
CaminhoP CV < 2OtimoP CV .
Restrio: algumas cidades so visitadas mais de uma vez.
Para contornar o problema, usamos a desigualdade triangular.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 66

Limite Superior de Aproximao para o PCV -


Desigualdade Triangular

Introduzimos curto-circuitos que nunca aumentam o comprimento total


do caminho.

Inicie em uma folha da AGM, mas sempre que a busca em


profundidade for voltar para uma cidade j visitada, salte para a
prxima ainda no visitada.

A rota direta no maior do que a anterior indireta, em razo da


desigualdade triangular.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 67

Limite Superior de Aproximao para o PCV -


Desigualdade Triangular

Se todas as cidades tiverem sido visitadas, volte para o ponto de


partida.

(a) (b) (c)

O algoritmo constri um caminho soluo para o PCV porque cada


cidade visitada apenas uma vez, exceto a cidade de partida.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 68

Limite Superior de Aproximao para o PCV -


Desigualdade Triangular
O caminho obtido no maior que o caminho obtido em uma busca em
profundidade, cujo comprimento no mximo duas vezes o do caminho
timo.
Os principais passos do algoritmo so:
1. Obtenha a rvore geradora mnima para o conjunto de n cidades, com
custo O(n2 ).
2. Aplique a busca em profundidade na AGM obtida com custo O(n):
Inicie em uma folha (grau 1).
Siga uma aresta no utilizada.
Se for retornar para uma cidade j visitada, salte para a prxima ainda
no visitada (rota direta menor que a indireta pela desigualdade
triangular).
Se todas as cidades tiverem sido visitadas, volte cidade de origem.
Assim, obtivemos um algoritmo polinomial de custo O(n2 ), com uma razo de
aproximao garantida para o pior caso de RA 2.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 69

Como Melhorar o Limite Superior a Partir da AGM


No algoritmo anterior um caminho para o caixeiro viajante pode ser
obtido dobrando os arcos da AGM, o que leva a um pior caso para a
razo de aproximao no mximo igual a 2.
Melhora-se a garantia de um fator 2 para o pior caso, utilizando o
conceito de grafo Euleriano.
Um grafo Euleriano um grafo conectado no qual todo vrtice tem
grau par.
Um grafo Euleriano possui um caminho Euleriano, um ciclo que
passa por todas as arestas exatamente uma vez.
O caminho Euleriano em um grafo Euleriano, pode ser obtido em
tempo O(n), usando a busca em profundidade.
Podemos obter um caminho para o PCV a partir de uma AGM, usando
o caminho Euleriano e a tcnica de curto-circuito.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 70

Como Melhorar o Limite Superior a Partir da AGM

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.

Pela desigualdade triangular, o caminho do caixeiro viajante no pode


ser mais longo do que o caminho Euleriano e, conseqentemente, de
comprimento no mximo duas vezes o comprimento da AGM.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 71

Casamento Mnimo com Pesos

Christophides props uma melhoria no algoritmo anterior utilizando o


conceito de casamento mnimo com pesos em grafos.

Dado um conjunto contendo um nmero par de cidades, um


casamento uma coleo de arestas M tal que cada cidade a
extremidade de exatamente um arco em M .

Um casamento mnimo aquele para o qual o


comprimento total das arestas mnimo.
Todo vrtice parte de exatamente uma aresta
do conjunto M .
Pode ser encontrado com custo O(n3 ).
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 72

Casamento Mnimo com Pesos


Considere a AGM T de um grafo.
Alguns vrtices em T j possuem grau par, assim no precisariam receber
mais arestas se quisermos transformar a rvore em um grafo Euleriano.
Os nicos vrtices com que temos de nos preocupar so os vrtices de grau
mpar.
Existe sempre um nmero par de vrtices de grau mpar, desde que a soma
dos graus de todos os vrtices tenha de ser par porque cada aresta
contada exatamente uma vez.
Uma maneira de construir um grafo Euleriano que inclua T simplesmente
obter um casamento para os vrtices de grau mpar.
Isto aumenta de um o grau de cada vrtice de grau mpar. Os de de grau par
no mudam.
Se adicionamos em T um casamento mnimo para os vrtices de grau mpar,
obtemos um grafo Euleriano que tem comprimento mnimo dentre aqueles
que contm T .
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 73

Casamento Mnimo com Pesos - Exemplo

a. Uma rvore geradora m-


nima T .
(a) (b)
b. T mais um casamento m-
nimo dos vrtices de grau
mpar.
c. Caminho de Euler em (b).
d. Busca em profundidade
com curto-circuito.

(c) (d)
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 74

Casamento Mnimo com Pesos

Basta agora determinar o comprimento do grafo de Euler.

Caminho do caixeiro viajante em que podem ser vistas seis cidades


correspondentes aos vrtices de grau mpar enfatizadas.

timo PVC

O caminho determina os casamentos M e M .


Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 75

Casamento Mnimo com Pesos


Seja I uma instncia do PCV, e Comp(T ), Comp(M ) e Comp(M ),
respectivamente, a soma dos comprimentos de T , M e M .
Pela desigualdade triangular devemos ter que:
Comp(M ) + Comp(M ) Otimo(I),
Assim, ou M ou M tm de ter comprimento menor ou igual a
Otimo(I)/2.
Logo, o comprimento de um casamento mnimo para os vrtices de
grau mpar de T tem tambm de ter comprimento no mximo
Otimo(I)/2.
Desde que o comprimento de M menor do que o caminho do
caixeiro viajante timo, podemos concluir que o comprimento do grafo
Euleriano construdo :
3
Comp(I) < Otimo(I).
2
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 76

Casamento Mnimo com Pesos - Algoritmo de


Christophides

Os principais passos do algoritmo de Christophides so:


1. Obtenha a AGM T para o conjunto de n cidades, com custo O(n2 ).
2. Construa um casamento mnimo M para o conjunto de vrtices de
grau mpar em T , com custo O(n3 ).
3. Encontre um caminho de Euler para o grafo Euleriano obtido com a
unio de T e M , e converta o caminho de Euler em um caminho do
caixeiro viajante usando curto-circuitos, com um custo de O(N ).

Assim obtivemos um algoritmo polinomial de custo O(n3 ), com uma


razo de aproximao garantida para o pior caso de RA < 3/2.
Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.2.3 77

Algoritmo de Christophides - Pior Caso


Exemplo de pior caso do algoritmo de Christofides:
5

1 1 1 1 1

1 1 1 1 1 1 1 1 1 1
1 1 1 1

A AGM e o caminho timo so:

AGM 1 1 1 1 1 1 1 1 1 1

1 1 1 1 1
timo 1

1 1 1 1

Neste caso, para uma instncia I:


3
C(I) = [Otimo(I) 1],
2
onde o Otimo(I) = 11, C(I) = 15, e AGM = 10.

Вам также может понравиться