Algoritmia/Algoritmos de escalada

De Wikilibros, la colección de libros de texto de contenido libre.

Los algoritmos de escalada representan una técnica muy utilizada en ciertas clases de problemas de optimización. La idea es comenzar con una solución sub-óptima del problema y, repetidamente, mejorar la misma hasta que cierta condición sea maximizada.

La metodología a seguir en este tipo de algoritmos es la siguiente:

  1. Construir una solución sub-óptima que reúna los requisitos del problema
  2. Tomar la solución y mejorarla hasta que se alcance la solución o no se pueda mejorar más

Este tipo de algoritmos suelen compartir la propiedad de ser eficientes en tiempo y espacio. Por el contrario, no siempre encuentran una solución óptima al problema planteado.

Uno de los problemas de escalada más famosos es el problema del flujo de red. Aunque pueda parecer un problema específico, es importante debido a su alto poder expresivo; por ejemplo, muchos problemas algorítmicos encontrados en la práctica pueden considerarse como casos especiales de flujo de red.

Ejemplos[editar]

Método de las raíces de Newton[editar]

Consideremos el problema de encontrar un número positivo x tal que cos(x) = x3. Podríamos tratar de encontrar el cero de f(x) = cos(x) - x3.

Sabemos que f '(x) = -sin(x) - 3x2. Ya que cos(x) ≤ 1 para todo x y x3 > 1 para x>1, deducimos que nuestro cero está entre 0 y 1. Comenzaremos probando con el valor inicial x0 = 0,5

Los dígitos correctos están subrayados. En particular, x6 es correcto para el número de decimales pedidos. Podemos ver que el número de dígitos correctos después de la coma se incrementa desde 2 (para x3) a 5 y 10, ilustando la convergencia cuadrática.

Problema del flujo de red[editar]