You are on page 1of 35

Algoritmos aproximados

Prof. Andr Lins alla@ic.ufal.br

Instituto de Computao Universidade Federal de Alagoas

Problemas exponenciais
desejvel resolver instncias grandes de problemas de otimizao em tempo razovel. Os melhores algoritmos para problemas NP-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
PAA - Adaptado de Prof. Loureiro dcc/ufmg 2

O que fazer para resolver problemas exponnciais?


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 usual- mente 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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 3

Circuito Hamiltoniano: Tentativa e erro


Exemplo: encontrar um Circuito de Hamilton em um grafo Obter algoritmo tentativa e erro a partir de algoritmo para caminhamento em um grafo DFS faz uma busca em profundidade no grafo em tempo O(V+E)

PAA - Adaptado de Prof. Loureiro dcc/ufmg

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

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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 5

Circuito de Hamilton: Tentando todas as possibilidades


Para tentar todas as possibilidades, vamos alterar o procedimento Visita. Desmarca o vrtice j visitado no caminho anterior e permite que seja visitado novamente em outra tentativa. O custo proporcional ao nmero de chamadas para o procedimento Visita. Para um grafo completo, (arestas ligando todos os pares de ns) existem N! ciclos simples. Custo proibitivo.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 6

Para o Grafo

A rvore de caminhamento :

Existem duas respostas:


1. 0 - 5 - 3 - 1 - 2 - 4 - 6 - 0 2. 0 - 6 - 4 - 2 - 1 - 3 - 5 - 0

PAA - Adaptado de Prof. Loureiro dcc/ufmg

Circuito 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.
rvore de caminhamento obitida:

PAA - Adaptado de Prof. Loureiro dcc/ufmg

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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 9

Circuito 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 idia 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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 10

Heursticas para problemas NP-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 determinstica 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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 11

Heurstica para o PCV


Algoritmo do vizinho mais prximo, heurstica gulosa simples:
Inicie com um vrtice arbitrrio. 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. 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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 12

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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 13

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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 14

Algoritmos aproximados para problemas NP-Completo


Para projetar algoritmos polinomiais para resolver um problema de otimizao NP-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 P um algoritmo que gera solues aproximadas para P. Para ser til, importante obter um limite para a razo entre a soluo tima e a produzida pelo algoritmo aproximado.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

15

Medindo a qualidade da aproximao


O comportamento de algoritmos aproximados quanto qualidade dos resultados (no o tempo para obt-los) tem de ser monitorado. Seja I uma instncia de um problema P 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) .

PAA - Adaptado de Prof. Loureiro dcc/ufmg

16

Algoritmos aproximados: Definio


Um algoritmo aproximado para um problema P um algoritmo polinomial que produz uma soluo S(I) para uma instncia I de P 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
PAA - Adaptado de Prof. Loureiro dcc/ufmg 17

Algoritmos aproximados para o PCV


Seja, G=(V, E) um grafo 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
1 propriedade: a distncia da cidade i at outra j igual de j at i
Quando isso no acontece, temos o problema conhecido como PCV Assimtrico

2 propriedade: apenas distncias positivas. 3 propriedade: desigualdade triangular. A distncia de i at j somada a de j at k deve ser maior do que a distncia de i at k.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 18

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 x k Cabe observar que o PCV equivale a encontrar no grafo G=(V,E) um circuito Hamiltoniano de custo mnimo.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 19

rvore geradora mnima (AGM)


Considere um grafo G=(V,E), sendo V as n cidades e E as distncias entre as 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(E 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:

PAA - Adaptado de Prof. Loureiro dcc/ufmg

20

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 terminado 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, timoPCV > AGM
PAA - Adaptado de Prof. Loureiro dcc/ufmg 21

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.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

22

Limite superior de aproximao para o PCV: Busca em profundidade


O algoritmo descrito anteriormente a DFS 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: CaminhoPCV < 2 timoPCV Restrio: algumas cidades so visitadas mais de uma vez. Para contornar o problema, usamos a desigualdade triangular.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

23

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. Se todas as cidades tiverem sido visitadas, volte para o ponto de partida.

PAA - Adaptado de Prof. Loureiro dcc/ufmg

24

O algoritmo constri um caminho soluo para o PCV porque cada cidade visitada apenas uma vez, exceto a cidade de partida. 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: Obtenha a rvore geradora mnima para o conjunto de n cidades, com custo O(n2) Aplique a busca em profundidade na AGM obtida com custo O(n), a saber:
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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 25

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 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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 26

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.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 27

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).

PAA - Adaptado de Prof. Loureiro dcc/ufmg

28

Considere a AGM T 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 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

PAA - Adaptado de Prof. Loureiro dcc/ufmg

29

a) b) c) d)

Uma rvore geradora mnima T T mais um casamento mnimo dos vrtices de grau mpar Caminho de Euler em 2 Busca em profundidade com curto-circuito.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 30

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.

O caminho determina os casamentos M e M'


PAA - Adaptado de Prof. Loureiro dcc/ufmg 31

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) timo(I) Assim, ou M ou M tem de ter comprimento menor ou igual a timo(I)/2 Logo, o comprimento de um casamento mnimo para os vrtices de grau mpar de T tem tambm de ter comprimento no mximo timo(I)/2 Desde que o comprimento de M menor do que o caminho do caixeiro viajante timo, podemos concluir que o comprimento o grafo Euleriano construdo : Comp(I) < (3/2) timo(I)
PAA - Adaptado de Prof. Loureiro dcc/ufmg 32

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 curtocircuitos, 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
PAA - Adaptado de Prof. Loureiro dcc/ufmg 33

Algoritmo de Cristophides: Pior caso


Exemplo de pior caso do algoritmo de Christofides:

A AGM e o caminho timo so:

Neste caso, para uma instncia I: C(I) = (3/2)[timo(I)-1], onde o timo(I) =11, C(I) =15, e AGM = 10.
PAA - Adaptado de Prof. Loureiro dcc/ufmg 34

BOAS FRIAS!!!

35