You are on page 1of 19

Projeto de Algoritmos Cap.

9 Problemas N P -Completo e Algoritmos Aproximados

Introduo
Problemas intratveis ou difceis so comuns na natureza e nas reas do conhecimento.

Problemas N P-Completo e Algoritmos Aproximados

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.

ltima alterao: 22 de Abril de 2004

Ex.: problema do caixeiro viajante (PCV) (O(n!)). Mesmo problemas de tamanho pequeno a moderado no podem ser resolvidos por algoritmos no-polinomiais.

Transparncias

elaboradas por Charles Ornelas Almeida e Nivio Ziviani

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

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

Problemas N P-Completo
A teoria de complexidade a ser apresentada no mostra como obter algoritmos polinomiais para problemas que demandam algoritmos exponenciais, nem arma 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 dicilmente algum ser capaz de encontrar um algoritmo eciente para um problema da classe N P.

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 vericada facilmente. A soluo pode ser muito difcil ou impossvel de ser obtida, mas uma vez conhecida ela pode ser vericada em tempo polinomial.

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

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

Caminho em um Grafo
Considere um grafo com peso nas arestas, dois vrtices i, j e um inteiro k > 0.
5 2 7 11 3 i 7 9 5 2 3 8 12 10 1 3 j 13

Colorao de um Grafo
Em um grafo G = (V, A), mapear C : V S, sendo S um conjunto nito de cores tal que se vw A ento c(v) = 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).

Fcil: Existe um caminho de i at j com peso k?. H um algoritmo eciente 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 eciente. equivalente ao PCV em termos de complexidade.

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

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

Colorao de um Grafo - Otimizao de Compiladores


Escalonar o uso de um nmero nito 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 nal. 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.

Colorao de um Grafo - Otimizao de Compiladores


Evidentemente, no existe conito 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 sucientes para colorir um grafo.

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

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

Colorao de um Grafo - Problema de Horrio


Suponha que os exames nais 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.

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 4 3 2 1

Existe um ciclo de Hamilton no grafo G? Fcil: Grafos com grau mximo = 2 (vrtices com no mximo duas arestas incidentes). 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 innita.

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

10

Projeto de Algoritmos Cap.9 Problemas N P -Completo e Algoritmos Aproximados Seo 9.1.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

Algoritmos No-Deterministas
Algoritmos deterministas: o resultado de cada operao denido de forma nica. Em um arcabouo terico, possvel remover essa restrio. Apesar de parecer irreal, este um conceito importante e geralmente utilizado para denir a classe N P.
5

Neste caso, os algoritmos podem conter operaes cujo resultado no denido 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 denido, ainda que limitado a um conjunto especicado de possibilidades.

Uma cobertura de vrtices um subconjunto V V tal que se (u, v) A ento u V ou v V , isto , cada aresta do grafo incidente em um dos vrtices de V . Na gura, 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

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

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 denir 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

14

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 denir 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 denio da classe N P-completo frente.

Pesquisa No-Determinista
Pesquisar o elemento x em um conjunto de elementos A[1 : n], n 1.
procedure PesquisaND (A, 1 , n) ; begin j escolhe(A,1 ,n) i f A[ j ] = x then sucesso else insucesso ; end;

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

16

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.
procedure OrdenaND (A, 1 , n) ; begin for i := 1 to n do B[ i ] : = 0 ; for i := 1 to n do begin j escolhe(A,1 ,n) ; i f B[ j ] = 0 then B[ j ] : = A[ i ] else insucesso ; end; end;

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.

Um vetor auxiliar B[1:n] utilizado. Ao nal, B contm o conjunto em ordem crescente. A posio correta em B de cada inteiro de A obtida de forma no-determinista pela funo escolhe. Em seguida, o comando de deciso verica 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

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

19

Problema da Satisfabilidade
O algoritmo AvalND(E,n) verica se uma expresso E na forma normal conjuntiva, com variveis xi , 1 i n, satisfatvel.
procedure AvalND (E, n) ; begin for i := 1 to n do begin xi escolhe(true , false ) ; i f E(x1 , x2 , , xn ) = true then sucesso else insucesso ; end; end;

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 vericar que uma dada soluo vlida.

O algoritmo obtm uma das 2n atribuies possveis de forma no-determinista em O(n). Melhor algoritmo determinista: O(2n ). Aplicao: denio 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

20

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

21

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 = 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 = N P parece exigir tcnicas ainda desconhecidas. Descrio tentativa do mundo N P, em que a classe P est contida na classe N P.
NP P

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 eciente para eles). Se conseguirmos provar que um problema no pertence a P, ento no precisamos procurar por uma soluo eciente para ele. Como no existe tal prova, sempre h esperana de que algum descubra um algoritmo eciente. Quase ningum acredita que N P = P. Existe um esforo considervel para provar o contrrio, mas a questo continua em aberto!

Acredita-se que N P P, pois para muitos problemas em N P, no existem algoritmos polinomiais conhecidos, nem um limite inferior no-polinomial provado.

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

22

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

23

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 de P1 Dados de P2 Soluo para P2 Soluo para P1

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

3 Transformao Polinomial Algoritmo A2 Transformao Polinomial

Esse conceito importante para denir a classe N P-completo. Para mostrar um exemplo de transformao polinomial, deniremos 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

24

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

25

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: identicar localizaes para instalao de franquias. Duas localizaes no podem estar perto o suciente 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 suciente 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 conitos entre elementos.

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

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

26

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

27

Clique de um grafo - Aplicao


O problema de identicar 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 identicar 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.

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

28

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

29

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

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

30

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


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 diculdade de um problema N P-difcil no menor do que a diculdade de um problema N P-completo.

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

