Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações na Matemática
O
P
COLEÇÃO ESCOLA DE LÓGICA MATEMÁTICA
VOLUME 44

APROXIMAÇÃO ALGORÍTMICA

Fundamentos, Técnicas e Aplicações

Uma abordagem sistemática dos princípios fundamentais de algoritmos de aproximação, incluindo razões de aproximação, técnicas gulosas, programação linear e suas aplicações em problemas NP-difíceis, alinhada com a BNCC.

O(n)
2ⁿ
P≠NP
ε

COLEÇÃO ESCOLA DE LÓGICA MATEMÁTICA • VOLUME 44

APROXIMAÇÃO ALGORÍTMICA

Fundamentos, Técnicas e Aplicações

Autor: João Carlos Moreira

Doutor em Matemática

Universidade Federal de Uberlândia

2025

Coleção Escola de Lógica Matemática • Volume 44

CONTEÚDO

Capítulo 1: Fundamentos de Complexidade Computacional 4

Capítulo 2: Problemas NP-Difíceis e Intratabilidade 8

Capítulo 3: Algoritmos Gulosos de Aproximação 12

Capítulo 4: Razões de Aproximação e Análise 16

Capítulo 5: Cobertura de Vértices e Conjuntos 22

Capítulo 6: Caixeiro-Viajante e Heurísticas 28

Capítulo 7: Programação Linear e Relaxação 34

Capítulo 8: Esquemas de Aproximação 40

Capítulo 9: Exercícios Resolvidos e Propostos 46

Capítulo 10: Aplicações Práticas e Desenvolvimentos 52

Referências Bibliográficas 54

Coleção Escola de Lógica Matemática • Volume 44
Página 3
Coleção Escola de Lógica Matemática • Volume 44

Capítulo 1: Fundamentos de Complexidade Computacional

Conceitos Iniciais e Motivação

A aproximação algorítmica constitui campo fundamental da ciência da computação teórica e matemática discreta, proporcionando ferramentas essenciais para lidar com problemas computacionais intrinsecamente difíceis que surgem em diversas aplicações práticas. Esta disciplina desenvolve-se como resposta rigorosa ao desafio de encontrar soluções eficientes para problemas onde a busca pela solução ótima exata é computacionalmente inviável.

O estudo de algoritmos de aproximação representa ponte entre teoria da computação e aplicações práticas, permitindo que estudantes e profissionais desenvolvam soluções computacionalmente tratáveis que garantem proximidade mensurável à solução ótima. Estas técnicas são essenciais não apenas para otimização combinatória, mas também para logística, redes de comunicação, bioinformática, aprendizado de máquina e muitas outras áreas tecnológicas contemporâneas.

No contexto educacional brasileiro, especialmente considerando as competências específicas da Base Nacional Comum Curricular para o ensino de matemática e pensamento computacional, o domínio de conceitos de complexidade e aproximação desenvolve habilidades fundamentais de modelagem, análise quantitativa e resolução de problemas, preparando estudantes para desafios intelectuais e profissionais em campos tecnológicos emergentes.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 4
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Classes de Complexidade e Problemas Computacionais

A teoria da complexidade computacional fornece framework matemático rigoroso para classificar problemas algorítmicos segundo dificuldade intrínseca, medida principalmente pelo tempo e espaço necessários para computação em função do tamanho da entrada. As classes de complexidade P e NP representam divisões fundamentais que separam problemas tratáveis de problemas potencialmente intratáveis.

A classe P contém todos os problemas de decisão que podem ser resolvidos por algoritmo determinístico em tempo polinomial. Exemplos incluem ordenação, busca em grafos, multiplicação de matrizes e muitos outros problemas fundamentais. A classe NP abrange problemas cujas soluções podem ser verificadas em tempo polinomial, mesmo quando não conhecemos algoritmo eficiente para encontrar a solução.

A questão P versus NP, um dos sete problemas do milênio, pergunta se todo problema cuja solução pode ser verificada rapidamente também pode ser resolvido rapidamente. A maioria dos pesquisadores acredita que P ≠ NP, implicando existência de problemas intrinsecamente difíceis que requerem abordagens alternativas como algoritmos de aproximação para tratamento prático.

Exemplo Introdutório

Considere dois problemas fundamentais:

Problema 1: Busca em Lista Ordenada

• Dado: Lista ordenada de n elementos e valor x

• Tarefa: Determinar se x está na lista

• Complexidade: O(log n) usando busca binária

• Classe: P (polinomial, tratável)

Problema 2: Caixeiro-Viajante

• Dado: n cidades com distâncias entre elas

• Tarefa: Encontrar menor rota visitando todas

• Complexidade: O(n!) força bruta, sem solução polinomial conhecida

• Classe: NP-difícil (potencialmente intratável)

Análise comparativa:

• Para n = 20 cidades: 20! ≈ 2,4 × 10¹⁸ operações

• A 1 bilhão de operações/segundo: ~77 milhões de anos

• Necessidade de aproximação: solução 1,5 vezes o ótimo em segundos

Observação Importante

Algoritmos de aproximação não resolvem o problema P versus NP, mas fornecem estratégia prática para lidar com problemas NP-difíceis garantindo qualidade de solução mensurável, essencial para aplicações onde soluções perfeitas são inviáveis.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 5
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Quando Utilizar Algoritmos de Aproximação

A aplicação de algoritmos de aproximação torna-se essencial em situações onde problemas de otimização são NP-difíceis, impossibilitando solução exata em tempo razoável para instâncias reais, ou quando requisitos práticos como tempo de resposta, recursos computacionais limitados ou necessidade de soluções online impedem uso de métodos exatos, mesmo quando teoricamente disponíveis.

Contextos típicos incluem otimização de rotas logísticas com centenas de pontos de entrega, alocação de recursos em redes de telecomunicações com milhares de nós, escalonamento de tarefas em sistemas distribuídos, problemas de empacotamento em armazenamento e transporte, e clusterização em análise de dados com grandes volumes de informação.

A escolha entre buscar solução exata ou usar aproximação depende de trade-offs entre qualidade de solução, tempo computacional, recursos disponíveis e requisitos específicos da aplicação. Frequentemente, solução aproximada obtida rapidamente com garantia de qualidade é preferível a solução exata que requer tempo computacional proibitivo ou inexequível.

Critérios de Aplicação

Use algoritmos de aproximação quando:

• O problema é demonstravelmente NP-difícil ou NP-completo

• Instâncias práticas têm tamanho que torna métodos exatos inviáveis

• Tempo de resposta é crítico (sistemas em tempo real)

• Recursos computacionais são limitados (dispositivos embarcados)

• Solução próxima do ótimo é aceitável para aplicação

Exemplo prático: Sistema de entrega urbana

• Empresa tem 50 pontos de entrega diários

• Solução exata: 50! ≈ 3 × 10⁶⁴ possibilidades

• Tempo inviável mesmo com supercomputadores

• Algoritmo 2-aproximação: rota ≤ 2 × ótima em segundos

• Resultado: economia de combustível mesmo não sendo perfeito

Garantia de qualidade:

• Solução ótima desconhecida: digamos 100 km

• Algoritmo garante ≤ 200 km (pior caso)

• Prática típica: 110-130 km (muito melhor que garantia)

Estratégia de Decisão

Antes de implementar aproximação, avalie: tamanho típico das instâncias, tempo disponível para computação, impacto da subotimalidade, possibilidade de heurísticas específicas do domínio. Para problemas pequenos ou com estrutura especial, métodos exatos podem ser suficientes.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 6
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Medidas de Desempenho e Garantias

A avaliação de algoritmos de aproximação requer métricas rigorosas que quantifiquem qualidade da solução obtida comparada com solução ótima desconhecida. A razão de aproximação α representa conceito central, definindo limite superior no desvio entre solução aproximada e ótima, fornecendo garantia teórica independente de instância específica considerada.

Para problemas de minimização, algoritmo α-aproximação garante que custo da solução encontrada é no máximo α vezes o custo ótimo: A(I) ≤ α · OPT(I) para toda instância I. Para maximização, garantia é dual: A(I) ≥ (1/α) · OPT(I). O valor α ≥ 1 quantifica degradação aceitável, com α = 1 representando algoritmo exato e valores próximos de 1 indicando aproximações de alta qualidade.

Análise de aproximação difere fundamentalmente de análise de complexidade tradicional, pois além de eficiência temporal, considera qualidade de solução. Algoritmo polinomial com razão de aproximação constante fornece garantias tanto de eficiência quanto de qualidade, representando compromisso ideal entre tratabilidade e otimalidade em contextos práticos.

Análise de Razões de Aproximação

Considere problema de cobertura de vértices:

Problema:

• Dado: Grafo G = (V, E)

• Objetivo: Encontrar menor conjunto S ⊆ V tal que toda aresta tem ao menos uma extremidade em S

Algoritmo guloso simples:

• Enquanto existem arestas não cobertas:

→ Selecionar aresta (u, v) não coberta

→ Adicionar ambos u e v ao conjunto S

→ Marcar todas arestas incidentes como cobertas

Análise da razão de aproximação:

• Seja OPT o tamanho da cobertura ótima

• Algoritmo seleciona k arestas disjuntas

• Adiciona 2k vértices à solução

• Cada aresta selecionada precisa ≥ 1 vértice no ótimo

• Logo OPT ≥ k, portanto 2k ≤ 2 · OPT

• Conclusão: algoritmo é 2-aproximação ✓

Exemplo concreto:

• Grafo triângulo: 3 vértices, 3 arestas

• Ótimo: 2 vértices cobrem todas arestas

• Algoritmo pode encontrar: 2 vértices (ótimo neste caso)

• Garantia mantida: 2 ≤ 2 × 2 ✓

Interpretação Prática

Razão de aproximação fornece garantia de pior caso, mas performance típica frequentemente é melhor. Análise experimental complementa garantias teóricas, revelando comportamento médio em instâncias práticas relevantes para domínio específico de aplicação.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 7
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 2: Problemas NP-Difíceis e Intratabilidade

Caracterização de Problemas NP-Difíceis

Problemas NP-difíceis representam classe de problemas computacionais cuja dificuldade é pelo menos tão grande quanto a dos problemas mais difíceis em NP, fornecendo benchmark teórico para intratabilidade computacional. A demonstração de que um problema é NP-difícil estabelece, condicionalmente à hipótese P ≠ NP amplamente aceita, que provavelmente não existe algoritmo polinomial exato para resolvê-lo.

A técnica de redução polinomial constitui ferramenta fundamental para provar NP-dificuldade, transformando problema conhecido como NP-difícil em problema alvo em tempo polinomial, preservando soluções. Esta transformação demonstra que se o problema alvo pudesse ser resolvido eficientemente, o problema fonte também poderia, contradizendo sua NP-dificuldade assumida.

Problemas NP-completos formam subclasse especial de problemas NP-difíceis que também pertencem a NP, satisfazendo dupla propriedade de serem verificáveis em tempo polinomial e pelo menos tão difíceis quanto qualquer outro problema em NP. O problema SAT (satisfazibilidade booleana) foi historicamente o primeiro problema demonstrado como NP-completo através do teorema de Cook-Levin.

Análise do Problema do Clique

Considere o problema de encontrar maior clique em grafo:

Definição formal:

• Entrada: Grafo G = (V, E)

• Objetivo: Encontrar maior subconjunto S ⊆ V onde todos pares de vértices em S são adjacentes

Versão de decisão (NP-completo):

• Dado k, existe clique de tamanho ≥ k?

• Verificação em tempo polinomial: dado S, checar |S| ≥ k e todas arestas presentes

Dificuldade do problema:

• Número de subconjuntos possíveis: 2ⁿ

• Para n = 50 vértices: 2⁵⁰ ≈ 10¹⁵ possibilidades

• Melhor algoritmo exato conhecido: O(2⁰·²⁴⁹ⁿ)

• Ainda exponencial, inviável para grafos grandes

Aplicações práticas:

• Redes sociais: grupos densamente conectados

• Bioinformática: proteínas com interações mútuas

• Mineração de dados: padrões em transações

Necessidade de aproximação:

• Problema de otimização é NP-difícil

• Instâncias reais têm centenas ou milhares de vértices

• Aproximação permite soluções práticas com garantias

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 8
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Reduções e Completude NP

O conceito de redução polinomial fornece mecanismo formal para comparar dificuldade relativa entre problemas computacionais, estabelecendo hierarquia de complexidade que fundamenta teoria da NP-completude. Uma redução de problema A para problema B demonstra que B é pelo menos tão difícil quanto A, transformando instâncias de A em instâncias de B preservando soluções.

Formalmente, dizemos que A se reduz polinomialmente a B (A ≤ₚ B) se existe função computável f em tempo polinomial tal que para toda instância x de A, temos x ∈ A se e somente se f(x) ∈ B. Esta transformação permite usar algoritmo para B como subrotina para resolver A, com overhead apenas polinomial na transformação de entrada e saída.

A completude NP caracteriza problemas que são simultaneamente mais difíceis em NP (via reduções) e membros de NP (verificáveis polinomialmente), estabelecendo núcleo de problemas equivalentes em dificuldade. Demonstrar que problema é NP-completo frequentemente justifica uso de aproximação, heurísticas ou métodos alternativos ao invés de buscar algoritmo exato polinomial.

Redução de Clique para Conjunto Independente

Demonstremos equivalência entre dois problemas fundamentais:

Problema Clique:

• Entrada: Grafo G = (V, E), inteiro k

• Questão: Existe clique de tamanho ≥ k?

Problema Conjunto Independente:

• Entrada: Grafo H = (W, F), inteiro j

• Questão: Existe conjunto independente de tamanho ≥ j?

(vértices sem arestas entre si)

Construção da redução:

• Dado G, construir grafo complementar G̅ = (V, E̅)

• E̅ contém aresta (u,v) se e somente se (u,v) ∉ E

• Transformação computável em O(n²) tempo

Correção da redução:

• S é clique em G ↔ S é conjunto independente em G̅

• Se S é clique: todas arestas entre vértices de S em G

→ nenhuma aresta entre vértices de S em G̅

• Recíproca análoga por simetria

Implicações:

• Clique e Conjunto Independente têm mesma dificuldade

• Ambos são NP-completos

• Algoritmo de aproximação para um serve para o outro

Estratégia para Reduções

Para provar NP-dificuldade: escolha problema fonte conhecido como NP-difícil, construa transformação polinomial, prove preservação de soluções, verifique que transformação é computável em tempo polinomial. Reduções bem escolhidas simplificam demonstrações significativamente.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 9
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Limitações de Aproximabilidade

Nem todos os problemas NP-difíceis admitem algoritmos de aproximação com razões constantes, existindo hierarquia de dificuldade mesmo dentro da classe de problemas intratáveis. Resultados de inaproximabilidade estabelecem limitações fundamentais sobre quão bem certos problemas podem ser aproximados em tempo polinomial, assumindo P ≠ NP ou hipóteses mais fortes relacionadas.

O teorema PCP (Probabilistically Checkable Proofs) revolucionou teoria da aproximação ao estabelecer conexões profundas entre verificação probabilística de provas e limitações de aproximabilidade. Consequências incluem resultado de que certos problemas não admitem aproximação dentro de fatores constantes a menos que P = NP, estabelecendo fronteiras precisas entre aproximável e inaproximável.

Problemas como Conjunto Independente Máximo não admitem aproximação polinomial dentro de fator n¹⁻ᵋ para qualquer ε > 0, a menos que P = NP, enquanto outros como Cobertura de Vértices admitem 2-aproximação. Esta dicotomia entre problemas aproximáveis e inaproximáveis orienta pesquisa sobre quais problemas merecem investimento em desenvolvimento de algoritmos de aproximação.

Hierarquia de Aproximabilidade

Classificação de problemas NP-difíceis por aproximabilidade:

Classe APX (Aproximação com razão constante):

• Cobertura de Vértices: 2-aproximação

• Caixeiro-Viajante Métrico: 1,5-aproximação

• Bin Packing: (11/9)-aproximação

Classe PTAS (Esquema de aproximação):

• Knapsack: (1+ε)-aproximação para todo ε > 0

• Problema da Mochila Euclidiano

• Certas variantes de Scheduling

Problemas inaproximáveis (assumindo P ≠ NP):

• Clique Máximo: não aproximável dentro de n¹⁻ᵋ

• Conjunto Independente: mesma limitação

• Coloração de Grafos: não aproximável dentro de n¹⁻ᵋ

Exemplo concreto (Clique):

• Melhor aproximação conhecida: O(n/(log n)²)

• Para n = 1000: razão ≈ 1000/100 = 10

• Solução pode ser 10× menor que ótima

• Nenhum algoritmo polinomial faz muito melhor

Implicações práticas:

• Focar esforços em problemas aproximáveis

• Para inaproximáveis: heurísticas sem garantia ou métodos exatos especializados

Contexto Teórico

Resultados de inaproximabilidade dependem de conjecturas como P ≠ NP. Se P = NP (improvável), todos problemas NP teriam algoritmos polinomiais exatos. Hipóteses mais fortes como Conjectura dos Jogos Únicos permitem resultados mais precisos sobre limitações de aproximação.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 10
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Estrutura e Propriedades de Problemas NP

A análise estrutural de problemas NP-difíceis revela propriedades que influenciam aproximabilidade, como presença de estrutura geométrica, restrições especiais sobre entrada, ou características que permitem decomposição em subproblemas menores. Identificação destas propriedades frequentemente orienta desenvolvimento de algoritmos de aproximação eficientes para classes específicas de instâncias.

Problemas com propriedades métricas, como Caixeiro-Viajante em espaços métricos, frequentemente admitem aproximações melhores que versões gerais devido à desigualdade triangular. Problemas em grafos planares ou com treewidth limitada podem ter complexidade reduzida através de técnicas especializadas que exploram estrutura topológica restrita do espaço de soluções.

A parametrização por complexidade oferece perspectiva alternativa, estudando problemas onde parte da entrada (parâmetro) é pequena, permitindo algoritmos que são exponenciais no parâmetro mas polinomiais no tamanho total da entrada. Esta abordagem complementa aproximação, fornecendo soluções exatas eficientes quando parâmetros relevantes têm valores moderados em aplicações práticas.

Impacto da Estrutura na Aproximabilidade

Comparação entre versões de TSP (Caixeiro-Viajante):

TSP Geral (sem restrições):

• Distâncias arbitrárias d(i,j)

• Não aproximável dentro de qualquer razão constante

• A menos que P = NP

TSP Métrico (desigualdade triangular):

• d(i,k) ≤ d(i,j) + d(j,k) para todos i,j,k

