Ultimamente, comecei a procurar algoritmos de aproximação para problemas difíceis de NP e estava pensando nas razões teóricas para estudá-los. (A questão não é para ser inflamatória - estou apenas curiosa).
Alguma teoria verdadeiramente bela saiu do estudo dos algoritmos de aproximação - a conexão entre o teorema PCP e a dureza da aproximação, a conjectura UGC, o algoritmo de aproximação Goeman-Williamson, etc.
Eu estava pensando sobre o ponto de estudar algoritmos de aproximação para problemas como Traveller Salesman, Asymmetric Traveller Salesman e outras variantes, vários problemas no design de mecanismos (por exemplo, em leilões combinatórios), etc. Esses algoritmos de aproximação foram úteis em outras partes da teoria? no passado ou eles são estudados puramente por si mesmos?
Nota: Não estou perguntando sobre nenhuma aplicação prática, pois, até onde eu sei, no mundo real, são principalmente heurísticas que são aplicadas, em vez de algoritmos de aproximação, e as heurísticas raramente são informadas por qualquer insight obtido pelo estudo dos algoritmos de aproximação para o problema.
Respostas:
Discordo totalmente do último parágrafo. Declarações gerais como essa não são úteis. Se você olhar documentos em muitas áreas de sistemas, como redes, bancos de dados, IA e assim por diante, verá que muitos algoritmos de aproximação são usados na prática. Existem alguns problemas para os quais se deseja respostas muito precisas; por exemplo, digamos que uma companhia aérea seja interessante para otimizar a programação de sua frota. Nesses casos, as pessoas usam várias heurísticas que levam um tempo computacional substancial, mas obtêm melhores resultados do que um algoritmo de aproximação genérico pode fornecer.
Agora, por algumas razões teóricas para o estudo de algoritmos de aproximação. Primeiro, o que explica o fato de que a mochila é muito fácil na prática, enquanto a coloração do gráfico é bastante difícil? Ambos são NP-Hard e poli-time redutíveis um ao outro. Segundo, estudando algoritmos de aproximação para casos especiais de um problema, é possível identificar quais classes de instâncias provavelmente serão fáceis ou difíceis. Por exemplo, sabemos que muitos problemas admitem um PTAS em gráficos planares e livres de menores, enquanto eles são muito mais difíceis em gráficos gerais arbitrários. A idéia de aproximação permeia o design moderno de algoritmos. Por exemplo, as pessoas usam algoritmos de fluxo de dados e sem a lente de aproximação é difícil entender / projetar algoritmos, porque mesmo problemas simples não podem ser resolvidos exatamente.
fonte
fonte
Também não concordo com a "nota", pelo menos declarada nesta generalidade. Relacionado a isso, alguém sabe se a palestra sobre o prêmio Kanellakis de David Johnson está disponível em algum lugar?
Além disso, depois que percebemos que todos os problemas difíceis de NP são equivalentes em relação à pior complexidade das soluções exatas, é muito natural indagar sobre a complexidade de encontrar soluções aproximadas. E Chandra enfatiza bastante a mudança de perspectiva que os algoritmos de aproximação trazem ao design do algoritmo.
fonte
As melhores heurísticas são realmente algoritmos de aproximação. Os algoritmos de aproximação mais bonitos são apenas heurísticas "estúpidas" que funcionam. Por exemplo, pesquisa local por agrupamento, agrupamento ganancioso (Gonzalez), um pelo preço de dois, vários algoritmos gananciosos, etc, etc, etc.
Portanto, estudar algoritmos de aproximação é realmente entender quais heurísticas são algoritmos de aproximação garantidos. A esperança é que a pesquisa sobre algoritmos de aproximação crie dois tipos de fertilização cruzada:
Em resumo, o mundo não é exato, as entradas não são exatas, as funções de destino otimizadas por vários problemas de algoritmo não são exatas e, na melhor das hipóteses, representam uma aproximação nebulosa do que se deseja, e os cálculos não são exatos. Por que alguém aprenderia algoritmos exatos? (Resposta: porque algoritmos exatos são realmente bons algoritmos de aproximação.)
No mundo real, existem muito poucos algoritmos exatos - você precisa usar a aproximação para ser remotamente relevante ...
fonte
Lidar com problemas com variáveis contínuas é muito irritante com algoritmos exatos. Por exemplo, o que significa especificar os pesos de borda de uma instância TSP com números reais exatos?
Quando permitimos algoritmos FPTAS para esses problemas, podemos quantificar esses parâmetros em números inteiros. Isso torna o problema muito melhor comportado (pode usar máquinas de Turing padrão), mas gera um pequeno erro.
fonte