¿Cuál es la diferencia entre: algoritmo, técnica y técnica algorítmica?

Un algoritmo es un enfoque formal bien definido para un problema particular en el que la entrada y la salida deseada se especifican formalmente. Un algoritmo es una descripción completa de cómo producir correctamente esa salida desde la entrada.

Una técnica es una palabra amplia para cualquier tipo de enfoque general que pueda usarse para avanzar en los problemas. Siendo general, generalmente no es lo suficientemente específico como para que los detalles de cualquier problema sean una solución única. También puede darse el caso de que desarrollar un algoritmo para un problema requiera combinar múltiples técnicas.

Por ejemplo, alguien podría escribir sobre el uso de una “técnica de programación dinámica” para resolver un problema. El lector puede inferir que el problema será abordado por:

  • dividiéndolo en un número de subproblemas cuyas respuestas pueden expresarse en términos de las respuestas a otros subproblemas
  • almacenamiento en caché de las respuestas a subproblemas ya resueltos para evitar resolverlos nuevamente

Es una descripción de qué tipo de enfoque se utilizará para el problema (y en algunos casos puede ser todo lo que un lector necesita para descubrir la solución por sí mismo), pero en sí mismo, es demasiado vago para ser un algoritmo. En este ejemplo de programación dinámica, no se ha proporcionado información sobre cómo dividir el problema en subproblemas, cómo obtener la respuesta para cada subproblema o cómo almacenar en caché las respuestas.

Por otro lado, si alguien presenta un “algoritmo de programación dinámica” como solución a un problema específico, es de esperar que su solución, que utiliza una técnica de programación dinámica, cubra todos los aspectos de cómo resolver el problema, con la posible excepción. de detalles que se presumen obvios.

La “técnica algorítmica”, cuando se usa en el contexto de algoritmos, no transmite más información que la “técnica”.