• Algoritmo de Christofides: 1,5-aproximação

• Estrutura métrica permite atalhos válidos

TSP Euclidiano (pontos no plano):

• Distâncias euclidianas d(i,j) = √[(xᵢ-xⱼ)² + (yᵢ-yⱼ)²]

• Admite PTAS: (1+ε)-aproximação para todo ε > 0

• Estrutura geométrica permite decomposição eficiente

Análise do impacto:

• Problema geral: praticamente insolúvel via aproximação

• Com métrica: razão 1,5 garantida

• Com geometria: aproximação arbitrariamente boa

Exemplo numérico (10 cidades):

• Ótimo hipotético: 1000 km

• Christofides métrico: ≤ 1500 km garantido

• PTAS euclidiano (ε=0,01): ≤ 1010 km

• Estrutura permite qualidade dramaticamente melhor

Identificação de Estrutura

Ao enfrentar problema NP-difícil: investigue se instâncias práticas têm estrutura especial (métrica, planar, árvore, etc.). Algoritmos especializados para subclasses estruturadas frequentemente superam algoritmos gerais significativamente, tanto em garantias teóricas quanto performance prática.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 11
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 3: Algoritmos Gulosos de Aproximação

Paradigma Guloso e Aproximação

O paradigma guloso (greedy) constitui estratégia algorítmica fundamental onde decisões localmente ótimas são tomadas em cada passo, esperando que estas escolhas levem a solução globalmente boa. Em contexto de aproximação, algoritmos gulosos frequentemente produzem soluções com razões de aproximação demonstráveis, combinando simplicidade de implementação com garantias teóricas de qualidade.

A análise de algoritmos gulosos para aproximação tipicamente envolve demonstração de que escolhas locais ótimas preservam propriedade de proximidade ao ótimo global, frequentemente através de argumentos de troca (exchange arguments) ou análise de funções potenciais que mensuram progresso em direção à solução. Esta análise requer cuidado pois guloso não garante otimalidade, apenas proximidade mensurável.

Aplicações bem-sucedidas de aproximação gulosa incluem problemas de cobertura, escalonamento, seleção de atividades, e roteamento em redes, onde estrutura do problema permite demonstrar que decisões gulosas não degradam solução além de fator constante do ótimo. Identificação de critério guloso apropriado é desafio central no design destes algoritmos.

Algoritmo Guloso para Set Cover

Problema de cobertura de conjuntos (Set Cover):

Entrada:

• Universo U de n elementos

• Família S = {S₁, S₂, ..., Sₘ} de subconjuntos de U

• Custos c₁, c₂, ..., cₘ associados aos conjuntos

Objetivo:

• Encontrar subfamília C ⊆ S que cobre U

• Minimizar custo total: ∑(Sᵢ ∈ C) cᵢ

Algoritmo guloso:

• Iniciar com C = ∅, R = U (elementos restantes)

• Enquanto R ≠ ∅:

→ Escolher Sᵢ que minimiza cᵢ/|Sᵢ ∩ R|

→ (melhor custo por elemento novo coberto)

→ Adicionar Sᵢ a C

→ Atualizar R = R \ Sᵢ

Análise da aproximação:

• Algoritmo é ln(n)-aproximação

• Para cada elemento x, atribuir custo da iteração em que foi coberto

• Soma de custos atribuídos ≤ OPT · Hₙ

• Onde Hₙ = 1 + 1/2 + ... + 1/n ≈ ln(n)

Exemplo concreto:

• U = {1,2,3,4,5}, todos custos = 1

• S₁ = {1,2,3}, S₂ = {2,4}, S₃ = {3,4,5}

• Guloso: escolhe S₁ (3 elem), depois S₃ (2 novos)

• Custo = 2, ótimo = 2 (mesmo resultado neste caso)

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 12
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Técnicas de Análise para Algoritmos Gulosos

A análise formal de algoritmos gulosos de aproximação emprega técnicas variadas adaptadas à estrutura específica de cada problema, incluindo argumentos de troca que comparam solução gulosa com solução ótima elemento por elemento, análise de funções potenciais que mensuram degradação progressiva, e métodos de primal-dual que relacionam problema com sua formulação de programação linear dual.

Argumentos de troca típicos demonstram que qualquer modificação da solução gulosa que a aproxime do ótimo não melhora qualidade além de fator limitado, estabelecendo cota inferior na razão de aproximação. Funções potenciais permitem análise amortizada onde custo de cada iteração gulosa é comparado com contribuição ao ótimo, acumulando garantias ao longo da execução do algoritmo.

A escolha de critério guloso apropriado é arte que requer intuição sobre estrutura do problema combinada com análise matemática rigorosa. Critérios naturais como "escolher elemento de maior valor" ou "cobrir máximo de novos elementos" nem sempre levam a melhores razões de aproximação, exigindo análise caso a caso para identificar estratégia ótima dentro do paradigma guloso.

Análise do Load Balancing Guloso

Problema de balanceamento de carga:

Configuração:

• m máquinas idênticas

• n tarefas com tempos de processamento t₁, t₂, ..., tₙ

• Objetivo: minimizar makespan (tempo da última tarefa)

Algoritmo guloso (List Scheduling):

• Para cada tarefa j em ordem arbitrária:

→ Atribuir j à máquina com menor carga atual

→ (soma dos tempos das tarefas já atribuídas)

Análise da razão de aproximação:

• Seja Lᵢ a carga da máquina i após algoritmo

• Seja Lₘₐₓ = max{Lᵢ} o makespan da solução

• Seja j a última tarefa atribuída à máquina mais carregada

Cotas no ótimo:

• OPT ≥ maxᵢ{tᵢ} (tarefa mais longa)

• OPT ≥ (∑tᵢ)/m (carga média)

Análise da solução gulosa:

• Antes de atribuir j, máquina tinha carga ≤ (∑tᵢ - tⱼ)/m

• Logo Lₘₐₓ ≤ (∑tᵢ - tⱼ)/m + tⱼ

• = (∑tᵢ)/m + tⱼ(1 - 1/m)

• ≤ OPT + tⱼ ≤ 2·OPT

• Conclusão: algoritmo é 2-aproximação ✓

Refinamento (LPT - Largest Processing Time first):

• Ordenar tarefas por tempo decrescente antes de atribuir

• Melhora razão para (4/3 - 1/(3m))-aproximação

Estratégias de Análise

Para analisar algoritmo guloso: identifique cotas inferiores no ótimo usando propriedades necessárias de qualquer solução, relacione decisão gulosa com estas cotas, use análise por casos quando necessário. Frequentemente, ordenação apropriada da entrada melhora razão de aproximação significativamente.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 13
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Escolha de Critérios Gulosos Eficientes

A seleção do critério guloso apropriado determina fundamentalmente tanto a razão de aproximação quanto a eficiência computacional do algoritmo resultante, exigindo balanceamento entre qualidade da heurística local e complexidade de avaliação de cada escolha. Critérios diferentes para o mesmo problema podem levar a razões de aproximação drasticamente distintas, tornando análise comparativa essencial no design algorítmico.

Critérios comuns incluem seleção por valor absoluto (escolher elemento de maior benefício), seleção por densidade (razão benefício/custo), seleção por cobertura marginal (elementos novos adicionados), e variantes que consideram estado atual da solução parcial. A complexidade computacional de avaliar cada critério deve ser considerada, pois critérios sofisticados podem eliminar vantagem de eficiência do paradigma guloso.

Técnicas de lookahead limitado, onde algoritmo considera consequências de k próximas escolhas ao invés de apenas uma, podem melhorar razões de aproximação ao custo de complexidade aumentada. Esta abordagem interpola entre guloso puro e programação dinâmica, oferecendo trade-offs controláveis entre qualidade e eficiência conforme necessidades específicas da aplicação.

Comparação de Critérios para Knapsack

Problema da mochila (versão fracionária vs. inteira):

Configuração:

• n itens com valores vᵢ e pesos wᵢ

• Capacidade W da mochila

• Maximizar valor total sem exceder W

Critério 1: Maior valor

• Ordenar itens por vᵢ decrescente

• Adicionar itens nesta ordem até capacidade

• Razão de aproximação: sem garantia (pode ser muito ruim)

Critério 2: Menor peso

• Ordenar por wᵢ crescente

• Problema: ignora valores completamente

• Também sem garantia razoável

Critério 3: Densidade de valor

• Ordenar por vᵢ/wᵢ decrescente

• Ótimo para versão fracionária

• Para versão 0-1: 2-aproximação com modificação

Algoritmo melhorado (densidade + melhor item):

• S₁ = solução gulosa por densidade

• S₂ = item individual de maior valor que cabe

• Retornar max{S₁, S₂}

• Garantia: 2-aproximação

Exemplo numérico:

• Item 1: v=100, w=50, densidade=2

• Item 2: v=90, w=30, densidade=3

• Item 3: v=80, w=40, densidade=2

• Capacidade W=70

• Densidade: pega item 2 (90) e item 3 (80) = 170

• Ótimo: item 1 (100) e item 2 (90) = 190

• Razão: 190/170 ≈ 1,12 (melhor que garantia de 2)

Design de Critérios

Ao projetar critério guloso: teste múltiplas opções em instâncias pequenas, analise casos extremos onde critério pode falhar, considere combinações de critérios simples para robustez. Frequentemente, pequenas modificações em critério natural melhoram razão de aproximação significativamente.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 14
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Limites Intrínsecos de Algoritmos Gulosos

Embora algoritmos gulosos ofereçam simplicidade e eficiência atrativas, existem limites fundamentais sobre quais problemas admitem boas aproximações gulosas, com exemplos onde qualquer estratégia gulosa natural produz razões de aproximação ruins. Compreender estas limitações é essencial para saber quando investir em abordagens alternativas como programação linear, programação dinâmica ou métodos meta-heurísticos.

Problemas como Clique Máximo e Conjunto Independente demonstram que abordagens gulosas naturais podem falhar arbitrariamente longe do ótimo, mesmo quando múltiplos critérios gulosos diferentes são experimentados. Nestes casos, estrutura do problema inerentemente resiste a decomposição em decisões locais que preservem qualidade global, requerendo análise mais holística da instância.

A análise de pior caso para algoritmos gulosos frequentemente revela famílias de instâncias adversariais construídas especificamente para fazer escolhas gulosas falharem drasticamente. Estas construções teóricas, embora possam parecer artificiais, demonstram limitações fundamentais que justificam busca por paradigmas alternativos quando aproximação gulosa prova-se insuficiente para requisitos práticos específicos.

Falha de Guloso para Matching

Problema de emparelhamento máximo em grafos:

Problema:

• Dado: Grafo G = (V, E)

• Objetivo: Encontrar maior conjunto M ⊆ E de arestas

sem vértices compartilhados

Algoritmo guloso natural:

• Repetir enquanto existem arestas disponíveis:

→ Selecionar aresta e = (u,v)

→ Adicionar e a M

→ Remover u, v e arestas incidentes

Construção adversarial:

• Grafo: caminho P₅ com 5 vértices

• Vértices: 1-2-3-4-5

• Arestas: (1,2), (2,3), (3,4), (4,5)

Execução gulosa:

• Guloso pode escolher aresta central (2,3)

• Depois não pode adicionar mais nenhuma

• Solução gulosa: 1 aresta

Solução ótima:

• Escolher (1,2) e (4,5)

• Emparelhamento de tamanho 2

• Razão: 2/1 = 2 (distância do ótimo)

Generalização:

• Em caminho de comprimento 2k+1

• Guloso pode obter k, ótimo é k+1

• Razão de aproximação: 2 (não melhor que isso)

Solução melhor (não gulosa):

• Algoritmo de Edmonds (exato, polinomial)

• Ou programação linear + arredondamento

Quando Evitar Guloso

Sinais de que guloso pode ser inadequado: problema requer coordenação global de decisões, escolhas locais têm consequências distantes não-óbvias, instâncias pequenas já mostram performance ruim de múltiplos critérios gulosos. Nestes casos, investir em programação linear ou dinâmica pode ser mais produtivo.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 15
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 4: Razões de Aproximação e Análise

Definições Formais e Framework Teórico

A razão de aproximação constitui métrica central para avaliar qualidade de algoritmos aproximados, quantificando desvio máximo entre solução obtida e solução ótima desconhecida através de análise matemática rigorosa que independe de instâncias específicas. Esta métrica fornece garantia universal de pior caso, essencial para aplicações onde qualidade mínima deve ser assegurada independentemente de características particulares da entrada.

Formalmente, para problema de minimização, dizemos que algoritmo A é α-aproximação se para toda instância I, o custo A(I) da solução obtida satisfaz A(I) ≤ α · OPT(I), onde OPT(I) denota custo da solução ótima. Para maximização, a desigualdade inverte: A(I) ≥ α · OPT(I) com 0 < α ≤ 1. Valores de α próximos de 1 indicam aproximações de alta qualidade, enquanto α distante de 1 sugere degradação significativa.

A análise de razão de aproximação frequentemente envolve técnicas sofisticadas de cotas inferiores no ótimo, construídas através de relaxações, argumentos combinatórios, ou soluções duais de programação linear. Estas cotas permitem comparação entre solução aproximada e referência que, embora não seja necessariamente o ótimo verdadeiro, provê limite que o ótimo não pode violar, suficiente para estabelecer garantia desejada.

Análise Formal de Razão de Aproximação

Demonstração rigorosa para cobertura de vértices:

Algoritmo de emparelhamento:

• Inicializar C = ∅ (cobertura)

• Enquanto existem arestas não cobertas:

→ Selecionar aresta (u,v) não coberta

→ Adicionar ambos u e v a C

→ Marcar arestas incidentes como cobertas

Teorema: Algoritmo é 2-aproximação

Demonstração:

• Seja M conjunto de arestas selecionadas

• |C| = 2|M| (adicionamos 2 vértices por aresta)

• Arestas em M são disjuntas (não compartilham vértices)

• Logo M é um emparelhamento

Cota inferior no ótimo:

• Seja C* cobertura ótima com |C*| = OPT

• Para cada aresta em M, ao menos 1 extremidade ∈ C*

• Como arestas em M são disjuntas, precisamos ≥ |M| vértices

• Logo OPT = |C*| ≥ |M|

Conclusão:

• |C| = 2|M| ≤ 2 · OPT

• Portanto algoritmo é 2-aproximação ✓

Exemplo de instância tight:

• Grafo K₂,₂ (bipartido completo com 2 vértices por lado)

• Ótimo: 2 vértices (um de cada lado)

• Algoritmo pode encontrar: todos 4 vértices

• Razão: 4/2 = 2 (atinge limite da garantia)

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 16
Aproximação Algoritm: Fundamentos, Técnicas e Aplicações

Técnicas Avançadas de Análise

A análise de algoritmos de aproximação emprega arsenal diversificado de técnicas matemáticas adaptadas à estrutura específica de cada problema, incluindo métodos de potencial amortizado, análise probabilística para algoritmos randomizados, dualidade de programação linear, e argumentos combinatórios sofisticados que exploram propriedades estruturais do espaço de soluções.

Funções de potencial atribuem "energia" a estados intermediários do algoritmo, permitindo análise onde custo de cada passo é comparado com mudança no potencial, estabelecendo relação acumulativa entre progresso algorítmico e proximidade ao ótimo. Esta técnica é particularmente poderosa para algoritmos online e incrementais onde decisões são tomadas sequencialmente sem conhecimento completo da entrada.

A análise primal-dual explora relação entre problema de otimização (primal) e seu dual de programação linear, construindo simultaneamente solução primal viável e solução dual que fornece cota inferior no ótimo primal. A diferença controlada entre estes valores estabelece razão de aproximação, frequentemente levando a algoritmos com garantias ótimas ou próximas do ótimo para classes importantes de problemas.

Análise Primal-Dual para Set Cover

Formulação como programa linear:

Programa primal (Set Cover):

• Minimizar: ∑ᵢcᵢxᵢ

• Sujeito a: ∑ᵢ:e∈Sᵢ xᵢ ≥ 1 para todo elemento e

• xᵢ ∈ {0,1}

Programa dual:

• Maximizar: ∑ₑyₑ

• Sujeito a: ∑ₑ∈Sᵢ yₑ ≤ cᵢ para todo conjunto Sᵢ

• yₑ ≥ 0

Algoritmo primal-dual:

• Inicializar todas variáveis duais yₑ = 0

• Para cada elemento e não coberto:

→ Aumentar yₑ até alguma restrição dual ficar tight

→ (∑ₑ∈Sᵢ yₑ = cᵢ para algum Sᵢ)

→ Adicionar Sᵢ à cobertura

Análise da aproximação:

• Seja f = maxₑ |{Sᵢ : e ∈ Sᵢ}| (frequência máxima)

• Custo primal: ∑ᵢ∈C cᵢ

• Valor dual: ∑ₑyₑ

• Para cada Sᵢ selecionado: cᵢ = ∑ₑ∈Sᵢ yₑ

• Custo total: ∑ᵢ∈C ∑ₑ∈Sᵢ yₑ ≤ f · ∑ₑyₑ

• Por dualidade fraca: ∑ₑyₑ ≤ OPT

• Logo: Custo ≤ f · OPT

• Algoritmo é f-aproximação ✓

Para frequência limitada:

• Se cada elemento aparece em ≤ k conjuntos

• Obtemos k-aproximação

Escolha de Técnica de Análise

Para análise de aproximação: use argumentos diretos quando possível (como emparelhamento para cobertura), aplique primal-dual quando problema tem formulação LP natural, considere potencial amortizado para algoritmos incrementais, e use probabilidade quando randomização é empregada. Múltiplas técnicas podem complementar-se.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 17
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Análise Competitiva e Algoritmos Online

A análise competitiva estende conceitos de aproximação para contexto de algoritmos online, onde decisões devem ser tomadas sem conhecimento completo da entrada futura, modelando cenários práticos como escalonamento em tempo real, roteamento dinâmico em redes, e alocação de recursos em sistemas operacionais. A razão competitiva compara performance do algoritmo online com algoritmo offline ótimo que conhece toda entrada antecipadamente.

Formalmente, algoritmo online é c-competitivo se custo em qualquer sequência de requisições é no máximo c vezes o custo do algoritmo offline ótimo que conhece sequência completa. Esta métrica captura penalidade inerente de tomar decisões sem informação futura perfeita, estabelecendo limites fundamentais sobre quão bem problemas online podem ser resolvidos comparados com suas versões offline.

