Aquí es un problema interesante que me encontré en un concurso de programación:detectar cuándo la multiplicación de matrices es posible
Planteamiento del problema: Dadas las dimensiones de n
matrices, determinar si existe un orden tal que las matrices pueden ser multiplicado. Si existe uno, imprima el tamaño (producto de las dimensiones) de la matriz resultante.
Mis observaciones: Esto reduce al problema de la ruta hamiltoniana NP-completa si considera cada matriz como un vértice y dibuja un borde dirigido entre las matrices que se pueden multiplicar. Resolví esto simplemente forzando el problema, pero esto es claramente muy lento. Me preguntaba si hay optimizaciones inteligentes para esta instancia particular del problema.
Todos los problemas solucionables de manera eficiente (y comprobables) se reducen a problemas de NP-complete. Es la reducción de un problema NP-completo a su problema lo que debería ser molesto. – aelguindy
Como dijo @ElKamina, es un problema de sendero de Euler, vea también mi respuesta [aquí] (http://stackoverflow.com/a/9046177/1011995). –