La Plataforma Educativa Personalizada implementa tres categorías de algoritmos, cada una elegida por su idoneidad para el problema específico que resuelve. Quick Sort maneja el ordenamiento dinámico de sugerencias de cursos priorizando relevancia, porque su estrategia divide y vencerás ofrece rendimiento promedio O(n log n) sin necesidad de estructuras auxiliares. Búsqueda Binaria localiza cursos por ID en O(log n) aprovechando que la lista puede ordenarse previamente. Recursión recorre el árbol implícito de dependencias de módulos de forma natural y legible, reflejando directamente la estructura jerárquica del problema. Juntos, estos tres algoritmos cubren las operaciones más frecuentes de la plataforma: sugerir, encontrar y narrar.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/carlosgomezc7/plataforma_aprendizaje/llms.txt
Use this file to discover all available pages before exploring further.
Quick Sort
Estrategia divide y vencerás
Quick Sort divide el arreglo en torno a un pivote central (el elemento ubicado enarr[len(arr) // 2]) y particiona los elementos en tres grupos: los mayores al pivote, los iguales y los menores. Luego aplica el mismo proceso de forma recursiva a los subgrupos izquierdo y derecho, concatenando los resultados al final. Al usar el elemento del medio como pivote, se evita el peor caso en arreglos ya ordenados que afecta a las implementaciones que siempre eligen el primer o último elemento.
Complejidad temporal
| Caso | Complejidad |
|---|---|
| Caso promedio | O(n log n) |
| Caso peor | O(n²) |
Detalle clave
La función ordena de forma descendente según el campoclave, con valor por defecto "relevancia". Esto significa que el curso con mayor índice de relevancia aparece primero en la lista de sugerencias mostrada al estudiante.
Implementación
"dificultad") pasando el argumento clave correspondiente.
Búsqueda Binaria
Prerrequisito: lista ordenada por ID
La Búsqueda Binaria solo funciona sobre una secuencia ordenada. Antes de ejecutar la búsqueda, la aplicación ordena la lista de cursos de forma ascendente por ID mediantesorted(cursos, key=lambda x: x['id']). Este paso extra tiene un coste O(n log n), pero se amortiza completamente si se realizan múltiples búsquedas sobre la misma lista.
Complejidad temporal
| Caso | Complejidad |
|---|---|
| Caso promedio | O(log n) |
| Caso peor | O(log n) |
Implementación
None si el ID no existe en el catálogo.
Recursividad
Recorrido en profundidad (DFS) sobre el árbol de dependencias
La funciónrecuperar_historial_recursivo realiza un recorrido en profundidad (Depth-First Search) sobre el árbol implícito de dependencias de módulos. En cada llamada, procesa el módulo actual, luego desciende recursivamente a cada uno de sus sub-módulos antes de retornar al nivel superior.
Caso base: si modulo_actual no está en el diccionario historial_completo, la función no tiene sub-módulos que recorrer y retorna solo la cadena con el módulo formateado, terminando esa rama de la recursión.
Caso recursivo: si modulo_actual es una clave en historial_completo, la función itera sobre cada sub-módulo de su lista e invoca recuperar_historial_recursivo con nivel + 1, incrementando la indentación para reflejar la profundidad en el árbol.
Indentación dinámica
El parámetronivel controla la indentación visual: por cada nivel de profundidad, se anteponen dos espacios adicionales (" " * nivel), produciendo una representación en texto del árbol que es legible directamente en la interfaz de la aplicación.
Implementación
Complejidad temporal comparativa
| Algoritmo | Caso promedio | Caso peor | Ventaja |
|---|---|---|---|
| Quick Sort | O(n log n) | O(n²) | Ordenamiento en memoria, sin dependencias |
| Búsqueda Binaria | O(log n) | O(log n) | Búsqueda rápida en listas ordenadas |
| Recursividad (DFS) | O(n) | O(n) | Traversal natural de árboles |
Quick Sort con pivote central (elemento del medio del arreglo) evita el caso peor O(n²) en arreglos ya ordenados que afecta a implementaciones con pivote fijo en el extremo. En el uso típico de la plataforma, donde el catálogo de cursos se carga desde JSON y puede estar en cualquier orden, el pivote central ofrece una distribución de particiones consistentemente equilibrada.