Resultados de impossibilidade demonstram que certos problemas online não admitem algoritmos competitivos com razões constantes, requerendo conhecimento parcial sobre distribuição de entrada ou introdução de randomização para obter garantias não-triviais. Estes resultados negativos orientam design de sistemas práticos, indicando quando investir em previsão, buffering, ou outras estratégias para mitigar limitações fundamentais de processamento online.

Algoritmo de Paging (k-Server)

Problema clássico de gerenciamento de cache:

Configuração:

• Cache com capacidade k páginas

• Sequência de requisições de páginas

• Custo 1 se página não está em cache (page fault)

• Objetivo: Minimizar total de page faults

Estratégia LRU (Least Recently Used):

• Ao ocorrer page fault:

→ Remover página usada há mais tempo

→ Carregar página requisitada

Análise competitiva:

• Teorema: LRU é k-competitivo

• Seja σ sequência de requisições

• Divida σ em fases de k+1 páginas distintas

Demonstração:

• Em cada fase, LRU tem ≤ k faults

• (primeira requisição de cada uma das k páginas novas)

• Algoritmo ótimo tem ≥ 1 fault por fase

• (deve remover ao menos uma página que será requisitada)

• Logo LRU(σ) ≤ k · OPT(σ)

Exemplo concreto (k=2):

• Cache com 2 posições

• Sequência: 1,2,3,1,2,3,1,2,3...

• LRU: fault em toda requisição (pior caso)

• Ótimo (offline): pode manter 1,2 e fazer 1 fault inicial em 3

• Razão: aproxima k conforme sequência cresce

Limitação inferior:

• Qualquer algoritmo determinístico online é ≥ k-competitivo

• Adversário pode forçar esta razão

Randomização em Algoritmos Online

Algoritmos randomizados online frequentemente conseguem razões competitivas melhores contra adversários oblivious (que não conhecem escolhas aleatórias). Para paging, randomização melhora razão de k para aproximadamente 2ln(k), mostrando poder da aleatoriedade em contextos online.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 18
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Instâncias Tight e Limites de Análise

Uma instância tight para algoritmo de aproximação é configuração específica onde razão de aproximação demonstrada é efetivamente atingida, provando que análise não pode ser melhorada sem modificar algoritmo. A construção de instâncias tight é essencial para validar que análise teórica é precisa, distinguindo entre garantias conservadoras e limites reais de performance algorítmica.

A existência de instâncias tight implica que melhorias em razão de aproximação requerem modificações fundamentais no algoritmo, não apenas refinamentos na análise matemática. Inversamente, ausência de instâncias tight conhecidas sugere possibilidade de análise mais refinada que poderia demonstrar garantias melhores para mesmo algoritmo, motivando pesquisa adicional em técnicas analíticas mais sofisticadas.

Famílias parametrizadas de instâncias tight permitem compreensão de como performance degrada com características da entrada, revelando estruturas que causam dificuldade para algoritmo específico. Esta compreensão orienta desenvolvimento de algoritmos híbridos que detectam e tratam casos difíceis com métodos especializados, enquanto usam aproximação simples para instâncias genéricas.

Construção Tight para Load Balancing

Instância onde List Scheduling atinge razão 2:

Configuração:

• m = 2 máquinas

• n = m+1 = 3 tarefas

• Tempos: t₁ = t₂ = 1, t₃ = 2

Execução do algoritmo:

• Atribuir tarefas na ordem apresentada

• Passo 1: Tarefa 1 → Máquina 1 (carga = 1)

• Passo 2: Tarefa 2 → Máquina 2 (carga = 1)

• Passo 3: Tarefa 3 → Máquina 1 (menor carga)

• Resultado: Máquina 1 tem carga 3, Máquina 2 tem carga 1

• Makespan = 3

Solução ótima:

• Atribuir tarefa 3 sozinha a uma máquina

• Atribuir tarefas 1 e 2 à outra máquina

• Ambas máquinas têm carga 2

• Makespan ótimo = 2

Análise da razão:

• ALG/OPT = 3/2 = 1,5

• Nossa análise teórica garante ≤ 2

• Esta não é instância tight para razão 2

Instância tight verdadeira:

• m máquinas, m(m-1) tarefas de tempo 1

• Seguidas de m tarefas de tempo m

• List Scheduling: makespan = 2m-1

• Ótimo: makespan = m

• Razão: (2m-1)/m → 2 quando m → ∞

• Prova que análise de 2-aproximação é tight ✓

Construção de Instâncias Tight

Para encontrar instâncias tight: analise cuidadosamente demonstração de razão de aproximação, identifique onde desigualdades podem tornar-se igualdades, construa entrada que força estas condições extremas simultaneamente. Instâncias tight frequentemente têm estrutura simétrica ou altamente regular.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 19
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Análise Probabilística de Algoritmos Aproximados

Algoritmos de aproximação randomizados empregam aleatoriedade para obter garantias esperadas ou com alta probabilidade, frequentemente conseguindo razões de aproximação melhores que versões determinísticas através de decisões aleatórias que evitam casos patológicos. A análise probabilística requer técnicas de teoria da probabilidade como desigualdades de concentração, método probabilístico, e análise de variáveis aleatórias dependentes.

A expectativa linear e desigualdade de Markov fornecem ferramentas básicas para análise de algoritmos randomizados simples, enquanto desigualdades de Chernoff e Azuma permitem garantias mais refinadas sobre desvio de valor esperado. Estas técnicas estabelecem que com alta probabilidade (tipicamente 1 - 1/n para instância de tamanho n), algoritmo produz solução dentro de razão desejada do ótimo.

O método de derandomização transforma algoritmos randomizados em determinísticos mantendo garantias, através de técnicas como escolha de sementes apropriadas, expectativas condicionais, ou programação dinâmica sobre escolhas aleatórias. Esta transformação é valiosa quando aleatoriedade apresenta desafios práticos de implementação ou quando garantias determinísticas são requeridas para aplicação específica.

MAX-CUT Randomizado

Problema de corte máximo em grafos:

Problema:

• Dado: Grafo G = (V, E) não direcionado

• Objetivo: Particionar V em S e T maximizando

número de arestas entre S e T

Algoritmo randomizado simples:

• Para cada vértice v:

→ Com probabilidade 1/2, colocar v em S

→ Caso contrário, colocar v em T

Análise do valor esperado:

• Para aresta e = (u,v):

• P[e no corte] = P[u ∈ S e v ∈ T] + P[u ∈ T e v ∈ S]

• = (1/2)(1/2) + (1/2)(1/2) = 1/2

• Por linearidade da expectativa:

• E[|corte|] = ∑ₑ P[e no corte] = |E|/2

Cota no ótimo:

• OPT ≤ |E| (no máximo todas as arestas)

• Logo E[ALG] = |E|/2 ≥ OPT/2

• Algoritmo é 2-aproximação em expectativa ✓

Garantia com alta probabilidade:

• Usando desigualdade de Chernoff:

• Com probabilidade ≥ 1 - 1/n:

• |corte| ≥ |E|/2 - O(√(|E| log n))

Derandomização:

• Técnica de expectativa condicional:

• Decisões podem ser tomadas deterministicamente

• Mantendo garantia de |E|/2

Exemplo concreto:

• Grafo triangular: 3 vértices, 3 arestas

• Ótimo: 2 arestas no corte

• Algoritmo em expectativa: 3/2 = 1,5 arestas

• Razão: 2/1,5 ≈ 1,33 (melhor em média que pior caso)

Trade-offs de Randomização

Algoritmos randomizados oferecem simplicidade e frequentemente melhores garantias em expectativa, mas requerem geração de números aleatórios e análise probabilística mais sofisticada. Para aplicações críticas, derandomização ou amplificação de probabilidade podem ser necessárias para garantias determinísticas ou mais fortes.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 20
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Melhorias Incrementais e Busca Local

Algoritmos de busca local partem de solução inicial viável e iterativamente aplicam modificações locais que melhoram qualidade, continuando até atingir ótimo local onde nenhuma modificação na vizinhança melhora solução. Esta abordagem complementa métodos construtivos como guloso, permitindo refinamento de soluções através de ajustes pós-processamento que podem melhorar significativamente qualidade prática mantendo eficiência computacional.

A análise de algoritmos de busca local frequentemente envolve caracterização de vizinhança de soluções e demonstração de que ótimos locais têm qualidade garantida relativamente ao ótimo global. Técnicas como troca de k elementos, movimentos de realocação, ou transformações baseadas em estrutura específica do problema definem diferentes noções de vizinhança, cada uma com trade-offs entre qualidade de ótimos locais e custo computacional de exploração.

Meta-heurísticas como simulated annealing, busca tabu, e algoritmos genéticos estendem busca local básica permitindo movimentos temporários que pioram solução para escapar de ótimos locais ruins, explorando mais extensivamente espaço de soluções ao custo de perder garantias teóricas estritas. Estes métodos são valiosos para problemas onde aproximação com garantias é insuficiente e exploração mais profunda é computacionalmente viável.

Busca Local para MAX-CUT

Algoritmo de melhoria iterativa:

Algoritmo flip (troca de lado):

• Começar com partição arbitrária (S, T)

• Repetir enquanto existir melhoria:

→ Para cada vértice v:

→ Calcular ganho de mover v para outro lado

→ Se ganho > 0, fazer a troca

• Parar quando nenhuma troca melhora

Análise do ótimo local:

• Seja (S*, T*) ótimo local

• Para cada v ∈ S*:

→ |arestas de v para T*| ≥ |arestas de v para S*|

→ (senão trocar melhoraria)

• Somando sobre todos vértices:

→ 2 · |corte| ≥ |E|

→ |corte| ≥ |E|/2

• Logo ótimo local é 2-aproximação ✓

Complexidade:

• Cada troca aumenta corte em ≥ 1

• Máximo |E| trocas

• Cada iteração: O(n·m) tempo

• Total: O(n·m·|E|) = O(nm²)

Melhorias práticas:

• Começar com solução randomizada ou gulosa

• Usar estruturas de dados para trocas eficientes

• Limitar número de iterações para grandes instâncias

Variante: k-opt

• Considerar trocar k vértices simultaneamente

• Melhores ótimos locais mas custo O(nᵏ) por iteração

• Trade-off entre qualidade e eficiência

Design de Vizinhança

Ao projetar busca local: defina vizinhança que permita exploração eficiente mas rica o suficiente para encontrar bons ótimos locais, considere múltiplos tipos de movimentos se um não for suficiente, analise ótimos locais teoricamente quando possível para garantias, e combine com construção gulosa ou randomizada para ponto de partida.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 21
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 5: Cobertura de Vértices e Conjuntos

Problema de Cobertura de Vértices

O problema de cobertura de vértices (Vertex Cover) representa um dos problemas fundamentais em teoria de grafos e otimização combinatória, servindo como caso de estudo canônico para desenvolvimento e análise de algoritmos de aproximação. O objetivo consiste em encontrar menor conjunto de vértices tal que toda aresta do grafo tenha pelo menos uma extremidade no conjunto, minimizando cardinalidade ou peso total quando vértices têm custos associados.

Este problema é NP-completo mesmo para grafos bipartidos e não admite aproximação melhor que 1,36 assumindo conjectura de Unique Games, enquanto algoritmos simples atingem 2-aproximação. O gap entre limite inferior de inaproximabilidade e melhor algoritmo conhecido representa questão aberta fundamental em teoria da aproximação, motivando pesquisa contínua sobre técnicas avançadas e casos especiais com melhores garantias.

Aplicações práticas incluem monitoramento de redes onde vértices representam pontos de vigilância e arestas conexões a proteger, seleção de sensores em redes de monitoramento, problemas de escalonamento onde tarefas conflitantes requerem recursos dedicados, e bioinformática onde modelam interações entre proteínas que devem ser cobertas por conjunto mínimo de alvos terapêuticos.

Aplicação em Monitoramento de Rede

Contexto prático de segurança de rede:

Cenário:

• Rede de computadores com n máquinas

• Conexões diretas entre pares de máquinas

• Instalar monitores de segurança em algumas máquinas

• Monitor detecta ataques em conexões incidentes

Modelagem:

• Vértices = máquinas

• Arestas = conexões diretas

• Cobertura de vértices = conjunto de máquinas com monitores

• tal que toda conexão é monitorada

Instância exemplo (5 máquinas):

• Conexões: (1,2), (2,3), (3,4), (4,5), (5,1), (2,4)

• Grafo forma ciclo com uma corda

Solução ótima:

• Escolher máquinas {2, 4}

• Todas 6 conexões têm ao menos uma extremidade em {2,4}

• Tamanho ótimo = 2 monitores

Algoritmo 2-aproximação:

• Selecionar aresta (1,2): adicionar 1 e 2

• Selecionar aresta (3,4): adicionar 3 e 4

• Solução: {1,2,3,4} = 4 monitores

• Razão: 4/2 = 2 (dentro da garantia)

Análise de custo:

• Custo por monitor: R$ 10.000

• Ótimo: R$ 20.000

• Aproximação: R$ 40.000

• Economia versus cobertura total: R$ 10.000 (50%)

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 22
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Cobertura de Vértices Ponderada

A extensão ponderada do problema de cobertura de vértices introduz custos não uniformes wᵢ associados a cada vértice, tornando objetivo minimização do peso total da cobertura ao invés de cardinalidade. Esta generalização modela cenários práticos onde recursos têm custos variados, como instalação de equipamentos com preços diferentes ou alocação de pessoal com salários distintos.

Algoritmos baseados em emparelhamento não se generalizam diretamente para caso ponderado, requerendo técnicas mais sofisticadas como programação linear e arredondamento, ou método primal-dual que constrói simultaneamente solução viável e certificado de qualidade através de variáveis duais. Estas abordagens mantêm 2-aproximação mesmo com pesos arbitrários, demonstrando robustez das técnicas desenvolvidas.

A formulação como programa linear inteiro permite relaxação para programa linear contínuo cujo ótimo fornece cota inferior no ótimo inteiro, enquanto arredondamento de solução fracionária para solução inteira viável produz algoritmo de aproximação com análise baseada em relação entre soluções fracionária e inteira através de desigualdades apropriadas sobre variáveis arredondadas.

Algoritmo Primal-Dual Ponderado

Método para cobertura de vértices com pesos:

Formulação LP:

• Minimizar: ∑ᵢwᵢxᵢ

• Sujeito a: xᵢ + xⱼ ≥ 1 para toda aresta (i,j)

• xᵢ ≥ 0

Programa dual:

• Maximizar: ∑ₑyₑ

• Sujeito a: ∑ₑ:i∈e yₑ ≤ wᵢ para todo vértice i

• yₑ ≥ 0

Algoritmo primal-dual:

• Inicializar C = ∅, yₑ = 0 para todas arestas

• Para cada aresta e = (i,j) não coberta:

→ Aumentar yₑ até restrição dual ficar tight

→ min{wᵢ - ∑ₑ':i∈e' yₑ', wⱼ - ∑ₑ':j∈e' yₑ'}

→ Se restrição de i fica tight, adicionar i a C

→ Se restrição de j fica tight, adicionar j a C

Análise da aproximação:

• Para cada vértice i ∈ C: ∑ₑ:i∈e yₑ = wᵢ

• Custo primal: ∑ᵢ∈C wᵢ = ∑ᵢ∈C ∑ₑ:i∈e yₑ

• Cada aresta contribui para ≤ 2 vértices em C

• Logo: ∑ᵢ∈C wᵢ ≤ 2∑ₑ yₑ

• Por dualidade fraca: ∑ₑ yₑ ≤ OPT

• Conclusão: custo ≤ 2·OPT ✓

Exemplo concreto:

• Grafo: triângulo com vértices 1,2,3

• Pesos: w₁ = 10, w₂ = 5, w₃ = 5

• Arestas: (1,2), (2,3), (3,1)

• Algoritmo: seleciona vértices 2 e 3

• Custo = 10

• Ótimo = 10 (mesma solução)

Implementação Eficiente

Para implementar primal-dual eficientemente: mantenha para cada vértice slack atual (folga na restrição dual), atualize slacks incrementalmente conforme yₑ aumenta, use fila de prioridade para identificar rapidamente vértices que atingem tight. Complexidade pode ser O(m log n) com estruturas apropriadas.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 23
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Problema de Cobertura de Conjuntos

O problema de cobertura de conjuntos (Set Cover) generaliza cobertura de vértices para configuração onde elementos de universo U devem ser cobertos por subfamília de conjuntos S, cada um com custo associado, minimizando custo total. Esta formulação abstrata captura inúmeros problemas práticos em logística, telecomunicações, biologia computacional e ciência de dados onde recursos devem cobrir demandas de forma econômica.

O algoritmo guloso que iterativamente seleciona conjunto com melhor razão custo-efetividade (custo dividido por número de elementos novos cobertos) atinge razão de aproximação logarítmica ln(n) + 1, onde n é cardinalidade do universo. Esta garantia é essencialmente ótima pois resultado de inaproximabilidade estabelece que melhorias requerem hipóteses computacionais improváveis, demonstrando limite intrínseco do paradigma guloso para este problema.

Aplicações incluem seleção de locais para instalações que servem clientes (facility location), escolha de representantes em comitês que cobrem especialidades necessárias, design de experimentos científicos que testam hipóteses, e compressão de dados onde padrões frequentes cobrem observações. A ubiquidade do problema motiva pesquisa contínua sobre heurísticas práticas e casos especiais com melhores garantias.

Análise Detalhada do Algoritmo Guloso

Demonstração da razão ln(n) para Set Cover:

Algoritmo guloso com análise:

• C = ∅, R = U (elementos restantes)

• Enquanto R ≠ ∅:

→ S* = arg minₛ c(S)/|S ∩ R|

→ C = C ∪ {S*}

→ R = R \ S*

Análise via precificação:

• Para cada elemento x, definir preço p(x)

• p(x) = custo por elemento quando x foi coberto

• Seja kᵢ número de elementos novos na iteração i

• Cada elemento nesta iteração paga cᵢ/kᵢ

Cota superior no custo total:

• ∑p(x) = custo do algoritmo guloso

• Seja S conjunto ótimo com t elementos

• Na iteração i, ao menos um conjunto S cobre ≥ |R|/|OPT| elementos

• (pelo menos |R|/|OPT| elementos de R estão em algum S ∈ OPT)

Recorrência sobre elementos restantes:

• Seja rᵢ = |R| após iteração i

• r₀ = n

• rᵢ₊₁ ≤ rᵢ(1 - 1/|OPT|) ≤ rᵢ · e⁻¹/|OPT|

Soma total de preços:

• ∑p(x) ≤ OPT · (1 + 1/2 + ... + 1/n)

• = OPT · Hₙ

• onde Hₙ ≈ ln(n) + γ ≈ ln(n) + 0,577

