Yo iría un paso más allá y diría que los algoritmos tienen que ver con estructuras discretas y, por lo tanto, con sus matemáticas.
Personalmente, hasta donde puedo “ver”, un Algoritmo es una secuencia de “saltos bien definidos” dentro del espacio (de elementos) de una estructura Discreta.
Tomando el ejemplo de la clasificación. Aquí un elemento de estructura discreta sería una permutación. Y cualquier algoritmo de ordenación consiste simplemente en saltar de una permutación a otra, de manera bien definida , hasta que se alcanza el elemento deseado, es decir, una permutación con un orden consistente (todo creciente o todo decreciente). La forma “bien definida” de calcular el “próximo” elemento de un salto, wrt un elemento inicial, es lo que llamamos un algoritmo.
Y, ¿cómo sabemos que un elemento particular es el “deseado”? Necesitamos tener una forma específica de verificar si un elemento dado es una “solución”, o no. En otras palabras, la estructura discreta debe ser “decidible”.
- ¿Por qué no puede haber un algoritmo de clasificación que tenga el mejor y el peor caso de N tiempo de ejecución (por ejemplo, lineal)?
- ¿Cuáles son los mejores algoritmos híbridos para el filtrado colaborativo y basado en contenido?
- ¿Cómo afectan los nuevos algoritmos de Instagram a la búsqueda de hashtag?
- ¿Es suficiente el conocimiento del tamiz de Eratóstenes y la factorización prima al preparar los concursos de programación?
- ¿Qué algoritmos se pueden usar para determinar si dos preguntas (como las de Quora) son de alguna manera similares?
La idea actual de la Complejidad del tiempo es ver cuántos “saltos” deben tomar los algoritmos para alcanzar el elemento discreto “deseado”. No tiene nada que ver con “Tiempo”, en sentido real.
Ahora, el tiempo real requerido para calcular el “próximo” elemento al que “saltar”, Y cómo “se acerca” al “elemento requerido”, después de cada “salto” debe jugar un rol importante para determinar la “bondad” de un Algo El mejor Algo sería el que nos proporciona el elemento discreto requerido en un solo salto (como magia) y después de cálculos mínimos. Lo peor sería el que más bien tiene que atravesar cada elemento del espacio discreto en consideración.
En este modelo, también puede haber algunos Algos que simplemente “parecen” viajar en ese espacio discreto, prometiendo llegar a nuestro destino deseado, pero en realidad nunca lo alcanzarán de todos modos. Decimos esto un bucle infinito. Para saber de manera eficiente en qué escenario se produce dicha situación, necesita conocer la teoría de grupo.
Entonces, en base a mis especulaciones mencionadas anteriormente, le sugiero que, al menos, obtenga libros sobre Matemática discreta y Álgebra abstracta , mientras revisa la forma predominante de estudiar algoritmos. Porque “adquirir experiencia” y “ser maduro” son dos cosas independientes.