Versión beta. Problem Forge es nuevo y está abierto solo con invitación. El período de prueba beta dura hasta el 2026-11-30 inclusive; la apertura completa es el 2026-12-01 00:00 UTC. Algunas cosas pueden fallar, y entonces podemos corregir las clasificaciones. La dificultad de algunos peldaños puede estar mal. No hay premios durante la beta, y la recompensa no está abierta. Tu cuenta y tu progreso se conservan cuando termine la beta. Por favor, cuéntanos qué funciona bien y qué falla: admin@problemforge.com.

Referencias

Más lecturas sobre los 10 problemas, y herramientas que te ayudan a escalar. Empieza por Wikipedia. Los artículos y libros de abajo son las fuentes clásicas.

Contexto: P, NP y NP-completitud

  • Wikipedia: P versus NP problem, NP-completeness, Cook–Levin theorem.
  • Clay Mathematics Institute, P vs NP, uno de los siete Problemas del Milenio.
  • Stephen A. Cook, "The complexity of theorem-proving procedures", Proceedings of the Third Annual ACM Symposium on Theory of Computing (STOC '71), 1971, pp. 151–158. doi:10.1145/800157.805047
  • Richard M. Karp, "Reducibility among combinatorial problems", en R. E. Miller y J. W. Thatcher (eds.), Complexity of Computer Computations, Plenum Press, 1972, pp. 85–103. doi:10.1007/978-1-4684-2001-2_9
  • Michael R. Garey y David S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, 1979. ISBN 0-7167-1045-5. El catálogo de referencia de los problemas NP-completos.
  • Michael Sipser, Introduction to the Theory of Computation, 3.ª ed., Cengage Learning, 2013. ISBN 978-1-133-18779-0. El capítulo 7 presenta P, NP y la NP-completitud.
  • Sanjeev Arora y Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009. doi:10.1017/CBO9780511804090

Satisfacibilidad booleana (SAT)

  • Wikipedia: Boolean satisfiability problem, SAT solver.
  • Clásico: Cook 1971 (arriba), la primera prueba de NP-completitud. Para resolver: Martin Davis y Hilary Putnam, "A computing procedure for quantification theory", Journal of the ACM 7(3), 1960, pp. 201–215, doi:10.1145/321033.321034; y Martin Davis, George Logemann y Donald Loveland, "A machine program for theorem-proving", Communications of the ACM 5(7), 1962, pp. 394–397, doi:10.1145/368273.368557 (DPLL, el método en que se basa todo solver moderno).
  • Panorama: Armin Biere, Marijn Heule, Hans van Maaren y Toby Walsh (eds.), Handbook of Satisfiability, 2.ª ed., IOS Press, 2021. doi:10.3233/FAIA336

3-SAT

  • Wikipedia: 3-satisfiability (una sección del artículo sobre SAT).
  • Clásico: Uwe Schöning, "A probabilistic algorithm for k-SAT and constraint satisfaction problems", 40th Annual Symposium on Foundations of Computer Science (FOCS), IEEE, 1999, pp. 410–414, doi:10.1109/SFFCS.1999.814612; versión de revista en Algorithmica 32(4), 2002, pp. 615–623, doi:10.1007/s00453-001-0094-7. Un método simple que hace movimientos al azar. En 3-SAT es más rápido que probar todos los casos.
  • Libro de texto: Donald E. Knuth, The Art of Computer Programming, Volume 4B: Combinatorial Algorithms, Part 2, Addison-Wesley, 2023, sección 7.2.2.2 (Satisfiability). ISBN 0-201-03806-4.

Conjunto independiente

Clique

  • Wikipedia: Clique problem.
  • Clásico: Coen Bron y Joep Kerbosch, "Algorithm 457: finding all cliques of an undirected graph", Communications of the ACM 16(9), 1973, pp. 575–577. doi:10.1145/362342.362367
  • Panorama: Qinghua Wu y Jin-Kao Hao, "A review on algorithms for maximum clique problems", European Journal of Operational Research 242(3), 2015, pp. 693–709. doi:10.1016/j.ejor.2014.09.064

Cobertura de vértices

  • Wikipedia: Vertex cover.
  • Clásico: G. L. Nemhauser y L. E. Trotter, "Vertex packings: structural properties and algorithms", Mathematical Programming 8(1), 1975, pp. 232–248. doi:10.1007/BF01580444 También: Jianer Chen, Iyad A. Kanj y Ge Xia, "Improved upper bounds for vertex cover", Theoretical Computer Science 411(40–42), 2010, pp. 3736–3756. doi:10.1016/j.tcs.2010.06.026
  • Libro de texto: Marek Cygan, Fedor V. Fomin, Łukasz Kowalik, Daniel Lokshtanov, Dániel Marx, Marcin Pilipczuk, Michał Pilipczuk y Saket Saurabh, Parameterized Algorithms, Springer, 2015. doi:10.1007/978-3-319-21275-3

3-coloración

  • Wikipedia: Graph coloring.
  • Clásico: Daniel Brélaz, "New methods to color the vertices of a graph", Communications of the ACM 22(4), 1979, pp. 251–256 (el método DSatur). doi:10.1145/359094.359101 También: Richard Beigel y David Eppstein, "3-coloring in time O(1.3289^n)", Journal of Algorithms 54(2), 2005, pp. 168–204. doi:10.1016/j.jalgor.2004.06.008
  • Libro de texto: R. M. R. Lewis, Guide to Graph Colouring: Algorithms and Applications, 2.ª ed., Springer, 2021. doi:10.1007/978-3-030-81054-2

Ciclo hamiltoniano

  • Wikipedia: Hamiltonian path problem, Hamiltonian path.
  • Clásico: Michael Held y Richard M. Karp, "A dynamic programming approach to sequencing problems", Journal of the Society for Industrial and Applied Mathematics 10(1), 1962, pp. 196–210, doi:10.1137/0110015; y Richard Bellman, "Dynamic programming treatment of the travelling salesman problem", Journal of the ACM 9(1), 1962, pp. 61–63, doi:10.1145/321105.321111. Moderno: Andreas Björklund, "Determinant sums for undirected Hamiltonicity", SIAM Journal on Computing 43(1), 2014, pp. 280–299. doi:10.1137/110839229
  • Panorama: Ronald J. Gould, "Advances on the Hamiltonian problem – a survey", Graphs and Combinatorics 19(1), 2003, pp. 7–52. doi:10.1007/s00373-002-0492-x
  • Instancias difíciles: Joeri Sleegers and Daan van den Berg, "The hardest Hamiltonian cycle problem instances: the plateau of yes and the cliff of no", SN Computer Science 3, article 372, 2022. Acceso abierto. doi:10.1007/s42979-022-01256-0

Problema del viajante (TSP)

  • Wikipedia: Travelling salesman problem.
  • Clásico: G. Dantzig, R. Fulkerson y S. Johnson, "Solution of a large-scale traveling-salesman problem", Journal of the Operations Research Society of America 2(4), 1954, pp. 393–410, doi:10.1287/opre.2.4.393; y S. Lin y B. W. Kernighan, "An effective heuristic algorithm for the traveling-salesman problem", Operations Research 21(2), 1973, pp. 498–516, doi:10.1287/opre.21.2.498. Held y Karp 1962 (arriba) es la programación dinámica exacta clásica.
  • Libro: David L. Applegate, Robert E. Bixby, Vašek Chvátal y William J. Cook, The Traveling Salesman Problem: A Computational Study, Princeton University Press, 2006. ISBN 978-0-691-12993-8.

Programación entera 0-1

Cobertura exacta por 3-conjuntos (X3C)

  • Wikipedia: Exact cover (la cobertura exacta por 3-conjuntos es el caso en que cada conjunto tiene tres elementos), Knuth's Algorithm X, Dancing links.
  • Clásico: Donald E. Knuth, "Dancing links", en Millennial Perspectives in Computer Science, 2000, pp. 187–214. arXiv:cs/0011047 El problema aparece como [SP2] en Garey y Johnson 1979 (arriba).
  • Libro de texto: Donald E. Knuth, The Art of Computer Programming, Volume 4B, Addison-Wesley, 2023, sección 7.2.2.1 (Dancing links). ISBN 0-201-03806-4.

Solvers y herramientas

Cada licencia es la que indica el proyecto. “Uso académico” significa que otros usos pueden necesitar permiso.

SAT

Grafos (conjunto independiente, clique, cobertura de vértices)

  • KaMIS: conjuntos independientes máximos y coberturas de vértices de grafos grandes y dispersos. MIT.
  • Cliquer (Patric Östergård y otros): búsqueda exacta de cliques máximos y de peso máximo. GNU GPL.
  • PMC (Ryan A. Rossi): clique máximo en paralelo. GNU GPL v3 o posterior.
  • NetworkX (código fuente): biblioteca de grafos en Python para experimentos pequeños. BSD 3-clause.

Cobertura exacta

  • DLX1, de Donald E. Knuth: Algorithm 7.2.2.1X (cobertura exacta con dancing links), en CWEB. Ni el programa ni la página que lo lista indican una licencia.

Problema del viajante y ciclo hamiltoniano

  • Concorde (Applegate, Bixby, Chvátal, Cook): solver exacto de TSP simétrico. Se permite el uso en investigación académica. Otros usos necesitan una licencia de William Cook.
  • LKH y LKH-3 (Keld Helsgaun): el método de Lin–Kernighan–Helsgaun para encontrar recorridos cortos, no siempre el más corto. LKH también resuelve directamente problemas de ciclo hamiltoniano. Solo para uso académico y no comercial. El autor se reserva todos los derechos.

Solvers generales de restricciones y de programación entera

  • RoundingSat (Jan Elffers, Jakob Nordström y otros): solver pseudobooleano que lee archivos OPB. MIT. Descrito en Jan Elffers y Jakob Nordström, "Divide and conquer: towards faster pseudo-Boolean solving", Proceedings of the Twenty-Seventh International Joint Conference on Artificial Intelligence (IJCAI-18), 2018, pp. 1291–1299, doi:10.24963/ijcai.2018/180.
  • OR-Tools CP-SAT (Google; código fuente). Apache 2.0.
  • SCIP (código fuente): programación entera con restricciones; lee archivos OPB. Apache 2.0.
  • HiGHS (código fuente): programación lineal y entera mixta. MIT.

Más lecturas

  • Lance Fortnow, "The status of the P versus NP problem", Communications of the ACM 52(9), 2009, pp. 78–86. doi:10.1145/1562164.1562186
  • Scott Aaronson, "NP-complete problems and physical reality", ACM SIGACT News 36(1), 2005, pp. 30–52. doi:10.1145/1052796.1052804, arXiv:quant-ph/0502072 Si los sistemas físicos (ordenadores cuánticos, dispositivos analógicos y más) podrían resolver de forma eficiente los problemas NP-completos.
  • Lance Fortnow, The Golden Ticket: P, NP, and the Search for the Impossible, Princeton University Press, 2013. ISBN 978-0-691-15649-1. Para el público general.
  • William J. Cook, In Pursuit of the Traveling Salesman: Mathematics at the Limits of Computation, Princeton University Press, 2012. ISBN 978-0-691-15270-7.
  • Cristopher Moore y Stephan Mertens, The Nature of Computation, Oxford University Press, 2011. doi:10.1093/acprof:oso/9780199233212.001.0001 Amplio y fácil de leer. Consulta el sitio del libro.
  • Avi Wigderson, Mathematics and Computation, Princeton University Press, 2019. doi:10.2307/j.ctvckq7xb El autor ofrece un borrador final para estudio personal.