¿Qué son las estrategias de diseño de algoritmos?

Las estrategias de diseño de algoritmos son técnicas utilizadas para modificar las ejecuciones y el rendimiento de algoritmos. Podemos medir estas modificaciones a través del análisis de algoritmos. Discutamos un ejemplo simple para ver la diferencia en eficiencia que podemos hacer a través de técnicas de diseño de algoritmos; Considere el algoritmo de búsqueda lineal , está buscando una clave en una matriz y luego devuelve su índice si existe o falla de lo contrario. ¡Está visitando toda la matriz para obtener ese índice de la clave! Por lo tanto, decimos que es de orden O (n) . En realidad, es la solución intuitiva para el problema de búsqueda, uno de los problemas fundamentales en informática. Sin embargo, si podemos pensar un poco más para encontrar mejores soluciones, podemos hacer lo siguiente: ¡Si la matriz está ordenada , podemos ignorar la mitad de la matriz a través del algoritmo de búsqueda binaria! e ignorando la mitad de la mitad restante en la segunda iteración del algoritmo y la mitad de los elementos restantes en las próximas iteraciones y así sucesivamente. La búsqueda binaria es un muy buen ejemplo de la técnica de diseño de divide y vencerás . ¡Solo visita una cantidad de elementos [math] log (n) [/ math] en la matriz! Por lo tanto, es de [matemáticas] O (log n) [/ matemáticas].

También hay más técnicas además de esta técnica, tales como:

  • Inducción : un buen ejemplo es la versión recursiva del algoritmo para encontrar números de Fibonacci.
  • Programación dinámica : se usa ampliamente en bioinformática y combinatoria y un buen ejemplo de ello es el algoritmo de subsecuencia común más largo.
  • Algoritmos codiciosos : un muy buen ejemplo es el algoritmo Dijkstra para encontrar la ruta más corta desde un nodo específico en un gráfico.

Hay muchos libros que abordan estos temas, como Algoritmos: Técnicas de diseño y análisis, el conocido libro de Cormen y Algoritmos.

También puede navegar por Internet para obtener tutoriales en línea.

More Interesting

¿Cómo la elección incorrecta de las estructuras de datos hace que un programa sea ineficiente?

¿Puede un gráfico ser un circuito de Euler y una ruta al mismo tiempo?

¿Qué vas a aprender y en qué proyecto vas a trabajar este verano como principiante en programación?

¿Por qué la programación dinámica se llama programación dinámica?

¿Cuántos casos hay para reequilibrar los árboles AVL?

¿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?

1,000 participantes toman un examen que consta de 100 preguntas y 5 opciones por pregunta. ¿Cuál es el mejor enfoque (algoritmo) para encontrar todos los pares posibles de participantes con al menos un 80% de coincidencia en las opciones que eligieron?

¿Es difícil seguir 100 días de algoritmos?

Cómo insertar un conjunto de números en un árbol AVL vacío para que no se requiera rotación

¿Qué recurso contiene el mayor conjunto de algoritmos?

¿Cuál es la forma más eficiente de detectar, si una cadena es un anagrama de un palíndromo?

Tengo un examen de matemáticas discreto y esto está en él. ¿Cuál es la fórmula recursiva de an = an-1 + 2?

¿Qué sitio web / tutorial / video puedo usar para comprender muy bien la programación dinámica en un día?

¿Qué tipo de datos debo usar en C para almacenar datos como a1b2c3? ¿Podría usar una matriz de caracteres para almacenar esto como una cadena?

Cómo cifrar un fragmento de texto usando un algoritmo de cifrado