32

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

33

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.

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 denio 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

34

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

35

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 .

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. Isso pode ser feito: apresentando (como abaixo) um algoritmo no-determinista polinomial para o PCV ou mostrando que, a partir de uma dada soluo para o PCV, esta pode ser vericada em tempo polinomial.
procedure PCVND ; begin i := 1; for t := 1 to v do begin j : = escolhe( i , listaadj ( i ) ) ; antecessor [ j ] : = i ; end; end;

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

36

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

37

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.

Classe N P-Intermediria
Segunda descrio tentativa do mundo N P, assumindo P = N P.
NP NPC NPI P

2 1 1 4 1 1 1 1 5 1 1 3 4 1 1 1 5 1 3 2 1 1 1 1 2 2

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

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 original 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

38

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

39

Membros Potenciais de N PI
Isomorsmo 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 ? Isomorsmo 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 identicar 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 criptograa RSA: fcil encontrar nmeros primos grandes, mas difcil fatorar o produto de dois deles.

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 ecientes para estes problemas pode ser vista como uma diculdade 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 eciente para o problema, ento no h diculdade. 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

40

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

41

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) suciente para N = 100.

O Que Fazer para Resolver Problemas Exponenciais?


Usar algoritmos exponenciais ecientes 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

42

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

43

Ciclo de Hamilton - Tentativa e Erro


Ex.: encontrar um ciclo de Hamilton em um grafo. Obter algoritmo tentativa e erro a partir de algoritmo para caminhamento em um grafo. O Dfs faz uma busca em profundidade no grafo em tempo O(|V | + |A|).
procedure Dfs ( Grafo : TipoGrafo ) ; var Tempo, i : integer ; d : array [ 0 . .MaxNumVertices] of integer ; procedure Visita ( k : integer ) ; var j : integer ; begin Tempo : = Tempo + 1; d[ k ] i f Grafo.Mat[ k, j ] > 0 then i f d[ j ] = 0 then Visita ( j ) ; end; begin Tempo := 0; for i := 0 to Grafo.NumVertices1 do d[ i ] : = 0 ; i : = 0 ; Visita ( i ) ; end; := Tempo; for j := 0 to Grafo.NumVertices 1 do

Ciclo de Hamilton - Tentativa e Erro


Aplicando o Dfs ao grafo da gura 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 2 5 1 3 2 2 2 1 1 4 4 1 4 1 6 2 6
0 1 2 3 4 5 1 1 1 2 4 4 2 1 2 1 2 3 4 5 2 6 6

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

44

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

45

Ciclo 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.
procedure Visita ( k : integer ) ; var j : integer ; begin Tempo : = Tempo + 1; d[ k ] i f Grafo.Mat[ k, j ] > 0 then i f d[ j ] = 0 := Tempo; for j := 0 to Grafo.NumVertices 1 do

Ciclo de Hamilton - Tentando Todas as Possibilidades


Para o grafo
0 2 5 1 3 2 2 2 1 1 4 4 1 4 1 6 2 6

A rvore de caminhamento :
0 1 2 3 4 6 2 5 6 2 5 4 6 2 3 5 4 5 3 6 2 4 6 2 1 4 6 1 2 3 4 2 1 6 2 1 3 2 1 3 5 4 3 1 2 6 2 1 3 5 2 1 3 1 2 6 4 3 5 5 3 1 2

then Visita ( j ) ; Tempo : = Tempo 1; d[ k ] : = 0 ; end;


3 5 4 5 3

5
0

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.

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

46

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

47

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. rvore de caminhamento obtida:
0 5 3 4 2 1 6 2 1 3 4 3 6 2 1 3 6 4 3 5 5 3

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.

5
0

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

48

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

49

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.

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

50

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

51

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 nal pode ser bastante longa.

Heurstica para o PCV


0 5 1
0 1 2 1 3 2 10 8 3 11 12 9 4 7 9 4 5 5 25 26 20 15 18

4 3

3 4

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

52

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

53

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

Algoritmos Aproximados para Problemas N P-Completo


Para projetar algoritmos polinomiais para resolver um problema de otimizao N P-completo necessrio relaxar o signicado de resolver. Removemos a exigncia de que o algoritmo tenha sempre de obter a soluo tima. Procuramos algoritmos ecientes 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

54

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

55

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

Algoritmos Aproximados - Denio


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 RA (I) = S(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

56

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

57

Algoritmos Aproximados para o PCV


Seja G = (V, A) um grafo no direcionado, completo, especicado 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.

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

58

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

59

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 2 5 1 3 2 2 2 1 1 4 4 1 4 1 4 6 2 6 5 2 1 3 2 1 1 0 1 1 2 6

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

60

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

61

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.

Limite Superior de Aproximao para o PCV - Busca em Profundidade


O algoritmo descrito anteriormente a Busca em Profundidade aplicada AGM. Verica-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

62

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

63

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.

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

(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

64

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

65

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.

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

66

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

67

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.

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.

Todo vrtice parte de exatamente uma aresta do conjunto M . Pode ser encontrado com custo O(n3 ).

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

68

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

69

Casamento Mnimo com Pesos Exemplo

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.

(a)

(b)
M M timo PVC

O caminho determina os casamentos M e M .

(c)

(d)

a. Uma rvore geradora mnima T . b. T mais um casamento mnimo dos vrtices de grau mpar. c. Caminho de Euler em (b). d. Busca em profundidade com curto-circuito.

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

70

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

71

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

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

72

Algoritmo de Christophides - Pior Caso


Exemplo de pior caso do algoritmo de Christodes:
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 timo 1 1 1 1 1 1 1 1 1 1 1 1 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.

You might also like