Estoy tratando de construir una lista de algoritmos / problemas que son "excepcionalmente útiles", como resolver problemas que 'parecen' muy exponenciales en la naturaleza, pero que tienen un algoritmo particularmente inteligente que finalmente los resuelve. Ejemplos de lo que quiero decir:
- Programación lineal (El algoritmo simplex es tiempo exponencial; ¡llevó mucho tiempo encontrar una solución de tiempo polinomial!)
- Más en general, la programación semidefinida
- Prueba de primalidad
- 2-SAT y HORNSAT
- Calcular determinantes (si esto no suena difícil, considere el permanente)
- Encontrar combinaciones perfectas
- Una variedad de problemas teóricos de grupos difíciles que se pueden lograr utilizando la Clasificación de grupos simples finitos
- Una variedad de problemas de gráficos duros que se pueden lograr usando caracterizaciones menores prohibidas (incrustación en una superficie arbitraria; delimitación del ancho de árbol y ancho de rama; gráficos reducibles Delta-Wye)
- Calcular exponenciales en un grupo acotado (es decir, calcular en pasos, como se logra mediante la cuadratura repetida)
- Cálculos basados en el algoritmo LLL. (Como un caso especial: algoritmo euclidiano. Como un caso más general: algoritmos PSLQ o HJLS).
- Problemas de restricción sin términos de Taylor (?). Admito que no entiendo completamente esto, pero parece que probablemente subsume los casos 2-SAT / HORNSAT anteriores y cualquier álgebra lineal sobre campos finitos. Ver aquí para una publicación más larga
- Problemas computables a través de reducciones holográficas .
Como mención honorífica, también mencionaría el isomorfismo gráfico, porque todavía es muy fácil ( ), y es equivalente a muchos otros problemas de isomorfismo:
- Dígrafos / multigrafos / hipergrafías (una especie de problema 'más difícil')
- Autómatas finitos / CFG
Obviamente, hay una variedad de dificultades en estos, pero todos dejan al menos a algunas personas con un cierto sentido de "sorpresa" en el sentido de que el problema puede sonar difícil pero resultar tratable. El LP puede parecer relativamente sencillo, pero a las personas les llevó bastante tiempo construir una solución real. La cuadratura repetida o la resolución de 2-SAT es algo que un estudiante universitario podría inventar por sí mismo, pero si solo hubiera aprendido sobre los problemas NP-Complete sin haber visto HORNSAT, podría sonar como un candidato natural para NP-Completeness. Resolver el CFSG o tener una forma polinómica para verificar la reducibilidad de Delta-Wye no es tarea fácil.
Espero que esto tenga sentido; obviamente hay muchos atributos subjetivos aquí, pero tengo curiosidad por escuchar lo que otras personas encuentran como soluciones eficientes para problemas "obviamente difíciles".