Exemplo numérico (n=100):

• ln(100) ≈ 4,6

• Se OPT = 10, algoritmo garante ≤ 46

• Prática típica: 15-25 (melhor que pior caso)

Limites de Inaproximabilidade

Resultados teóricos mostram que Set Cover não admite aproximação melhor que c · ln(n) para constante c, assumindo P ≠ NP. Isso significa que razão logarítmica do algoritmo guloso é essencialmente melhor possível em tempo polinomial, justificando seu uso prático apesar da garantia aparentemente fraca.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 24
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Hitting Set e Problemas Relacionados

O problema Hitting Set representa dual de Set Cover onde objetivo é selecionar elementos mínimos de universo tal que cada conjunto de família dada contenha ao menos um elemento selecionado. Esta dualidade permite tradução direta entre problemas, com algoritmos e análises transferindo-se mediante inversão de papéis entre elementos e conjuntos, demonstrando simetria fundamental na estrutura dos problemas de cobertura.

Quando conjuntos têm cardinalidade limitada por constante k (cada conjunto tem no máximo k elementos), problema admite k-aproximação simples via algoritmo guloso que seleciona elemento aparecendo em mais conjuntos não cobertos. Esta restrição estrutural melhora drasticamente aproximabilidade comparada com caso geral, ilustrando como propriedades da entrada influenciam dificuldade de aproximação.

Aplicações incluem teste de software onde casos de teste (elementos) devem detectar bugs potenciais (conjuntos), seleção de vacinas que cobrem variantes virais, escolha de perguntas em questionários que discriminam entre diagnósticos possíveis, e problemas em robótica onde configurações de sensores devem observar regiões críticas do ambiente.

Hitting Set com Cardinalidade Limitada

Caso especial com garantia melhorada:

Problema k-Hitting Set:

• Universo U de elementos

• Família F de subconjuntos com |S| ≤ k para todo S ∈ F

• Encontrar H ⊆ U mínimo tal que H ∩ S ≠ ∅ para todo S ∈ F

Algoritmo guloso simples:

• H = ∅, F' = F

• Enquanto F' ≠ ∅:

→ x = elemento que aparece em mais conjuntos de F'

→ H = H ∪ {x}

→ F' = {S ∈ F' : x ∉ S}

Análise da aproximação:

• Cada elemento do ótimo cobre ≤ k conjuntos

• Logo OPT ≥ |F|/k

• Algoritmo seleciona elemento cobrindo ≥ |F'|/|OPT|

