Un buen ejemplo de tal reducción es el problema de la ruta más corta (específicamente para gráficos acíclicos dirigidos ya que estamos tratando con programación dinámica). La solución de programación dinámica para este problema es bastante sencilla. Así es como se ve la formulación de programación lineal:
En general, las reducciones a la programación lineal (o la programación lineal entera si desea mostrar que un problema es NP-hard) requieren que defina algún tipo de variables indicadoras y cree una formulación de minimización o maximización del problema. Definitivamente no son las reducciones más fáciles, pero dan algunas ideas interesantes sobre una perspectiva diferente del problema.
- ¿Podría dar un algoritmo que calcule la puntuación máxima de la mejor alineación de secuencia (S ', T') de S y T?
- ¿Cómo se puede usar la máquina épsilon para realizar cálculos precisos de coma flotante?
- ¿Cuál es la complejidad Big-O de una búsqueda lineal?
- ¿Utiliza el cerebro el algoritmo de propagación hacia atrás dado cómo se conectan las sinapsis secuencialmente?
- ¿Existe alguna fórmula o algoritmo que determine / calcule los precios del gas o del petróleo?
En una especie de nota al margen relacionada, la dualidad de la formulación del programa lineal para el problema de la ruta más corta puede casi “visualizarse” de una manera realmente sorprendente. En lugar de tratar de encontrar la ruta que minimiza el peso desde el nodo inicial hasta el final, si imaginamos los bordes del gráfico como cadenas sueltas conectadas entre sí en los nodos, el programa lineal dual esencialmente hace la pregunta de la cantidad máxima de la que podemos extraer el nodo inicial el nodo final hasta que la cadena esté tensa. Sinceramente, pensé que esto era lo mejor cuando aprendí sobre eso.