La siguiente es otra forma de clasificar algoritmos.
En la programación competitiva, hay 4 paradigmas principales de resolución de problemas.
En otras palabras, dado un problema, aquí están los diferentes enfoques / herramientas que debe tomar para resolverlo.
- Cómo calcular el gran espacio O de una pila en problemas de retroceso
- ¿Cuáles son las estructuras de datos utilizadas en el almacén de datos? ¿De qué manera difieren de las estructuras de datos utilizadas en la base de datos relacional?
- ¿Cuál es el mejor algoritmo de detección de colisión de vehículos?
- ¿Hay algún buen algoritmo para clasificar los tonos de chino mandarín de un archivo de audio sin la necesidad de usar una red neuronal?
- Cómo hacer que un algoritmo se visualice como visualgo.net
- Fuerza bruta / Búsqueda completa: un método que analiza todas las posibilidades y selecciona la mejor solución.
- Pros: simple, siempre debe encontrar la solución ya que está buscando todas las posibilidades
- Contras : inviable ya que el número de posibilidades crece exponencialmente a medida que aumenta el número de elementos
- Divide y vencerás: método que divide el problema en partes más pequeñas y luego resuelve esas partes. Piensa en la búsqueda binaria.
- Enfoque codicioso: Método que elige la mejor opción en el momento actual, sin ninguna consideración para el futuro.
- Pros: rápido, simple, puede obtener la mejor solución o acercarse un poco
- Contras: la mayoría de las veces, no obtendremos la mejor solución
- Programación dinámica: método que se acumula para una solución utilizando sub-soluciones encontradas previamente. Definitivamente una de las técnicas más avanzadas, pero extremadamente potente y aplicable.
- Pros: encuentra la solución óptima para muchos problemas en el tiempo polinómico (mientras que la fuerza bruta sería exponencial)
- Contras : difícil de comprender y aplicar, lleva tiempo comprender los diversos estados y la recurrencia
Fuentes
Halim, Steven y Felix Halim. Programación competitiva: el nuevo límite inferior de los concursos de programación . Lulu, 2013.