• (média: |F'| conjuntos / OPT elementos)

• Análise similar a Set Cover dá k-aproximação

Caso k = 2 (pares):

• Hitting Set em pares equivale a Vertex Cover

• Elementos = vértices, pares = arestas

• 2-aproximação já conhecida se aplica

Exemplo concreto (k=3):

• U = {1,2,3,4,5}

• F = {{1,2,3}, {2,3,4}, {3,4,5}, {1,4,5}}

• Elemento 3 aparece em 3 conjuntos

• Elemento 4 aparece em 3 conjuntos

• Guloso: seleciona 3, depois 4

• H = {3,4}, |H| = 2

• Ótimo: {3,4} ou {2,5} ou outros, também = 2

• Razão = 1 (ótimo neste caso)

Exploração de Estrutura

Quando problema de cobertura tem estrutura especial (cardinalidade limitada, intersecções restritas, propriedades geométricas), busque algoritmos especializados que exploram estas propriedades para melhores garantias. Literatura contém resultados para muitas classes estruturadas importantes em aplicações.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 25
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Técnicas de Redução e Pré-processamento

Técnicas de redução identificam componentes da entrada que podem ser processados independentemente ou simplificados antes de aplicar algoritmo principal, frequentemente reduzindo drasticamente tamanho efetivo da instância sem perder qualidade de aproximação. Estas técnicas incluem identificação de soluções forçadas (elementos que devem estar em qualquer solução ótima), eliminação de redundâncias, e decomposição em subproblemas independentes menores.

Regras de dominância estabelecem quando um elemento pode ser substituído por outro sem piorar solução, permitindo simplificações que preservam otimalidade ou aproximação. Para cobertura, se conjunto S contém conjunto T e tem custo menor, T pode ser removido pois S domina T em qualquer contexto. Aplicação exaustiva de regras de dominância pode reduzir instâncias massivas a núcleos pequenos tratáveis.

Kernelização, técnica de complexidade parametrizada, reduz instância a núcleo de tamanho limitado por função do parâmetro em tempo polinomial, garantindo que instâncias grandes com parâmetro pequeno sejam eficientemente reduzidas a casos tratáveis. Combinação de kernelização com aproximação oferece abordagens híbridas que balanceiam eficiência e qualidade conforme características específicas das instâncias encontradas na prática.

Regras de Redução para Vertex Cover

Pré-processamento eficiente de instâncias:

Regra 1: Vértices de grau 0

• Se vértice v não tem arestas, remover v

• v nunca precisa estar na cobertura

Regra 2: Vértices de grau 1

• Se v tem grau 1, conectado apenas a u:

→ Incluir u na cobertura (cobre aresta)

→ Remover u e todas arestas incidentes

→ Sempre melhor escolher u que v

Regra 3: Vértices de grau 2 em caminho

• Se v tem exatamente 2 vizinhos u e w:

• E (u,w) não é aresta (caminho):

→ Substituir u-v-w por aresta (u,w)

→ Solução para grafo reduzido dá solução para original

Regra 4: Vértices dominados

• Se N[u] ⊆ N[v] (vizinhança fechada):

→ Remover u (v domina u)

→ Toda cobertura com u pode usar v no lugar

Exemplo de aplicação:

• Grafo inicial: caminho 1-2-3-4-5-6

• Aplicar Regra 2 em vértices 1 e 6:

→ Adicionar 2 e 5 à cobertura

→ Grafo reduz a vértice isolado 3

• Aplicar Regra 1: remover 3

• Cobertura final: {2,5}

• Verificação: cobre (1,2), (2,3), (3,4), (4,5), (5,6) ✓

Impacto prático:

• Grafos reais frequentemente reduzem 50-90%

• Pré-processamento O(n+m) linear

• Núcleo restante tratado com algoritmo de aproximação

Combinação de Técnicas

Na prática, combinar redução extensiva com algoritmo de aproximação no núcleo residual frequentemente supera aplicar algoritmo diretamente na instância original. Investir tempo polinomial em pré-processamento pode reduzir drasticamente tamanho do problema que algoritmo principal enfrenta.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 26
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Decomposição e Problemas Independentes

A decomposição de instâncias em componentes independentes permite solução separada de subproblemas cujas soluções podem ser combinadas diretamente para formar solução do problema original, frequentemente resultando em eficiência dramática quando estrutura de independência existe. Para grafos, componentes conexas representam decomposição natural onde cobertura de vértices pode ser computada independentemente em cada componente.

Decomposições mais sofisticadas baseadas em separadores mínimos, tree decomposition, ou estruturas hierárquicas exploram propriedades topológicas para dividir e conquistar problemas complexos. Quando largura da decomposição é limitada, algoritmos de programação dinâmica em árvores de decomposição podem resolver problemas NP-difíceis exatamente em tempo polinomial no tamanho da instância.

A análise de algoritmos de aproximação em instâncias decompostas frequentemente mostra que razões de aproximação se preservam ou melhoram quando subproblemas são resolvidos independentemente e soluções combinadas aditivamente ou multiplicativamente conforme estrutura do problema. Esta propriedade permite paralelização natural onde diferentes componentes são processados simultaneamente em arquiteturas distribuídas.

Decomposição para Paralelização

Aproveitamento de componentes conexas:

Algoritmo distribuído:

• Identificar componentes conexas do grafo

• Para cada componente Cᵢ em paralelo:

→ Aplicar algoritmo de 2-aproximação

→ Obter cobertura Sᵢ para Cᵢ

• Combinar: S = ∪ᵢSᵢ

Preservação da razão:

• OPT(G) = ∑ᵢ OPT(Cᵢ)

• |Sᵢ| ≤ 2·OPT(Cᵢ) para cada componente

• |S| = ∑ᵢ|Sᵢ| ≤ ∑ᵢ 2·OPT(Cᵢ) = 2·OPT(G)

• Razão 2 preservada ✓

Exemplo com 3 componentes:

• C₁: triângulo (3 vértices, 3 arestas)

• C₂: estrela com 4 pontas (5 vértices)

• C₃: caminho de comprimento 4 (5 vértices)

Soluções independentes:

• S₁ = {v₁,v₂} (2 vértices do triângulo)

• S₂ = {centro} (1 vértice central da estrela)

• S₃ = {v₂,v₄} (2 vértices alternados do caminho)

• Total: |S| = 5

Ótimo global:

• OPT₁ = 2, OPT₂ = 1, OPT₃ = 2

• OPT(G) = 5

• Razão: 5/5 = 1 (ótimo neste caso)

Ganho computacional:

• Processamento em paralelo com p processadores

• Speedup próximo de p quando componentes balanceadas

Identificação de Estrutura

Sempre procure por estrutura de independência antes de aplicar algoritmos: componentes conexas em grafos, blocos independentes em matrizes, subproblemas disjuntos em otimização. Ferramentas como DFS ou BFS identificam componentes em tempo linear, investimento que frequentemente compensa através de simplificação do problema restante.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 27
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 6: Caixeiro-Viajante e Heurísticas

O Problema do Caixeiro-Viajante

O problema do caixeiro-viajante (Traveling Salesman Problem - TSP) representa um dos problemas mais estudados e aplicados em otimização combinatória, consistindo em encontrar ciclo hamiltoniano de custo mínimo que visita todos vértices de grafo ponderado exatamente uma vez. Sua simplicidade de enunciado contrasta com dificuldade computacional: versão geral é NP-difícil e não admite aproximação com razão constante a menos que P = NP.

A distinção entre TSP geral e TSP métrico (onde distâncias satisfazem desigualdade triangular) é fundamental para aproximabilidade. Enquanto versão geral resiste a aproximação polinomial com qualquer razão constante, versão métrica admite algoritmos como o de Christofides com garantia 1,5-aproximação, demonstrando impacto dramático de estrutura adicional sobre tratabilidade por aproximação.

Aplicações práticas incluem roteamento de veículos de entrega, perfuração de placas de circuito impresso, sequenciamento de DNA, planejamento de rotas turísticas, e escalonamento de tarefas com custos de troca. A ubiquidade e importância econômica do problema motivam desenvolvimento contínuo de heurísticas sofisticadas que, embora sem garantias teóricas, produzem soluções excelentes para instâncias reais de grande porte.

Aplicação em Logística Urbana

Cenário realista de entrega:

Contexto:

• Empresa de entregas em cidade

• 20 pontos de entrega diários

• Distâncias entre pontos via malha viária

• Objetivo: rota mínima partindo e retornando ao depósito

Modelagem como TSP:

• Vértices: depósito + 20 pontos de entrega

• Arestas: conexões com distâncias reais

• Desigualdade triangular válida (malha viária)

Dimensão do problema:

• 21 pontos → 20!/2 ≈ 10¹⁸ rotas possíveis

• Enumeração completa inviável

• Necessidade de aproximação ou heurística

Estratégias aplicáveis:

• Christofides: 1,5-aproximação em O(n³)

• Garantia: rota ≤ 1,5 × ótima

• Se ótima = 100 km, garante ≤ 150 km

Heurísticas práticas:

• Lin-Kernighan: sem garantia, mas excelente na prática

• Tipicamente 1-5% acima do ótimo

• Para ótimo = 100 km, encontra ~102 km

Impacto econômico:

• Economia de 10 km/dia a R$ 5/km

• Economia mensal: R$ 1.500 por veículo

• Frota de 50 veículos: R$ 75.000/mês

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 28
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Algoritmo de Christofides

O algoritmo de Christofides, proposto em 1976, representa marco fundamental em aproximação para TSP métrico, estabelecendo primeira e até hoje melhor razão de aproximação constante conhecida de 1,5 para este problema clássico. A elegância do algoritmo reside em combinação engenhosa de árvore geradora mínima, emparelhamento de peso mínimo, e ciclo euleriano para construir tour hamiltoniano com garantia demonstrável de qualidade.

A construção procede em etapas: primeiro computa árvore geradora mínima que fornece limite inferior no custo ótimo do tour; depois identifica vértices de grau ímpar nesta árvore e computa emparelhamento perfeito de peso mínimo entre eles; combina aresta da árvore com emparelhamento para formar multigrafo euleriano; encontra ciclo euleriano e transforma em tour hamiltoniano usando atalhos via desigualdade triangular.

A análise demonstra que custo final é no máximo 1,5 vezes o ótimo através de cotas cuidadosas sobre contribuições da árvore geradora e do emparelhamento, explorando propriedades estruturais de grafos eulerianos e limitações combinatórias sobre número de vértices de grau ímpar. Apesar de décadas de pesquisa, nenhum algoritmo polinomial com razão melhor que 1,5 foi encontrado, sugerindo possível otimalidade desta abordagem.

Execução Detalhada de Christofides

Aplicação passo a passo do algoritmo:

Instância exemplo:

• 6 cidades no plano euclidiano

• Coordenadas: A(0,0), B(1,0), C(2,0), D(2,1), E(1,1), F(0,1)

• Distâncias euclidianas (métrica válida)

Passo 1: Árvore geradora mínima

• Usar Kruskal ou Prim

• MST encontrada: A-B, B-C, C-D, D-E, E-F

• Custo MST = 1 + 1 + 1 + 1 + 1 = 5

• Estrutura: caminho conectando todas cidades

Passo 2: Identificar vértices de grau ímpar

• Graus na MST: A=1, B=2, C=2, D=2, E=2, F=1

• Vértices ímpares: V_odd = {A, F}

• Propriedade: sempre número par de vértices ímpares

Passo 3: Emparelhamento mínimo

• Entre vértices em V_odd

• Apenas 2 vértices: emparecer A com F

• Distância d(A,F) = 1

• Custo emparelhamento = 1

Passo 4: Multigrafo euleriano

• Combinar MST + emparelhamento

• Arestas: A-B, B-C, C-D, D-E, E-F, F-A

• Todos vértices agora têm grau par

• Grafo é euleriano (possui ciclo euleriano)

Passo 5: Tour hamiltoniano

• Ciclo euleriano: A-B-C-D-E-F-A

• Já é hamiltoniano (sem repetições)

• Custo tour = 6

Análise da solução:

• Tour ótimo neste caso: A-B-C-D-E-F-A = 6

• Christofides encontrou ótimo!

• Razão: 6/6 = 1 (melhor que garantia de 1,5)

Implementação Prática

Para implementar Christofides eficientemente: use algoritmo de Prim com heap de Fibonacci para MST em O(m + n log n), algoritmo de Edmonds para emparelhamento em O(n³), algoritmo de Hierholzer para ciclo euleriano em O(m). Complexidade total dominada por emparelhamento: O(n³).

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 29
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Heurísticas Práticas para TSP

Enquanto algoritmo de Christofides fornece garantia teórica de 1,5-aproximação, heurísticas práticas frequentemente produzem soluções significativamente melhores sem garantias formais, sendo preferidas em aplicações reais onde qualidade média importa mais que pior caso garantido. Estas heurísticas incluem métodos construtivos como vizinho mais próximo e inserção, além de métodos de melhoria local como 2-opt e Lin-Kernighan.

O vizinho mais próximo constrói tour iterativamente adicionando sempre cidade não visitada mais próxima da última inserida, produzindo soluções rapidamente em O(n²) mas com qualidade variável. A heurística de inserção mais barata adiciona cidades uma por uma na posição que menos aumenta custo total do tour parcial, geralmente produzindo tours melhores que vizinho mais próximo ao custo de complexidade O(n²) para cada inserção.

Métodos de melhoria local como 2-opt e k-opt removem k arestas do tour e reconectam de forma diferente, aceitando mudança se reduz custo total. Lin-Kernighan representa refinamento sofisticado onde k varia dinamicamente, produzindo consistentemente tours dentro de 1-5% do ótimo para instâncias típicas. Meta-heurísticas como algoritmos genéticos e simulated annealing combinam múltiplas estratégias para exploração mais profunda do espaço de soluções.

Comparação de Heurísticas

Análise experimental em instância benchmark:

Instância TSPLIB: att48

• 48 cidades dos EUA

• Distâncias pseudo-euclidianas

• Ótimo conhecido: 10.628 unidades

Vizinho mais próximo:

• Tempo: 0,001 segundos

• Solução: 13.891 unidades

• Excesso sobre ótimo: 30,7%

• Razão: 1,307

Inserção mais barata:

• Tempo: 0,005 segundos

• Solução: 12.245 unidades

• Excesso: 15,2%

• Razão: 1,152

Christofides:

• Tempo: 0,05 segundos

• Solução: 11.956 unidades

• Excesso: 12,5%

• Razão: 1,125 (melhor que garantia de 1,5)

2-opt após inserção:

• Tempo: 0,1 segundos

• Solução: 10.891 unidades

• Excesso: 2,5%

• Razão: 1,025

Lin-Kernighan:

• Tempo: 1 segundo

• Solução: 10.645 unidades

• Excesso: 0,16%

• Razão: 1,0016 (quase ótimo!)

Análise comparativa:

• Trade-off tempo vs. qualidade evidente

• Heurísticas simples para aplicações em tempo real

• Lin-Kernighan para otimização offline quando qualidade é crítica

• Christofides oferece compromisso com garantia teórica

Seleção de Heurística

Escolha de heurística depende de requisitos específicos: use vizinho mais próximo ou inserção quando tempo é extremamente limitado, Christofides quando garantia teórica é importante, e Lin-Kernighan ou meta-heurísticas quando qualidade é prioridade e tempo suficiente está disponível. Para instâncias grandes (milhares de cidades), apenas heurísticas mais simples são viáveis.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 30
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

TSP Euclidiano e Esquemas de Aproximação

O TSP euclidiano, onde cidades são pontos no plano com distâncias euclidianas, admite esquemas de aproximação polinomial (PTAS) que para qualquer ε > 0 produzem solução (1+ε)-aproximada em tempo polinomial no tamanho da entrada (embora exponencial em 1/ε). Esta propriedade distingue fundamentalmente TSP euclidiano de versões mais gerais, demonstrando poder de estrutura geométrica para tratabilidade por aproximação.

O esquema de Arora e Mitchell decompõe plano em quadrados recursivamente, construindo estrutura de "portal" que limita onde tours podem cruzar fronteiras entre quadrados. Programação dinâmica sobre esta estrutura computa tour ótimo entre configurações válidas de portais, com análise demonstrando que tour globalmente ótimo pode ser aproximado por tour respeitando restrições de portais com degradação controlada por densidade de portais.

A complexidade do PTAS é O(n · (log n)^O(1/ε)), polinomial em n mas com dependência super-polinomial em 1/ε, tornando algoritmo prático apenas para valores moderados de ε como 0,1 ou 0,05. Para valores muito pequenos de ε requerendo precisão extrema, até mesmo PTAS torna-se inviável, motivando uso de heurísticas sem garantias mas extremamente eficientes na prática.

Análise do PTAS Euclidiano

Comportamento do esquema de aproximação:

Instância: 100 cidades no quadrado unitário

• Tour ótimo: comprimento L* (desconhecido)

• Estimativa: L* ≈ √100 ≈ 10 unidades (heurística)

Execução com ε = 0,1 (10% de erro):

• Número de portais: O(1/ε) ≈ 10 por lado

• Número de subproblemas: (n·k)^O(k) onde k=O(1/ε)

• Tempo computacional: ~5 segundos

• Solução encontrada: ≤ 1,1·L*

• Garantia: no máximo 10% acima do ótimo

Execução com ε = 0,01 (1% de erro):

• Número de portais: O(1/ε) ≈ 100 por lado

• Crescimento exponencial em subproblemas

• Tempo computacional: ~20 minutos

• Solução encontrada: ≤ 1,01·L*

• Garantia: no máximo 1% acima do ótimo

Comparação com Lin-Kernighan:

• Lin-Kernighan em 100 cidades: ~0,5 segundos

• Qualidade típica: 1-3% acima do ótimo

• Sem garantia formal mas mais rápido

Trade-off prático:

• PTAS: garantia teórica, tempo previsível

• Heurísticas: performance empírica excelente, tempo rápido

• Para ε pequeno, PTAS inviável

• Para aplicações, heurísticas geralmente preferidas

Aplicabilidade:

• Útil quando garantia certificável é requerida

• Pesquisa teórica sobre limites de aproximabilidade

• Casos onde qualidade > 90% inaceitável mas tempo disponível

Quando Usar PTAS

PTAS euclidiano é valioso quando: (1) instância tem estrutura geométrica clara, (2) garantia formal de qualidade é requisito obrigatório, (3) tempo disponível permite complexidade aumentada, (4) valores moderados de ε (0,05-0,2) são aceitáveis. Para maioria das aplicações práticas, heurísticas modernas como Lin-Kernighan oferecem melhor custo-benefício.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 31
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Variantes e Extensões do TSP

Variantes do TSP modelam restrições adicionais encontradas em aplicações práticas, como janelas de tempo (cada cidade deve ser visitada em intervalo específico), múltiplos veículos (frota de caixeiros partindo de depósito), capacidades limitadas (veículo tem carga máxima), e coleta e entrega (produtos coletados em algumas cidades devem ser entregues em outras). Estas extensões frequentemente aumentam dificuldade computacional mas capturam realidade operacional melhor que TSP básico.

O TSP com janelas de tempo (TSPTW) adiciona restrições temporais onde cada cidade i deve ser visitada no intervalo [aᵢ, bᵢ], complicando significativamente problema pois tours viáveis devem respeitar simultaneamente custo e factibilidade temporal. Heurísticas para TSPTW frequentemente usam penalidades para violações temporais ou constroem soluções que priorizam factibilidade seguida por otimização de custo.

O problema de roteamento de veículos (VRP) generaliza TSP permitindo múltiplos tours executados por frota de veículos, cada um com capacidade limitada e restrições operacionais. VRP e suas variantes representam classe de problemas de enorme importância prática em logística, com indústria de software especializada e competições regulares de otimização que impulsionam desenvolvimento de algoritmos cada vez mais sofisticados e eficientes.

VRP com Capacidades

Problema de roteamento de veículos capacitado:

Configuração:

• Depósito central

• 15 clientes com demandas dᵢ

• 3 veículos com capacidade Q = 50 unidades cada

• Distâncias métricas entre locais

Demandas dos clientes:

• C₁=10, C₂=15, C₃=8, C₄=12, C₅=20

• C₆=18, C₇=9, C₈=11, C₉=14, C₁₀=16

• C₁₁=7, C₁₂=13, C₁₃=10, C₁₄=15, C₁₅=12

• Total: 190 unidades

Análise de factibilidade:

• Capacidade total: 3 × 50 = 150 unidades

• Demanda total: 190 unidades

• Problema infactível como especificado!

• Ajuste: usar 4 veículos ou aumentar capacidade

Solução com 4 veículos:

• Rota 1: Depósito → C₅(20) → C₆(18) → C₁₁(7) → Depósito

Carga: 45, Distância: 85 km

• Rota 2: Depósito → C₁₀(16) → C₂(15) → C₉(14) → Depósito

Carga: 45, Distância: 92 km

• Rota 3: Depósito → C₁₄(15) → C₁₅(12) → C₄(12) → C₇(9) → Depósito

Carga: 48, Distância: 78 km

• Rota 4: Depósito → C₃(8) → C₈(11) → C₁₂(13) → C₁(10) → C₁₃(10) → Depósito

Carga: 52 (viola capacidade levemente - requer ajuste)

Métodos de solução:

• Clarke-Wright savings: heurística construtiva clássica

• Sweep algorithm: varredura angular com agrupamento

• Two-phase: cluster primeiro, rotear depois

• Meta-heurísticas: tabu search, algoritmos genéticos

Complexidade das Variantes

Variantes de TSP geralmente herdam NP-dificuldade do problema base e frequentemente adicionam dificuldades próprias. Por exemplo, TSPTW pode ser infactível (sem solução válida) para certas instâncias, requerendo verificação de factibilidade antes de otimização. Software comercial para VRP tipicamente usa combinação sofisticada de múltiplas heurísticas e otimização local.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 32
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Aplicações Industriais de TSP e VRP

As aplicações industriais de problemas tipo TSP e VRP movimentam bilhões em economia global através de otimização de logística, redução de consumo de combustível, e melhoria de eficiência operacional em setores como transporte, manufatura, serviços e telecomunicações. Empresas como UPS, FedEx, Amazon e Correios utilizam sistemas sofisticados baseados nestes algoritmos para planejamento diário de rotas de milhares de veículos.

Na manufatura, problemas de perfuração de placas de circuito impresso (PCB drilling) requerem minimização de movimento da broca entre pontos de perfuração, modelado diretamente como TSP onde cidades são furos e distância é tempo de movimento. Indústria de semicondutores usa variantes para otimização de testes de chips e movimentação de wafers. Robótica móvel emprega TSP para planejamento de inspeção e vigilância com robôs autônomos.

Aplicações emergentes incluem otimização de rotas de drones para entrega e vigilância, onde considerações de bateria e capacidade de carga adicionam restrições complexas, e planejamento de missões espaciais onde sequenciamento de observações astronômicas ou visitas a asteroides seguem estrutura similar a TSP com custos de combustível como métrica de otimização. A versatilidade do modelo TSP/VRP continua inspirando novas aplicações conforme tecnologia evolui.

Caso Real: Otimização de Entregas

Implementação em empresa de logística:

Contexto operacional:

• Empresa de entregas urbanas

• 50 veículos, 800-1000 entregas diárias

• Janelas de tempo para 40% das entregas

• Capacidade variável por veículo (pequeno, médio, grande)

Sistema anterior (manual):

• Planejadores experientes alocavam rotas

• Tempo de planejamento: 3-4 horas/dia

• Distância média por veículo: 85 km

• Taxa de entregas no prazo: 92%

• Custo operacional: R$ 180.000/mês

Sistema otimizado (algoritmos):

• Software com heurísticas VRP avançadas

• Tempo de planejamento: 15 minutos

• Distância média: 72 km (redução de 15%)

• Taxa de entregas no prazo: 96%

• Custo operacional: R$ 155.000/mês

Benefícios quantificados:

• Economia mensal: R$ 25.000

• Economia anual: R$ 300.000

• ROI do software: 6 meses

• Redução de 650 km/dia em distância total

• Economia de ~2000 litros combustível/mês

• Redução de emissões: ~5 toneladas CO₂/mês

Algoritmos utilizados:

• Phase 1: Clustering geográfico (k-means adaptado)

• Phase 2: TSP per cluster (Lin-Kernighan)

• Phase 3: Inter-route optimization (2-opt*)

• Phase 4: Time feasibility check and repair

• Total computation: 10-15 minutos para 1000 entregas

Implementação de Sistemas Reais

Para implementação bem-sucedida em contexto industrial: integre com sistemas existentes (GPS, ERP), permita ajustes manuais por operadores experientes, considere fatores não modelados matematicamente (tráfego, preferências de motoristas), monitore performance continuamente e ajuste parâmetros, mantenha interface simples apesar de complexidade dos algoritmos por trás.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 33
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 7: Programação Linear e Relaxação

Fundamentos de Programação Linear

A programação linear constitui ferramenta fundamental para algoritmos de aproximação através de relaxações que transformam problemas de otimização inteira em problemas contínuos tratáveis polinomialmente via simplex ou métodos de ponto interior. A relaxação linear de problema inteiro remove restrições de integralidade, permitindo que variáveis assumam valores fracionários entre 0 e 1, produzindo solução ótima fracionária que fornece cota no ótimo inteiro.

O valor ótimo da relaxação linear é sempre pelo menos tão bom quanto ótimo inteiro para problemas de minimização (pelo menos tão ruim para maximização), pois espaço de soluções fracionárias contém todas soluções inteiras possíveis. Esta propriedade fundamental permite usar ótimo fracionário como limite inferior (ou superior) certificado no ótimo inteiro, essencial para análise de razões de aproximação baseadas em arredondamento.

Técnicas de arredondamento transformam solução fracionária em solução inteira viável através de regras determinísticas ou randomizadas que exploram estrutura específica do problema, com análise demonstrando que solução arredondada não degrada muito relativamente ao ótimo fracionário. Esta abordagem unifica muitos algoritmos de aproximação importantes e frequentemente produz garantias melhores que métodos puramente combinatórios.

Relaxação LP para Vertex Cover

Formulação e análise via programação linear:

Formulação inteira (exata):

• Minimizar: ∑ᵢxᵢ

• Sujeito a: xᵢ + xⱼ ≥ 1 para toda aresta (i,j)

• xᵢ ∈ {0,1} para todo vértice i

• Interpretação: xᵢ=1 se vértice i está na cobertura

Relaxação linear:

• Minimizar: ∑ᵢxᵢ

• Sujeito a: xᵢ + xⱼ ≥ 1 para toda aresta (i,j)

• 0 ≤ xᵢ ≤ 1 para todo vértice i

• Permite valores fracionários!

Exemplo: triângulo

• Vértices: 1, 2, 3

• Arestas: (1,2), (2,3), (3,1)

• Solução inteira ótima: x₁=1, x₂=1, x₃=0 (ou permutações)

Custo = 2

• Solução LP ótima: x₁=0,5, x₂=0,5, x₃=0,5

Custo = 1,5

• Gap de integralidade: 2/1,5 ≈ 1,33

Algoritmo de arredondamento:

• Resolver relaxação LP para obter x*

• Para cada vértice i:

→ Se x*ᵢ ≥ 0,5, incluir i na cobertura

Análise da aproximação:

• Para toda aresta (i,j): x*ᵢ + x*ⱼ ≥ 1

• Logo ao menos um de x*ᵢ, x*ⱼ ≥ 0,5

• Arredondamento inclui ao menos um vértice por aresta ✓

• Custo ≤ 2·∑ᵢx*ᵢ = 2·OPT_LP ≤ 2·OPT_IP

• Algoritmo é 2-aproximação ✓

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 34
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Arredondamento Randomizado

O arredondamento randomizado interpreta valores fracionários da solução LP como probabilidades, incluindo cada variável na solução inteira independentemente com probabilidade igual ao seu valor fracionário. Esta interpretação probabilística frequentemente produz garantias esperadas melhores que arredondamento determinístico, explorando aleatoriedade para evitar piores casos sistemáticos que afetam métodos determinísticos.

A análise de arredondamento randomizado emprega ferramentas de teoria da probabilidade como linearidade da expectativa para valor esperado da solução, desigualdades de Chernoff para concentração em torno da média, e union bounds para garantir que múltiplas restrições são satisfeitas simultaneamente com alta probabilidade. Resultados típicos estabelecem que com probabilidade alta, solução randomizada tem qualidade próxima de sua expectativa, que por sua vez relaciona-se controlavelmente com ótimo fracionário.

Técnicas de amplificação de probabilidade permitem repetir arredondamento múltiplas vezes e selecionar melhor solução obtida, aumentando probabilidade de encontrar solução de alta qualidade ao custo de tempo computacional multiplicado pelo número de tentativas. Derandomização via método de expectativas condicionais transforma algoritmos randomizados em determinísticos mantendo garantias, útil quando aleatoriedade é indesejável na prática.

MAX-SAT com Arredondamento LP

Aplicação de técnicas LP para satisfazibilidade:

Problema MAX-SAT:

• Fórmula CNF com m cláusulas

• Objetivo: Atribuição booleana satisfazendo máximo de cláusulas

Formulação inteira:

• Variáveis: xᵢ ∈ {0,1} para literais

• yⱼ ∈ {0,1} indicador se cláusula j satisfeita

• Maximizar: ∑ⱼyⱼ

• Restrições: yⱼ ≤ ∑ᵢ∈Cⱼ⁺ xᵢ + ∑ᵢ∈Cⱼ⁻ (1-xᵢ)

Relaxação LP:

• 0 ≤ xᵢ ≤ 1, 0 ≤ yⱼ ≤ 1

• Resolver para obter x*, y*

Arredondamento randomizado:

• Para cada variável i:

→ Defina xᵢ = TRUE com probabilidade x*ᵢ

Análise para cláusula com k literais:

• Probabilidade de não satisfazer:

≤ (1-1/k)^k ≤ 1/e

• Probabilidade de satisfazer: ≥ 1-1/e ≈ 0,632

• Valor esperado: ∑ⱼP[Cⱼ satisfeita]

≥ (1-1/e)·∑ⱼy*ⱼ ≥ (1-1/e)·OPT_LP

Exemplo concreto:

• Fórmula: (x₁∨x₂) ∧ (¬x₁∨x₃) ∧ (¬x₂∨¬x₃)

• LP ótimo: x*₁=x*₂=x*₃=0,5, todas y*ⱼ=1

• Valor LP: 3

• Arredondamento: cada xᵢ=TRUE com prob. 0,5

• Valor esperado: 3(1-1/4) = 2,25

• Ótimo inteiro: 2 (não pode satisfazer todas 3)

• Algoritmo encontra 2,25 em expectativa > 2 ✓

Combinação de Técnicas

Para MAX-SAT e problemas similares, combinar múltiplas estratégias frequentemente produz melhores resultados: usar melhor entre arredondamento LP e atribuição puramente aleatória garante aproximação de 3/4 para MAX-SAT geral, melhor que qualquer técnica isolada. Híbridos são tema recorrente em algoritmos de aproximação de alta qualidade.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 35
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Método Primal-Dual

O método primal-dual constrói simultaneamente solução primal inteira viável e solução dual que certifica sua qualidade, oferecendo abordagem unificada para design e análise de algoritmos de aproximação baseados em programação linear. Esta técnica evita necessidade de resolver relaxação LP completamente, construindo incrementalmente solução dual que guia decisões sobre quais variáveis primais incluir na solução inteira final.

O framework típico mantém invariante onde restrições duais são respeitadas enquanto variáveis primais são selecionadas quando suas restrições duais correspondentes ficam tight (atingem igualdade). O processo continua aumentando variáveis duais até todas restrições primais serem satisfeitas, momento em que solução primal construída é viável e valor dual fornece cota inferior certificada no ótimo primal.

A razão de aproximação emerge da análise comparando custo da solução primal construída com valor da solução dual, explorando propriedades estruturais como quantas restrições primais cada variável dual afeta. Esta análise frequentemente revela razões de aproximação ótimas ou próximas do ótimo para problemas importantes, além de fornecer algoritmos eficientes que evitam overhead de resolver programas lineares completamente.

Análise Primal-Dual Detalhada

Aplicação sistemática do método para Set Cover:

Revisão das formulações:

• Primal: min ∑ᵢcᵢxᵢ sujeito a ∑ᵢ:e∈Sᵢ xᵢ ≥ 1 ∀e

• Dual: max ∑ₑyₑ sujeito a ∑ₑ∈Sᵢ yₑ ≤ cᵢ ∀i

Algoritmo primal-dual:

1. Inicializar: C = ∅, yₑ = 0 para todos e

2. Para cada elemento e não coberto:

a. Aumentar yₑ continuamente

b. Parar quando alguma restrição dual fica tight:

∑ₑ∈Sᵢ yₑ = cᵢ para algum i

c. Adicionar Sᵢ à cobertura C

d. Marcar elementos de Sᵢ como cobertos

Exemplo passo a passo:

• Universo: {1,2,3,4}

• S₁={1,2}, c₁=5

• S₂={2,3}, c₂=4

• S₃={3,4}, c₃=3

• S₄={1,4}, c₄=6

Execução:

• Iteração para elemento 1:

→ Aumentar y₁ até min{c₁/|{1}∩S₁|, c₄/|{1}∩S₄|}

→ y₁ aumenta até restrição de S₁ ou S₄ tight

→ Digamos S₁ fica tight primeiro: adicionar S₁

→ Elementos 1,2 agora cobertos

• Iteração para elemento 3:

→ Aumentar y₃, restrição de S₂ ou S₃ fica tight

→ Adicionar conjunto correspondente

• Continuar até todos cobertos

Propriedades da solução:

• Custo primal = ∑ᵢ∈C cᵢ

• Para cada Sᵢ ∈ C: cᵢ = ∑ₑ∈Sᵢ yₑ (tight)

• Valor dual = ∑ₑyₑ ≤ OPT

• Razão depende de quantas vezes yₑ é contado

Vantagens do Método

O método primal-dual oferece múltiplas vantagens: não requer resolver LP completamente (apenas manter variáveis duais), produz certificado de qualidade automaticamente através da solução dual, frequentemente admite implementações muito eficientes, e análise unificada aplica-se a muitos problemas diferentes com pequenas adaptações.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 36
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Dualidade e Certificados de Qualidade

A teoria da dualidade em programação linear estabelece que todo programa linear primal possui programa dual associado cujo valor ótimo fornece cota no valor primal ótimo, com dualidade forte garantindo igualdade dos valores ótimos quando ambos problemas são viáveis. Esta propriedade fundamental permite usar soluções duais como certificados verificáveis de qualidade para soluções primais, essencial para validação de algoritmos de aproximação.

A dualidade fraca, válida mesmo para soluções subótimas, estabelece que qualquer solução dual viável fornece limite inferior no ótimo primal para problemas de minimização. Algoritmos de aproximação exploram esta propriedade construindo soluções primais viáveis junto com soluções duais viáveis, comparando seus valores para demonstrar razão de aproximação sem conhecer valor ótimo verdadeiro do problema original.

Certificados duais têm importância prática além de análise teórica, permitindo validação independente de qualidade de soluções em contextos onde confiabilidade é crítica. Cliente pode verificar que solução fornecida por solver é realmente boa usando apenas certificado dual e verificação polinomial de factibilidade, sem confiar na correção do algoritmo de otimização utilizado.

Certificado Dual para Validação

Uso prático de dualidade para verificação:

Cenário:

• Cliente contrata empresa para resolver problema de cobertura

• Empresa retorna solução com custo 1000

• Cliente quer verificar qualidade sem conhecer ótimo

Solução primal fornecida:

• Conjunto C de conjuntos selecionados

• Custo total: ∑ᵢ∈C cᵢ = 1000

• Verificação de factibilidade: checar que C cobre todos elementos

Certificado dual fornecido:

• Valores yₑ para cada elemento e

• Valor dual: ∑ₑyₑ = 800

Verificação do certificado:

1. Checar factibilidade dual:

Para cada conjunto Sᵢ: ∑ₑ∈Sᵢ yₑ ≤ cᵢ

Verificação em tempo O(|E|·|S|)

2. Se dual é viável, então ∑ₑyₑ ≤ OPT

3. Logo: 1000/800 = 1,25

Solução primal é no máximo 1,25× o ótimo

Garantia obtida:

• Sem conhecer OPT exato

• Através de verificação polinomial

• Cliente tem prova de qualidade ≤ 1,25-aproximação

Exemplo numérico:

• Universo: {a,b,c,d}

• S₁={a,b}, c₁=10

• S₂={b,c}, c₂=8

• S₃={c,d}, c₃=9

• Solução primal: C = {S₁, S₃}, custo = 19

• Certificado dual: yₐ=5, yᵦ=5, yᶜ=4,5, yᵈ=4,5

• Valor dual = 19

• Verificação: S₁: 5+5=10=c₁ ✓, S₃: 4,5+4,5=9=c₃ ✓

• S₂: 5+4,5=9,5 > c₂=8 ✗ (viola dual - certificado inválido!)

• Correção: yᵦ=4, yᶜ=4, valor dual=17,5

• Razão certificada: 19/17,5 ≈ 1,086

Construção de Certificados

Ao implementar algoritmos de aproximação baseados em LP: sempre construa e retorne certificado dual junto com solução primal. Isso adiciona valor significativo em aplicações comerciais e permite auditoria independente de qualidade. Verificação de certificado é muito mais rápida que resolver problema original.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 37
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Programação Semidefinida e Relaxações Avançadas

A programação semidefinida (SDP) generaliza programação linear permitindo otimização sobre cone de matrizes semidefinidas positivas, oferecendo relaxações mais fortes que LP para certos problemas combinatórios. A relaxação SDP frequentemente produz cotas melhores no ótimo inteiro, levando a algoritmos de aproximação com razões superiores às obtidas via LP, ao custo de complexidade computacional aumentada.

O algoritmo de Goemans-Williamson para MAX-CUT representa aplicação seminal de SDP em aproximação, usando relaxação semidefinida seguida de arredondamento geométrico aleatório que atinge razão de aproximação α ≈ 0,878, melhor que 0,5 obtida por métodos mais simples. Esta razão é ótima assumindo conjectura de Unique Games, demonstrando poder de relaxações SDP quando exploradas adequadamente.

Apesar de vantagens teóricas, SDP requer solvers mais sofisticados que LP, com complexidade prática O(n⁴) ou pior dependendo de precisão desejada. Para problemas de grande escala, métodos aproximados de SDP ou hierarquias de relaxações LP/SDP oferecem compromissos entre qualidade de cota e custo computacional, permitindo aplicação de técnicas SDP em contextos onde solução exata seria proibitiva.

MAX-CUT via SDP

Algoritmo de Goemans-Williamson:

Formulação SDP:

• Maximizar: (1/4)∑ₑ=(ᵢ,ⱼ) wₑ(1 - vᵢ·vⱼ)

• Sujeito a: vᵢ·vᵢ = 1 para todo i

• vᵢ ∈ ℝⁿ (vetores unitários)

Interpretação geométrica:

• Cada vértice representado por vetor unitário

• Produto escalar vᵢ·vⱼ mede similaridade

• vᵢ·vⱼ ≈ 1: vértices no mesmo lado do corte

• vᵢ·vⱼ ≈ -1: vértices em lados opostos

Arredondamento geométrico:

1. Resolver SDP para obter vetores v*ᵢ

2. Escolher hiperplano aleatório através da origem

(normal r ~ N(0,I)ⁿ)

3. Particionar vértices: S = {i : v*ᵢ·r ≥ 0}

Análise da aproximação:

• Para aresta (i,j):

• P[(i,j) no corte] = θᵢⱼ/π

• onde θᵢⱼ = arccos(v*ᵢ·v*ⱼ)

• Contribuição esperada: wₑ·θᵢⱼ/π

• Valor SDP: wₑ(1-v*ᵢ·v*ⱼ)/2 = wₑ·θᵢⱼ/(2·arcsin(1))

• Razão mínima: minθ (θ/π)/(θ/(2·arcsin(1)))

= 2·arcsin(1)/π ≈ 0,878

Exemplo concreto:

• Grafo: ciclo de 5 vértices, pesos unitários

• Ótimo inteiro: 4 arestas no corte

• Valor SDP: ≈ 4,5

• Algoritmo GW em expectativa: ≈ 3,95

• Razão sobre inteiro: 3,95/4 ≈ 0,988

• Melhor que garantia de 0,878 neste caso

Trade-offs SDP vs LP

SDP oferece cotas melhores e razões superiores mas com custo computacional maior. Para muitos problemas práticos, LP com heurísticas de pós-processamento oferece melhor custo-benefício. SDP é preferível quando gap de integralidade de LP é fraco e melhor qualidade justifica custo adicional.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 38
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Hierarquias de Relaxação

Hierarquias de relaxação como Sherali-Adams, Lovász-Schrijver e Lasserre constroem sequências de relaxações progressivamente mais fortes que interpolam entre relaxação básica e solução exata, adicionando restrições válidas derivadas de produtos de restrições originais ou condições de momentos. Cada nível da hierarquia produz cota melhor no ótimo inteiro ao custo de dimensão aumentada do programa linear ou semidefinido resultante.

A hierarquia de Lasserre, baseada em programação semidefinida e teoria de momentos, é mais forte que alternativas baseadas em LP, com propriedade que após n rodadas (onde n é número de variáveis), relaxação torna-se exata. Esta convergência garante que problemas NP-difíceis podem ser resolvidos exatamente via SDP em número polinomial de variáveis, embora complexidade cresça exponencialmente com número de rodadas, limitando aplicabilidade prática.

Resultados sobre hierarquias estabelecem tanto capacidades quanto limitações: certos problemas requerem número logarítmico ou linear de rodadas para obter aproximações boas, enquanto outros resistem mesmo a muitas rodadas, revelando estrutura intrínseca da dificuldade de aproximação. Estes resultados orientam pesquisa sobre quais técnicas investir para problemas específicos, evitando esforço em abordagens fundamentalmente limitadas.

Análise de Hierarquia

Comportamento de hierarquia para Vertex Cover:

Relaxação LP básica:

• Gap de integralidade: 2

• Exemplo tight: K₂,₂ (grafo bipartido completo 2×2)

• Ótimo inteiro: 2, Ótimo LP: 1

Após 1 rodada Sherali-Adams:

• Adiciona restrições: xᵢxⱼ = 0 para i≠j não adjacentes

• Gap reduz mas não elimina completamente

• K₂,₂ ainda tem gap

Após k rodadas:

• Para k = Ω(n), gap desaparece

• Mas dimensão cresce para nᴼ⁽ᵏ⁾

• Inviável para k grande

Lasserre para Vertex Cover:

• 1 rodada já melhora significativamente

• Gap reduz de 2 para ~1,5 em instâncias típicas

• Mas complexidade O(n⁶) para 1 rodada

Trade-off prático:

• LP básico: O(n³), gap = 2

• 1 rodada SA: O(n⁶), gap ≈ 1,8

• 1 rodada Lasserre: O(n⁸), gap ≈ 1,5

• Algoritmo combinatório: O(n²), gap = 2

Conclusão prática:

• Para Vertex Cover, algoritmo combinatório preferível

• 2-aproximação ótima assumindo UGC

• Hierarquias não oferecem vantagem suficiente

Problemas onde hierarquias ajudam:

• MAX-CUT: Lasserre melhora razão GW

• Certain graph coloring problems

• Problemas com estrutura geométrica

Quando Usar Hierarquias

Hierarquias são mais úteis quando: relaxação básica tem gap significativo, estrutura do problema permite explorar restrições adicionais efetivamente, instâncias têm tamanho moderado permitindo rodadas adicionais, e melhor qualidade de aproximação justifica custo computacional aumentado. Para maioria das aplicações práticas, relaxações básicas com arredondamento inteligente são suficientes.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 39
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 8: Esquemas de Aproximação

PTAS e FPTAS

Um esquema de aproximação polinomial (PTAS - Polynomial-Time Approximation Scheme) é algoritmo que para qualquer ε > 0 produz solução (1+ε)-aproximada em tempo polinomial no tamanho da entrada, permitindo trade-off entre qualidade de aproximação e tempo computacional. A existência de PTAS para problema demonstra que aproximação arbitrariamente boa é alcançável eficientemente, contrastando com problemas onde razão constante é melhor possível.

Um esquema de aproximação polinomial totalmente (FPTAS - Fully Polynomial-Time Approximation Scheme) fortalece PTAS exigindo que tempo de execução seja polinomial tanto em n quanto em 1/ε, tipicamente O(n² /ε) ou similar. Esta garantia mais forte elimina dependência exponencial em 1/ε que pode tornar PTAS impraticável para valores pequenos de ε, fazendo FPTAS preferível quando disponível.

A distinção entre problemas admitindo PTAS versus apenas aproximações com razão constante reflete diferenças fundamentais em estrutura computacional, com PTAS frequentemente explorando estrutura geométrica, propriedade de separação, ou decomposição hierárquica que permite refinamento controlado da solução. Resultados de inaproximabilidade estabelecem que muitos problemas NP-difíceis não admitem PTAS assumindo P ≠ NP, delimitando fronteira entre aproximável arbitrariamente bem e aproximável apenas constantemente.

FPTAS para Knapsack

Esquema baseado em escalonamento de valores:

Problema original:

• n itens com valores vᵢ e pesos wᵢ

• Capacidade W

• Maximizar valor total sem exceder W

Programação dinâmica exata:

• DP[i][v] = peso mínimo para obter valor v com itens 1..i

• Complexidade: O(n·V_max) pseudo-polinomial

• V_max = ∑ᵢvᵢ pode ser exponencial em n

FPTAS via escalonamento:

1. Definir K = ε·V_max/n

2. Escalonar valores: v'ᵢ = ⌊vᵢ/K⌋

3. Resolver DP com valores v'ᵢ

4. Retornar solução correspondente

Análise:

• Valores escalonados: v'ᵢ ≤ n/ε

• V'_max ≤ n²/ε

• Complexidade DP: O(n³/ε)

• Polinomial em n e 1/ε ✓

Garantia de qualidade:

• Cada valor perde ≤ K no escalonamento

• Solução perde ≤ n·K no total

• OPT' ≥ OPT/K - n

• ALG ≥ K·OPT' ≥ OPT - n·K

• ALG ≥ OPT(1 - ε) para ε < 1

• Logo (1+ε)-aproximação ✓

Exemplo concreto (ε = 0,1):

• 5 itens, valores: 100, 80, 60, 40, 20

• V_max = 300, K = 0,1·300/5 = 6

• Valores escalonados: 16, 13, 10, 6, 3

• DP resolve com V'_max = 48

• Tempo: O(5³/0,1) = O(1250) operações

• Solução garantida: ≥ 0,9·OPT

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 40
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Técnicas de Construção de PTAS

A construção de PTAS explora diversas técnicas dependendo da estrutura do problema, incluindo programação dinâmica com arredondamento de parâmetros, decomposição geométrica para problemas planares, shifting technique que desloca grades para evitar interações problemáticas, e local search com vizinhanças limitadas onde ótimos locais garantem qualidade global próxima do ótimo absoluto.

A técnica de shifting para problemas geométricos divide plano em faixas horizontais e verticais, resolve subproblemas independentemente em cada faixa usando programação dinâmica, e desloca grade sistematicamente para encontrar deslocamento que minimiza interações entre faixas. Média sobre todos deslocamentos garante que ao menos um produz solução próxima do ótimo, com análise demonstrando perda limitada por cruzamentos de fronteiras.

Local search com vizinhanças k-limitadas permite apenas trocas de no máximo k elementos, garantindo que cada melhoria local pode ser encontrada em tempo polinomial. Para valores apropriados de k dependendo de ε, demonstra-se que ótimos locais são (1+ε)-aproximações globais, fornecendo PTAS através de busca local com vizinhança cuidadosamente calibrada. Esta abordagem unifica muitos resultados aparentemente distintos sob framework comum.

Shifting Technique para TSP Euclidiano

Aplicação da técnica de deslocamento de grade:

Decomposição do plano:

• Cobrir pontos com caixa L × L

• Dividir em faixas horizontais de largura L/m

• m = ⌈2/ε⌉ (relacionado à precisão desejada)

Para deslocamento s = 0, 1, ..., m-1:

1. Faixas começam em altura s·(L/m)

2. Dentro de cada faixa:

• Dividir em células quadradas L/m × L/m

• Limitar pontos de entrada/saída por célula

3. DP dentro de cada faixa com estados limitados

4. Conectar soluções entre faixas

Análise de cruzamentos:

• Tour ótimo cruza cada linha horizontal ≤ 2 vezes

• Linhas horizontais: m-1 linhas entre faixas

• Total de cruzamentos: ≤ 2(m-1)

Perda por deslocamento:

• Cada cruzamento pode adicionar ≤ 2L/m ao custo

• Pior caso: 2(m-1)·(2L/m) ≈ 4L

Média sobre deslocamentos:

• Ao menos um deslocamento: ≤ 4L/m cruzamentos

• Custo adicional: ≤ (4L/m)·(2L/m) = 8L²/m²

• Para OPT ≥ L, perda relativa: O(L/m) = O(ε·L)

• Razão: 1 + O(ε)

Complexidade:

• Por faixa: O(n·2^O(m)) com DP

• m = O(1/ε), logo 2^O(m) = 2^O(1/ε)

• Total: O(n·2^O(1/ε))

• Polinomial em n (PTAS) mas não em 1/ε

Exemplo prático (ε = 0,2):

• m = ⌈10⌉ = 10 faixas

• 100 cidades

• Complexidade: 100·2^O(10) ≈ 100·1000 operações

• Garantia: ≤ 1,2·OPT

Escolha de Técnica

Para desenvolver PTAS: identifique estrutura explorável (geométrica, separabilidade, localidade), use programação dinâmica quando subproblemas têm tamanho limitado por ε, aplique shifting para problemas planares, considere local search quando vizinhanças apropriadas existem. Análise cuidadosa de como ε entra na complexidade determina se PTAS é também FPTAS.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 41
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Limitações e Impossibilidades

Muitos problemas NP-difíceis não admitem PTAS assumindo P ≠ NP, estabelecendo fronteira fundamental entre problemas aproximáveis arbitrariamente bem e aqueles onde apenas aproximações com razão constante são possíveis. Resultados de inaproximabilidade baseados em teoria PCP demonstram que problemas como Clique, Conjunto Independente, e Coloração de Grafos não admitem PTAS a menos que P = NP, independentemente de quão engenhosas sejam técnicas desenvolvidas.

A conjectura de Unique Games fortalece resultados de inaproximabilidade, estabelecendo limites mais precisos sobre melhores razões alcançáveis para muitos problemas. Por exemplo, sob UGC, Vertex Cover não admite aproximação melhor que 2-ε para qualquer ε > 0, e MAX-CUT não admite aproximação melhor que algoritmo de Goemans-Williamson. Estes resultados, se UGC for válida, caracterizam completamente aproximabilidade ótima de problemas centrais.

Mesmo para problemas admitindo PTAS, dependência exponencial em 1/ε pode tornar algoritmo impraticável para valores pequenos de ε requeridos em aplicações. Distinção entre PTAS e FPTAS torna-se crucial para aplicações práticas, com FPTAS permitindo uso de valores pequenos de ε enquanto PTAS pode limitar-se a ε ≥ 0,1 ou 0,05 para instâncias de tamanho moderado devido a crescimento exponencial da constante escondida na notação O.

Comparação de Aproximabilidade

Classificação de problemas por aproximabilidade:

Classe 1: Admite FPTAS

• Knapsack (via escalonamento)

• Subset Sum

• Scheduling em máquina única

• Características: estrutura numérica, DP natural

Classe 2: PTAS mas não FPTAS (provavelmente)

• TSP Euclidiano

• Bin Packing

• Makespan scheduling (certas variantes)

• Limitação: dependência exponencial em 1/ε

Classe 3: Aproximação constante, sem PTAS

• Vertex Cover (melhor: 2, limite: 2-ε impossível sob UGC)

• MAX-CUT (melhor: 0,878, limite: melhor impossível sob UGC)

• TSP Métrico (melhor: 1,5, limite desconhecido)

Classe 4: Sem aproximação constante

• Clique (limite: n^(1-ε) impossível)

• Conjunto Independente (mesmo limite)

• Coloração (limite: n^(1-ε) impossível)

Análise temporal prática (n=1000):

Classe 1 (FPTAS, ε=0,01):

• Tempo: ~1 segundo

• Qualidade: 1% do ótimo

Classe 2 (PTAS, ε=0,01):

• Tempo: horas ou dias

• Qualidade: 1% do ótimo

Classe 2 (PTAS, ε=0,1):

• Tempo: minutos

• Qualidade: 10% do ótimo

Classe 3 (razão 2):

• Tempo: segundos

• Qualidade: 100% do ótimo (fator 2)

Classe 4 (sem garantia):

• Heurísticas sem garantia formal

• Ou métodos exatos exponenciais

Implicações Práticas

Para aplicações: FPTAS é ideal quando disponível, permitindo qualidade ajustável; PTAS com valores moderados de ε (0,1-0,2) é aceitável para muitas aplicações; aproximações constantes são preferíveis a PTAS com ε muito pequeno devido ao custo; problemas sem aproximação constante requerem heurísticas ou abordagens especializadas para instâncias específicas.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 42
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Complexidade Parametrizada e Aproximação

A complexidade parametrizada oferece perspectiva complementar à aproximação, estudando problemas onde parte da entrada (parâmetro k) é pequena, permitindo algoritmos que são exponenciais em k mas polinomiais em n. Um problema é fixed-parameter tractable (FPT) se pode ser resolvido em tempo f(k)·nᶜ para função computável f e constante c, permitindo soluções exatas eficientes quando parâmetros naturais têm valores moderados.

A combinação de parametrização com aproximação produz algoritmos que são FPT no parâmetro k e simultaneamente α-aproximação para função objetivo, oferecendo garantias duplas: execução rápida para valores pequenos de parâmetro e qualidade controlada quando parâmetro é grande. Esta síntese é especialmente valiosa para problemas onde nem abordagem isolada é satisfatória, mas combinação oferece compromisso prático excelente.

Kernelização, técnica central em complexidade parametrizada, reduz instância a núcleo de tamanho limitado por função de k em tempo polinomial, garantindo que instâncias grandes com parâmetro pequeno sejam eficientemente simplificadas. Algoritmos aproximados podem explorar kernelização como pré-processamento, aplicando métodos exatos ou aproximação adicional ao núcleo resultante, frequentemente obtendo performance prática superior a aplicação direta de qualquer técnica isoladamente.

FPT para Vertex Cover

Algoritmo parametrizado exato:

Parametrização:

• Parâmetro k: tamanho da cobertura desejada

• Pergunta: Existe cobertura de tamanho ≤ k?

Algoritmo de branching:

• Se grafo não tem arestas: retornar SIM

• Escolher aresta (u,v)

• Pelo menos um de u,v deve estar na cobertura

• Ramificar em duas possibilidades:

1. Incluir u, remover u e arestas incidentes, k' = k-1

2. Incluir v, remover v e arestas incidentes, k' = k-1

• Recursão com k decrescente

Análise de complexidade:

• Árvore de recursão: altura ≤ k

• Cada nível: branching factor = 2

• Total de nós: ≤ 2^k

• Trabalho por nó: O(n+m) = O(m)

• Complexidade total: O(2^k · m)

• FPT em k! ✓

Melhorias conhecidas:

• Regras de redução antes de branching

• Branching mais inteligente: O(1,2738^k · m)

• Kernelização: núcleo com O(k²) vértices

Aplicação prática (k=10):

• Instância com n=10.000, m=50.000

• Complexidade: 2^10 · 50.000 ≈ 50 milhões operações

• Tempo: ~1 segundo

• Solução: exata (não aproximada!)

Comparação com aproximação:

• 2-aproximação: O(m) = 50.000 operações

• Mais rápida mas solução pode ter tamanho 2k=20

• FPT: mais lento mas garante k=10 se possível

Trade-off:

• Para k pequeno (≤15): FPT encontra ótimo rapidamente

• Para k grande (>50): aproximação é única opção viável

• Região intermediária: escolha depende de requisitos

Quando Combinar Abordagens

Considere algoritmos FPT quando problema tem parâmetro natural pequeno em aplicações típicas, use kernelização como pré-processamento antes de aproximação, combine FPT com aproximação em algoritmos híbridos que detectam casos tratáveis exatamente, e avalie trade-offs entre garantias de qualidade e restrições temporais específicas de cada aplicação.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 43
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Aproximação em Contextos Online

A aproximação em configurações online combina desafios de processamento incremental sem conhecimento futuro com necessidade de garantias de qualidade, requerendo algoritmos que tomam decisões irrevogáveis baseadas em informação parcial enquanto mantêm razões competitivas demonstráveis. Esta síntese é essencial para sistemas que operam continuamente processando requisições dinâmicas com restrições de tempo real.

Técnicas incluem primal-dual online que mantém soluções primal e dual viáveis conforme requisições chegam, ajustando incrementalmente ambas para preservar gap controlado, e algoritmos baseados em potencial que atribuem funções de energia a estados do sistema, tomando decisões que limitam taxa de crescimento do potencial relativamente a progresso do adversário offline ótimo.

Limitações fundamentais existem para muitos problemas online: k-server problem tem limite inferior de k para razão competitiva de qualquer algoritmo determinístico, demonstrando que informação futura é intrinsecamente valiosa. Randomização pode melhorar razões competitivas contra adversários oblivious, mas adversários adaptativos eliminam vantagens de aleatoriedade, estabelecendo hierarquia de modelos com diferentes capacidades de aproximação.

Ski Rental Online

Problema clássico de decisão online:

Configuração:

• Opção 1: Alugar esquis por R$ 1/dia

• Opção 2: Comprar esquis por R$ B (digamos B=100)

• Não sabemos quantos dias vamos esquiar

• Decisão irrevogável: comprar ou continuar alugando

Algoritmo determinístico ótimo:

• Alugar por B-1 dias

• No dia B, comprar

Análise competitiva:

• Se esquiamos ≤ B-1 dias:

→ Custo ALG = número de dias

→ Custo OPT = número de dias (alugar sempre)

→ Razão = 1 ✓

• Se esquiamos ≥ B dias:

→ Custo ALG = (B-1) + B = 2B-1

→ Custo OPT = B (comprar no dia 1)

→ Razão = (2B-1)/B → 2 quando dias → ∞

Algoritmo é 2-competitivo

Limite inferior:

• Nenhum algoritmo determinístico tem razão < 2

• Adversário pode forçar razão 2-ε arbitrariamente perto de 2

Algoritmo randomizado:

• Escolher dia T uniformemente em [1, B]

• Alugar até dia T, depois comprar

• Contra adversário oblivious:

Razão competitiva esperada ≈ e/(e-1) ≈ 1,58

Generalização:

• Muitos problemas online têm estrutura similar

• Decisão entre flexibilidade (custo por uso) vs. commitment (custo fixo)

• Análise via algoritmos primal-dual ou potencial

Design de Algoritmos Online

Para problemas online: identifique custo de irreversibilidade, desenvolva estratégias que equilibram exploration e commitment, use randomização quando adversário não é adaptativo, considere modelos de lookahead limitado para aplicações onde alguma previsão é possível, e analise competitividade contra classes restritas de instâncias quando adversário irrestrito é muito pessimista.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 44
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Algoritmos de Streaming e Sketching

Algoritmos de streaming processam dados que chegam sequencialmente usando memória sub-linear, frequentemente produzindo aproximações de estatísticas sobre fluxo de dados sem armazenar todos elementos. Esta abordagem é essencial para processamento de big data onde volume de informação excede capacidade de armazenamento, requerendo técnicas que mantêm resumos compactos (sketches) preservando propriedades importantes com garantias probabilísticas.

Técnicas fundamentais incluem sampling que mantém amostra representativa do fluxo, hashing que distribui elementos em buckets para estimativa de frequências, e projeções aleatórias que reduzem dimensionalidade preservando distâncias aproximadamente. Análise usa desigualdades de concentração para demonstrar que sketches com tamanho logarítmico ou polilogarítmico permitem aproximação de diversas quantidades com alta probabilidade.

Aplicações incluem contagem de elementos distintos em fluxos massivos (algoritmo HyperLogLog), detecção de itens frequentes (Count-Min Sketch), estimativa de momentos de distribuições, e aproximação de produtos internos em alta dimensão. Estas técnicas são fundamentais em análise de redes, monitoramento de tráfego, processamento de logs, e sistemas de recomendação operando sobre dados que não cabem em memória principal.

Contagem de Distintos

Algoritmo Flajolet-Martin para estimativa:

Problema:

• Fluxo de elementos e₁, e₂, ..., eₘ

• Objetivo: Estimar número n de elementos distintos

• Restrição: Memória O(log n) bits

Algoritmo básico:

• Escolher função hash h: U → {0,1}^L

• Para cada elemento e:

→ Calcular h(e)

→ Definir r(e) = número de zeros à direita em h(e)

→ Manter R = max{r(e)} visto até agora

• Estimativa: n̂ = 2^(R+1/2)

Intuição:

• Probabilidade de r zeros à direita: 1/2^r

• Se vemos R zeros, esperamos ~2^R elementos distintos

• Correção de viés: fator 2^(1/2)

Análise:

• Espaço: O(log log n) para armazenar R

• Tempo por elemento: O(1) amortizado

• Variância alta: melhorar com múltiplas estimativas

Versão melhorada (média harmônica):

• Manter k estimativas independentes R₁, ..., Rₖ

• Usar média harmônica para combinar

• Reduz variância: erro padrão ~1/√k

Exemplo prático:

• Fluxo: 1M elementos, 100K distintos

• Memória exata: 100K × log(1M) ≈ 2MB

• FM-sketch com k=64: 64 × 20 bits ≈ 160 bytes

• Erro típico: ±2% com 95% confiança

• Redução de espaço: 10.000×

Aplicações:

• Análise de logs: usuários únicos por período

• Redes: endereços IP distintos em tráfego

• Bancos de dados: cardinalidade de junções

Uso de Sketches

Para streaming: identifique estatísticas que podem ser aproximadas com memória sublinear, use bibliotecas estabelecidas (HyperLogLog, Count-Min Sketch) ao invés de implementar do zero, calibre parâmetros (número de hashes, tamanho de sketch) baseado em trade-off memória-precisão específico da aplicação, e valide aproximações com subamostras exatas quando possível.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 45
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 9: Exercícios Resolvidos e Propostos

Exercícios Fundamentais Resolvidos

Esta seção apresenta coleção abrangente de exercícios resolvidos cobrindo todos aspectos fundamentais de algoritmos de aproximação, desde análise básica de razões até técnicas avançadas de programação linear e construção de esquemas de aproximação. Cada exercício inclui solução detalhada que explicita estratégias de análise, demonstrações de razões de aproximação, e discussão de aplicações práticas quando relevante.

Os exercícios estão organizados em ordem crescente de complexidade, proporcionando progressão pedagógica que desenvolve competência técnica sistematicamente. Soluções incluem não apenas manipulações matemáticas mas também intuição sobre por que certas abordagens funcionam, análise de casos extremos, e sugestões para extensões que aprofundam compreensão dos conceitos fundamentais estudados.

Problemas aplicados demonstram relevância prática das técnicas estudadas, conectando teoria abstrata com cenários reais em logística, telecomunicações, ciência de dados, e outras áreas onde aproximação algorítmica representa ferramenta essencial para solução eficiente de problemas computacionalmente difíceis com garantias de qualidade mensuráveis.

Exercício Resolvido 1

Problema: Demonstre que o algoritmo guloso de Set Cover que escolhe conjunto com mais elementos não cobertos é aproximação logarítmica.

Solução:

Passo 1: Algoritmo

• C = ∅, R = U (elementos restantes)

• Enquanto R ≠ ∅:

→ Escolher S ∈ S que maximiza |S ∩ R|

→ C = C ∪ {S}

→ R = R \ S

Passo 2: Análise por precificação

• Para elemento x, seja kᵢ número de novos elementos quando x foi coberto

• Preço de x: p(x) = 1/kᵢ

• Custo algoritmo = ∑ₛ∈C 1 = ∑ₓ p(x)

Passo 3: Cota superior em preços

• Seja S* conjunto ótimo com t elementos

• Na iteração i, ao menos t elementos de R estão em S*

• Logo existe S cobrindo ≥ |R|/|OPT| novos elementos

• Preço pago por elemento: ≤ |OPT|/|R|

Passo 4: Soma telescópica

• Seja rᵢ = |R| após iteração i, r₀ = n

• ∑p(x) ≤ |OPT|·(1/n + 1/(n-1) + ... + 1/1)

• = |OPT|·Hₙ onde Hₙ = ∑ᵢ₌₁ⁿ 1/i ≈ ln(n)

Conclusão: Algoritmo é ln(n)-aproximação ✓

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 46
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Exercícios Propostos

Esta seção apresenta exercícios propostos organizados em níveis progressivos de dificuldade, proporcionando oportunidades extensas para prática independente e consolidação dos conceitos estudados. Exercícios cobrem análise de algoritmos existentes, desenvolvimento de novos algoritmos de aproximação, aplicações práticas, e questões teóricas sobre limites de aproximabilidade.

Cada conjunto de exercícios foca em aspectos específicos: análise de razões de aproximação, construção de instâncias tight, aplicação de técnicas de programação linear, desenvolvimento de heurísticas, e implementação de algoritmos. Esta abordagem sistemática assegura desenvolvimento abrangente de competências essenciais em aproximação algorítmica.

Exercícios são acompanhados de orientações sobre estratégias de resolução e sugestões para verificação de resultados, promovendo desenvolvimento de habilidades de análise crítica e auto-avaliação essenciais para aprendizado independente e aplicação responsável das técnicas estudadas em contextos profissionais e acadêmicos.

Exercícios Propostos - Seleção

Exercícios Básicos:

1. Demonstre que algoritmo guloso para escalonamento com 2 máquinas é 4/3-aproximação

2. Construa instância tight para cobertura de vértices via emparelhamento

3. Analise complexidade de Christofides para TSP com n cidades

4. Implemente algoritmo 2-aproximação para Vertex Cover e teste em grafos aleatórios

5. Demonstre que MAX-SAT randomizado é (1-1/e)-aproximação

Exercícios Intermediários:

6. Desenvolva FPTAS para problema da mochila 0-1 via escalonamento

7. Analise algoritmo primal-dual para Steiner Tree em grafos

8. Compare empiricamente heurísticas para TSP em instâncias TSPLIB

9. Prove que Set Cover ponderado admite ln(n)-aproximação

10. Implemente algoritmo de busca local para MAX-CUT com análise de convergência

Exercícios Avançados:

11. Desenvolva PTAS para problema de empacotamento em dimensão fixa

12. Analise hierarquia de Lasserre para problema específico de sua escolha

13. Implemente solver para VRP com janelas de tempo usando técnicas combinadas

14. Prove resultado de inaproximabilidade para problema usando redução de PCP

15. Desenvolva algoritmo online competitivo para problema de alocação dinâmica

Abordagem para Exercícios

Para maximizar aprendizado: tente resolver sem consultar soluções inicialmente, use múltiplas abordagens quando possível, implemente algoritmos para ganhar intuição prática, compare resultados teóricos com experimentais, e busque compreensão conceitual profunda além de correção técnica. Discutir soluções com colegas enriquece aprendizado significativamente.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 47
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Projetos e Estudos de Caso

Projetos práticos integram múltiplas técnicas de aproximação em contextos realísticos, desenvolvendo competências de modelagem, implementação, análise experimental, e comunicação de resultados. Estudos de caso baseados em problemas industriais reais demonstram como conceitos teóricos traduzem-se em soluções práticas, incluindo considerações sobre dados imperfeitos, restrições operacionais não modeladas, e integração com sistemas legados.

O desenvolvimento de projetos completos requer habilidades além de design algorítmico: coleta e limpeza de dados, validação de modelos, calibração de parâmetros, análise de sensibilidade, documentação técnica, e apresentação de resultados para audiências não técnicas. Estas competências transversais são essenciais para aplicação bem-sucedida de aproximação algorítmica em contextos profissionais diversos.

A avaliação de projetos considera não apenas correção técnica mas também criatividade na modelagem, rigor na análise experimental, clareza na comunicação, e reflexão crítica sobre limitações e possíveis melhorias. Esta abordagem holística prepara estudantes para desafios reais onde problemas não vêm perfeitamente formulados e soluções requerem balanceamento de múltiplos objetivos conflitantes.

Projeto Exemplo: Sistema de Roteamento

Desenvolvimento completo de sistema prático:

Fase 1: Definição do problema

• Cliente: Empresa de entregas urbanas

• Requisitos: Minimizar distância, respeitar janelas de tempo

• Restrições: Capacidade dos veículos, turnos dos motoristas

• Dados: Histórico de 6 meses, 50 veículos, 500-800 entregas/dia

Fase 2: Modelagem

• Problema base: VRP com janelas de tempo e capacidades

• Simplificações necessárias: Ignorar tráfego variável inicialmente

• Extensões: Prioridades de clientes, múltiplos depósitos

Fase 3: Desenvolvimento de solução

• Abordagem híbrida:

1. Clustering geográfico inicial

2. TSP com janelas por cluster

3. Busca local inter-rotas

• Implementação em Python com bibliotecas OR-Tools

Fase 4: Validação experimental

• Testes em dados históricos

• Comparação com rotas reais: 12% melhoria média

• Tempo de computação: 8 minutos para 800 entregas

• Taxa de factibilidade: 98% (janelas respeitadas)

Fase 5: Implantação e monitoramento

• Piloto com 10 veículos por 2 semanas

• Ajustes baseados em feedback dos motoristas

• Roll-out completo após validação

• Economia anual projetada: R$ 450.000

Documentação de Projetos

Projetos práticos devem incluir: especificação clara do problema com motivação, descrição da modelagem com justificativas de simplificações, apresentação do algoritmo com análise de complexidade e garantias, resultados experimentais com gráficos e tabelas, discussão crítica de limitações, e sugestões para trabalhos futuros. Código deve ser bem documentado e reproduzível.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 48
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Orientações e Gabaritos Selecionados

Esta seção fornece gabaritos para exercícios selecionados e orientações gerais para resolução dos problemas propostos, oferecendo suporte ao aprendizado independente sem comprometer valor pedagógico da resolução autônoma. As soluções emphasizam estratégias de pensamento e métodos de verificação tanto quanto resultados finais, promovendo desenvolvimento de competências analíticas duradouras.

Para exercícios mais complexos, são apresentadas múltiplas abordagens de solução quando apropriado, demonstrando flexibilidade dos métodos de aproximação e encorajando exploração de diferentes perspectivas sobre os mesmos problemas. Esta diversidade de abordagens desenvolve maturidade algorítmica e adaptabilidade intelectual essenciais para pesquisa e aplicação profissional.

Orientações incluem sugestões para auto-avaliação, identificação de erros comuns, e extensões naturais dos problemas que proporcionam oportunidades adicionais de aprofundamento. O objetivo é facilitar aprendizado ativo e desenvolvimento de autonomia intelectual necessária para aplicação efetiva dos conceitos estudados em contextos novos e desafiadores.

Gabaritos Selecionados

Exercício 1: Use análise de swap: cada tarefa causa ≤ tₘₐₓ de diferença

Exercício 2: Grafo K₂,ₙ com emparelhamento de tamanho n, ótimo = n, algoritmo = 2n

Exercício 3: MST: O(m log n), Matching: O(n³), Euler: O(m), Total: O(n³)

Exercício 6: K = ε·Vₘₐₓ/n, DP em valores escalonados, complexidade O(n³/ε)

Exercício 9: Análise por precificação harmônica, similar ao caso não ponderado

Orientações gerais:

• Para análise de razões: busque cotas inferiores no ótimo através de relaxações

• Para PTAS: identifique parâmetro dependente de ε que limita busca

• Para implementações: teste em instâncias conhecidas antes de dados reais

• Para provas: use instâncias pequenas para ganhar intuição

• Para comparações: considere tanto garantias teóricas quanto performance empírica

Recursos adicionais:

• TSPLIB: Biblioteca de instâncias para TSP e VRP

• OR-Library: Problemas de otimização combinatória

• GitHub: Implementações de referência de algoritmos clássicos

• ArXiv: Artigos recentes sobre aproximação algorítmica

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 49
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Ferramentas e Bibliotecas

A implementação prática de algoritmos de aproximação beneficia-se enormemente de bibliotecas especializadas que fornecem componentes reutilizáveis, solvers eficientes, e estruturas de dados otimizadas. Ferramentas modernas como Google OR-Tools, Gurobi, CPLEX, e bibliotecas de código aberto como NetworkX e SCIP permitem prototipagem rápida e implementação de sistemas robustos sem reimplementar funcionalidades básicas.

Solvers de programação linear e inteira como Gurobi e CPLEX oferecem implementações altamente otimizadas de simplex, métodos de ponto interior, e técnicas de branch-and-cut que superam implementações ingênuas por ordens de magnitude. Estes solvers incluem heurísticas primal, técnicas de pré-processamento, e estratégias de branching sofisticadas desenvolvidas ao longo de décadas de pesquisa industrial.

Frameworks de otimização como OR-Tools integram múltiplos solvers, heurísticas para problemas combinatórios, e ferramentas de modelagem que facilitam tradução de problemas matemáticos para código. A escolha entre ferramentas comerciais versus código aberto depende de requisitos de performance, suporte técnico, licenciamento, e integração com sistemas existentes, com cada opção oferecendo vantagens específicas para diferentes contextos de aplicação.

Exemplo de Implementação com OR-Tools

Código Python para Vertex Cover:

from ortools.sat.python import cp_model

def vertex_cover_lp(edges, num_vertices):

# Criar modelo

model = cp_model.CpModel()

# Variáveis: x[i] = 1 se vértice i na cobertura

x = [model.NewBoolVar(f'x_{i}')

for i in range(num_vertices)]

# Restrições: cada aresta coberta

for (u, v) in edges:

model.Add(x[u] + x[v] >= 1)

# Objetivo: minimizar número de vértices

model.Minimize(sum(x))

# Resolver

solver = cp_model.CpSolver()

status = solver.Solve(model)

if status == cp_model.OPTIMAL:

cover = [i for i in range(num_vertices)

if solver.Value(x[i]) == 1]

return cover, len(cover)

return None, None

Uso:

edges = [(0,1), (1,2), (2,3), (3,0), (1,3)]

cover, size = vertex_cover_lp(edges, 4)

print(f"Cobertura: {cover}, Tamanho: {size}")

Saída: Cobertura: [1, 3], Tamanho: 2

Escolha de Ferramentas

Para projetos acadêmicos: OR-Tools ou SCIP (código aberto, bem documentados). Para aplicações comerciais de pequeno porte: mesmos, ou Gurobi acadêmico. Para grandes sistemas industriais: Gurobi ou CPLEX comercial (suporte profissional). Para prototipagem rápida: Python com bibliotecas especializadas. Para máxima performance: C++ com bibliotecas otimizadas.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 50
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Metodologia de Validação Experimental

A validação experimental de algoritmos de aproximação complementa análise teórica demonstrando performance prática em instâncias representativas, identificando casos onde algoritmos superam garantias de pior caso, e comparando múltiplas abordagens em condições controladas. Metodologia rigorosa requer planejamento cuidadoso de experimentos, seleção apropriada de benchmarks, análise estatística de resultados, e apresentação clara de conclusões com limitações explicitadas.

Benchmarks estabelecidos como TSPLIB para problemas de roteamento, instâncias de competições de otimização, e conjuntos de dados públicos permitem comparação com trabalhos anteriores e validação de implementações. Geração de instâncias sintéticas com propriedades controláveis facilita análise sistemática de como características da entrada afetam performance, revelando regimes onde diferentes algoritmos são preferíveis.

Análise estatística apropriada inclui testes de significância para comparações entre algoritmos, intervalos de confiança para estimativas de qualidade média, e correção para comparações múltiplas quando necessário. Visualização efetiva através de gráficos de performance profiles, scatter plots de qualidade versus tempo, e box plots de distribuições complementa tabelas numéricas, facilitando compreensão de resultados por audiências diversas.

Protocolo Experimental

Estrutura para validação rigorosa:

1. Seleção de instâncias

• Benchmarks estabelecidos: 50 instâncias TSPLIB

• Instâncias sintéticas: 100 grafos aleatórios variando

- Tamanho: n ∈ {50, 100, 200, 500, 1000}

- Densidade: d ∈ {0,1, 0,3, 0,5, 0,7, 0,9}

• Instâncias do cliente: 30 casos reais históricos

2. Algoritmos comparados

• A1: Algoritmo proposto

• A2: Estado da arte da literatura

• A3: Baseline guloso simples

• A4: Solver comercial (Gurobi) com limite de tempo

3. Métricas avaliadas

• Qualidade: (Solução - Melhor conhecida) / Melhor conhecida

• Tempo: Segundos até solução

• Escalabilidade: Como métricas variam com n

4. Configuração experimental

• Hardware: Intel i7, 16GB RAM

• Repetições: 10 execuções por instância (randomizados)

• Timeout: 1 hora por instância

5. Análise estatística

• Teste de Wilcoxon para comparação pareada

• Nível de significância: α = 0,05

• Correção de Bonferroni para múltiplas comparações

6. Apresentação de resultados

• Tabela: Média e desvio padrão por categoria

• Gráfico: Performance profile comparativo

• Discussão: Análise de trade-offs observados

Reprodutibilidade

Para garantir reprodutibilidade: documente versões exatas de bibliotecas e ferramentas, forneça sementes para geradores aleatórios, disponibilize código e dados quando possível, descreva hardware e configurações do sistema, e reporte todos parâmetros dos algoritmos. Transparência completa permite validação independente e constrói confiança nos resultados.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 51
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Capítulo 10: Aplicações Práticas e Desenvolvimentos

Aplicações em Ciência de Dados

A aproximação algorítmica desempenha papel central em ciência de dados moderna onde volume, velocidade, e variedade de informação excedem capacidades de processamento exato, requerendo técnicas que balanceiam precisão com eficiência computacional. Aplicações incluem clustering de grandes conjuntos de dados, seleção de features em aprendizado de máquina, otimização de hiperparâmetros, e construção de índices para busca aproximada em alta dimensão.

Algoritmos de clustering como k-means representam heurísticas de aproximação para problema de minimização de variância intra-cluster, NP-difícil em sua formulação geral. Variantes mais sofisticadas como k-means++ melhoram inicialização através de amostragem probabilística que garante aproximação esperada do ótimo, demonstrando como aleatoriedade controlada produz garantias práticas valiosas mesmo sem otimalidade demonstrável.

Redução de dimensionalidade através de técnicas como random projection e sketching permite análise de dados em alta dimensão com complexidade sub-linear, essencial para processamento de textos, imagens, e outros tipos de dados não estruturados em grande escala. Estas técnicas exploram propriedades probabilísticas de projeções aleatórias que preservam distâncias aproximadamente com alta probabilidade, fundamentando aplicações em recuperação de informação, sistemas de recomendação, e análise de redes sociais.

K-Means++ em Prática

Melhoria sobre k-means clássico:

Problema: Particionar n pontos em k clusters minimizando soma de distâncias quadradas aos centros

K-means clássico:

• Inicialização: k centros aleatórios

• Iteração: atribuir pontos ao centro mais próximo, recalcular centros

• Problema: muito sensível à inicialização, pode convergir para mínimos locais ruins

K-means++:

• Inicialização inteligente:

1. Escolher primeiro centro uniformemente aleatório

2. Para cada centro subsequente:

- Calcular D(x) = distância de x ao centro mais próximo

- Escolher novo centro com prob. ∝ D(x)²

• Depois: mesmas iterações do k-means

Garantia teórica:

• Custo esperado: O(log k) × OPT

• Prática: tipicamente 2-3× melhor que inicialização aleatória

Aplicação: Segmentação de clientes

• Dataset: 100.000 clientes, 20 features

• k = 10 segmentos

• K-means random: custo médio = 15.200

• K-means++: custo médio = 12.800 (16% melhor)

• Tempo adicional de inicialização: desprezível (< 1s)

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 52
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Tendências e Desenvolvimentos Futuros

O futuro da aproximação algorítmica entrelaça-se com desenvolvimentos em computação quântica, aprendizado de máquina, otimização distribuída, e computação de alto desempenho, criando oportunidades para soluções híbridas que combinam múltiplos paradigmas computacionais. Algoritmos quânticos prometem speedups exponenciais para certos problemas de otimização, embora aplicabilidade prática aguarde maturação de hardware quântico tolerante a falhas.

A integração de aprendizado de máquina com otimização combinatória representa fronteira ativa de pesquisa, onde redes neurais aprendem heurísticas para decisões em algoritmos de aproximação, potencialmente superando regras manuais para classes específicas de instâncias. Graph neural networks mostram-se particularmente promissoras para problemas em grafos, aprendendo representações que capturam estrutura relevante para otimização.

Otimização robusta e sob incerteza ganha importância crescente conforme sistemas autônomos e decisões críticas dependem de algoritmos de aproximação operando em ambientes dinâmicos e parcialmente observáveis. Desenvolvimento de garantias que incorporam incerteza paramétrica, adversários adaptativos, e múltiplos objetivos conflitantes representa desafio central para próxima geração de algoritmos aproximados aplicáveis em contextos reais complexos.

Aprendizado de Heurísticas

Uso de ML para melhorar aproximação:

Abordagem tradicional:

• Heurística fixa (ex: escolher aresta de menor custo)

• Mesma regra para todas instâncias

• Performance limitada por qualidade da regra

Abordagem baseada em ML:

• Treinar modelo para prever decisões boas

• Features: Propriedades da instância parcial

• Labels: Decisões em soluções ótimas conhecidas

• Modelo aprende padrões específicos do domínio

Exemplo: TSP com RL

• Reinforcement learning para sequência de cidades

• Estado: cidades já visitadas + não visitadas

• Ação: próxima cidade a visitar

• Recompensa: -distância adicionada

• Política aprendida: supera heurísticas simples

Resultados experimentais:

• Dataset: TSP com 50-100 cidades

• Heurística tradicional: 8% acima do ótimo

• Política aprendida: 3% acima do ótimo

• Trade-off: tempo de treinamento vs. qualidade

Limitações atuais:

• Generalização para instâncias muito diferentes

• Necessidade de dados de treinamento (ótimos conhecidos)

• Interpretabilidade limitada das decisões

Direções promissoras:

• Transfer learning entre domínios relacionados

• Combinação de heurísticas clássicas com ML

• Meta-learning para adaptação rápida

Pesquisa Contemporânea

Áreas ativas de pesquisa incluem: algoritmos aproximados para problemas em grafos dinâmicos, aproximação com privacidade diferencial, algoritmos justos (fairness-aware) em otimização, otimização multi-objetivo com aproximações de fronteira de Pareto, e algoritmos distribuídos de aproximação para computação em larga escala. Conferências como STOC, FOCS, SODA, e APPROX publicam avanços regulares.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 53
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Referências Bibliográficas

Bibliografia Fundamental

CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford. Algoritmos: Teoria e Prática. 3ª ed. Rio de Janeiro: Elsevier, 2012.

GAREY, Michael R.; JOHNSON, David S. Computers and Intractability: A Guide to the Theory of NP-Completeness. New York: W. H. Freeman, 1979.

HOCHBAUM, Dorit S. (Ed.). Approximation Algorithms for NP-Hard Problems. Boston: PWS Publishing, 1997.

VAZIRANI, Vijay V. Approximation Algorithms. Berlin: Springer-Verlag, 2001.

WILLIAMSON, David P.; SHMOYS, David B. The Design of Approximation Algorithms. Cambridge: Cambridge University Press, 2011.

Bibliografia Avançada

AUSIELLO, Giorgio et al. Complexity and Approximation: Combinatorial Optimization Problems and Their Approximability Properties. Berlin: Springer, 1999.

CYGAN, Marek et al. Parameterized Algorithms. Cham: Springer, 2015.

DOWNEY, Rodney G.; FELLOWS, Michael R. Fundamentals of Parameterized Complexity. London: Springer, 2013.

KHOT, Subhash. On the Unique Games Conjecture. In: Proceedings of the 25th IEEE Conference on Computational Complexity, p. 99-121, 2010.

LAWLER, Eugene L. et al. The Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization. Chichester: Wiley, 1985.

MOTWANI, Rajeev; RAGHAVAN, Prabhakar. Randomized Algorithms. Cambridge: Cambridge University Press, 1995.

Aplicações Específicas

AHUJA, Ravindra K.; MAGNANTI, Thomas L.; ORLIN, James B. Network Flows: Theory, Algorithms, and Applications. Upper Saddle River: Prentice Hall, 1993.

APPLEGATE, David L. et al. The Traveling Salesman Problem: A Computational Study. Princeton: Princeton University Press, 2006.

BERTSIMAS, Dimitris; TSITSIKLIS, John N. Introduction to Linear Optimization. Belmont: Athena Scientific, 1997.

GOLDEN, Bruce L.; RAGHAVAN, S.; WASIL, Edward A. (Eds.). The Vehicle Routing Problem: Latest Advances and New Challenges. New York: Springer, 2008.

TOTH, Paolo; VIGO, Daniele (Eds.). Vehicle Routing: Problems, Methods, and Applications. 2ª ed. Philadelphia: SIAM, 2014.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 54
Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações

Programação Linear e Semidefinida

GÄRTNER, Bernd; MATOUSEK, Jiri. Approximation Algorithms and Semidefinite Programming. Berlin: Springer, 2012.

GRÖTSCHEL, Martin; LOVÁSZ, László; SCHRIJVER, Alexander. Geometric Algorithms and Combinatorial Optimization. 2ª ed. Berlin: Springer, 1993.

SCHRIJVER, Alexander. Theory of Linear and Integer Programming. Chichester: Wiley, 1986.

VANDERBEI, Robert J. Linear Programming: Foundations and Extensions. 4ª ed. New York: Springer, 2014.

Artigos Seminais

ARORA, Sanjeev. Polynomial Time Approximation Schemes for Euclidean Traveling Salesman and Other Geometric Problems. Journal of the ACM, v. 45, n. 5, p. 753-782, 1998.

CHRISTOFIDES, Nicos. Worst-Case Analysis of a New Heuristic for the Travelling Salesman Problem. Report 388, Graduate School of Industrial Administration, CMU, 1976.

GOEMANS, Michel X.; WILLIAMSON, David P. Improved Approximation Algorithms for Maximum Cut and Satisfiability Problems Using Semidefinite Programming. Journal of the ACM, v. 42, n. 6, p. 1115-1145, 1995.

JOHNSON, David S. Approximation Algorithms for Combinatorial Problems. Journal of Computer and System Sciences, v. 9, n. 3, p. 256-278, 1974.

Recursos Online e Ferramentas

GOOGLE OR-TOOLS. Open Source Software for Combinatorial Optimization. Disponível em: https://developers.google.com/optimization. Acesso em: jan. 2025.

GUROBI OPTIMIZATION. Gurobi Optimizer Reference Manual. Disponível em: https://www.gurobi.com. Acesso em: jan. 2025.

NETWORKX. Software for Complex Networks. Disponível em: https://networkx.org. Acesso em: jan. 2025.

TSPLIB. Library of Sample Instances for the TSP. Disponível em: http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95. Acesso em: jan. 2025.

Periódicos Especializados

ALGORITHMICA. Springer.

JOURNAL OF THE ACM. Association for Computing Machinery.

MATHEMATICAL PROGRAMMING. Springer.

OPERATIONS RESEARCH. INFORMS.

SIAM JOURNAL ON COMPUTING. Society for Industrial and Applied Mathematics.

Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações
Página 55

Sobre Este Volume

"Aproximação Algorítmica: Fundamentos, Técnicas e Aplicações" oferece tratamento abrangente e rigoroso dos algoritmos de aproximação, desde conceitos fundamentais de complexidade computacional até técnicas avançadas de programação linear, esquemas de aproximação polinomial, e aplicações em problemas práticos de otimização. Este volume da Coleção Escola de Lógica Matemática destina-se a estudantes avançados de graduação, pós-graduandos em ciências exatas, e profissionais interessados em dominar ferramentas essenciais para lidar com problemas computacionalmente intratáveis.

Desenvolvido em conformidade com as diretrizes da Base Nacional Comum Curricular para pensamento computacional e raciocínio lógico-matemático, o livro integra rigor teórico com aplicações práticas em logística, redes, otimização combinatória, e ciência de dados. A obra combina análise matemática rigorosa de razões de aproximação com implementações práticas, estudos de caso industriais, e discussão de ferramentas computacionais modernas para resolução de problemas de grande escala.

Principais Características:

  • • Fundamentos de complexidade computacional e classes P, NP, NP-difícil
  • • Algoritmos gulosos de aproximação com análise formal de razões
  • • Cobertura de vértices, conjuntos, e problemas relacionados
  • • Problema do caixeiro-viajante e heurísticas clássicas
  • • Programação linear, relaxação, e técnicas de arredondamento
  • • Método primal-dual e certificados de qualidade
  • • Esquemas de aproximação polinomial (PTAS e FPTAS)
  • • Algoritmos online e análise competitiva
  • • Aplicações em logística, redes, e ciência de dados
  • • Implementação prática com ferramentas modernas
  • • Exercícios graduados e projetos de implementação
  • • Tendências futuras e integração com aprendizado de máquina

João Carlos Moreira

Universidade Federal de Uberlândia • 2025

CÓDIGO DE BARRAS
9 788544 000441