Últimamente comencé a buscar algoritmos de aproximación para problemas NP-difíciles y me preguntaba sobre las razones teóricas para estudiarlos. (La pregunta no pretende ser inflamatoria, solo tengo curiosidad).
Del estudio de los algoritmos de aproximación ha surgido una teoría realmente hermosa: la conexión entre el teorema de PCP y la dureza de la aproximación, la conjetura de UGC, el algoritmo de aproximación de Goeman-Williamson, etc.
Sin embargo, me preguntaba sobre el punto de estudiar algoritmos de aproximación para problemas como el vendedor ambulante, el vendedor ambulante asimétrico y otras variantes, varios problemas en el diseño de mecanismos (por ejemplo, en subastas combinatorias), etc. ¿Han sido útiles estos algoritmos de aproximación en otras partes de la teoría? en el pasado o se estudian exclusivamente por su propio bien?
Nota: no estoy preguntando acerca de ninguna aplicación práctica ya que, hasta donde yo sé, en el mundo real, se aplican principalmente heurísticas en lugar de algoritmos de aproximación y las heurísticas rara vez se informan por algún conocimiento obtenido al estudiar los algoritmos de aproximación para problema.
Respuestas:
Estoy totalmente en desacuerdo con el último párrafo. Las declaraciones generales como esa no son útiles. Si observa documentos en muchas áreas de sistemas, como redes, bases de datos, inteligencia artificial, etc., verá que en la práctica se utilizan muchos algoritmos de aproximación. Hay algunos problemas para los cuales uno desea respuestas muy precisas; por ejemplo, una aerolínea interesante para optimizar la programación de su flota. En tales casos, las personas usan diversas heurísticas que requieren un tiempo de cálculo considerable pero obtienen mejores resultados que los que puede proporcionar un algoritmo de aproximación genérico.
Ahora por algunas razones teóricas para estudiar algoritmos de aproximación. Primero, ¿qué explica el hecho de que la mochila es muy fácil en la práctica, mientras que la coloración de gráficos es bastante difícil? Ambos son NP-Hard y poli-tiempo reducibles entre sí. En segundo lugar, al estudiar algoritmos de aproximación para casos especiales de un problema, se puede determinar qué clases de instancias pueden ser fáciles o difíciles. Por ejemplo, sabemos que muchos problemas admiten un PTAS en gráficos planos y sin gráficos menores, mientras que son mucho más difíciles en gráficos generales arbitrarios. La idea de aproximación impregna el diseño moderno de algoritmos. Por ejemplo, las personas usan algoritmos de transmisión de datos y sin la lente de aproximación es difícil de entender / diseñar algoritmos porque incluso los problemas simples no pueden resolverse exactamente.
fuente
fuente
También estoy en desacuerdo con la "nota", al menos en esta generalidad. En relación con esto, ¿alguien sabe si la charla de premios Kanellakis de David Johnson está disponible en algún lugar?
Además, una vez que nos damos cuenta de que todos los problemas NP-hard son equivalentes con respecto a la complejidad del peor de los casos de soluciones exactas, es muy natural preguntar sobre la complejidad de encontrar soluciones aproximadas. Y Chandra hace un gran punto sobre el cambio de perspectiva que los algoritmos de aproximación aportan al diseño del algoritmo.
fuente
Las mejores heurísticas son realmente algoritmos de aproximación. Los algoritmos de aproximación más bellos son simplemente heurísticas "estúpidas" que funcionan. Por ejemplo, búsqueda local de agrupación, agrupación codiciosa (González), una por el precio de dos, varios algoritmos codiciosos, etc., etc.
Por lo tanto, estudiar algoritmos de aproximación se trata realmente de comprender qué heurísticas son algoritmos de aproximación garantizados. La esperanza es que la investigación sobre algoritmos de aproximación cree dos tipos de fertilización cruzada:
En resumen, el mundo no es exacto, las entradas no son exactas, las funciones de destino optimizadas por varios problemas de algoritmos no son exactas y, en el mejor de los casos, representan una aproximación difusa de lo que uno quiere, y los cálculos no son exactos. ¿Por qué alguien aprendería algoritmos exactos? (Respuesta: Porque los algoritmos exactos son realmente buenos algoritmos de aproximación).
En el mundo real, hay muy pocos algoritmos exactos: debe usar la aproximación para ser remotamente relevante ...
fuente
Tratar problemas con variables continuas es muy molesto con algoritmos exactos. Por ejemplo, ¿qué significa especificar los pesos de borde de una instancia de TSP con números reales exactos?
Cuando permitimos algoritmos FPTAS para estos problemas, podemos cuantificar estos parámetros en enteros. Esto hace que el problema se comporte mucho mejor (puede usar máquinas Turing estándar), pero incurre en un pequeño error.
fuente