Cómo escribir un buen algoritmo

Depende de cómo se defina la palabra “bueno”. Depende del modelo de cálculo que utilice y sus objetivos.

Tome el ejemplo simple de reducir la complejidad del tiempo de un algoritmo (suponiendo que el modelo RAM). La complejidad de su algoritmo es menor que la de todos los algoritmos existentes no necesariamente significa que sea práctico de implementar porque la notación Big-Oh traga constantes y puede ser engañosa, como O (1) no necesariamente significa que sea súper rápido .

Si desea inventar un algoritmo para un problema, primero debe idearlo, demostrar la corrección, los límites de tiempo de ejecución en el tiempo, el espacio, los accesos al disco, los aciertos y errores de la memoria caché, etc., según el modelo de cómputo subyacente . En el caso de los Algoritmos de Computación Cuántica, es posible que tenga que derivar los límites en el número de puertas necesarias y lidiar con problemas de ruido, etc. ¡Es matemática, matemática y mucha matemática!

  1. No haga cálculos repetidos: almacene ya calculado y reutilice
  2. No calcule no deseado / no pierda haciendo cálculos no deseados
  3. Haga el mejor uso de cada paso. Al igual que cuando atraviesas una matriz una vez, intenta descubrir cómo puedes usar esta sola transversal para clasificar en la mejor medida / acercarte a la solución, aunque es imposible clasificar en una sola transversal – Teoría del límite inferior
  4. Aprenda enfoques básicos como la fuerza bruta, dividir y conquistar, algos codiciosos, algos dinámicos y, si es posible, np hard
  5. Aprenda gráficos, DFS, BFS
  6. Aprenda el cálculo de eficiencia y los métodos de comparación entre diferentes algos
  7. Las declaraciones en algo deben ser independientes del lenguaje, así que escriba cada paso en algo de la manera más abstracta posible
  8. Si hay un patrón entre la entrada y la salida, cree un cálculo de acceso directo en lugar de hacer cálculos de punto cero para llegar a la solución: las entrevistas de Google esperan soluciones de eficiencia lineal
  9. Investigue para encontrar las mejores soluciones ya presentes. La mayoría de los algos que necesitará probablemente ya estén resueltos.
  10. La respuesta de Shiv D a ¿Cómo aprendo escribir buenos algoritmos?
  11. Además, use los cursos abiertos MIT y los videos IIT en youtube

Dato interesante, creo que un chico con cabello largo descubrió la eficiencia de la resolución de cubos nXn rubik

Un buen algoritmo es aquel que tiene la menor complejidad de tiempo.
trate de reducir el problema en los módulos … use recursividad y otra lógica
mejor practique con el sitio web geeksforgeeks, ya que las preguntas se resuelven con una mayor complejidad temporal seguida de una menor complejidad temporal