Es difícil poder olvidar las clases de teoría sobre algoritmia, ordenaciones, búsquedas y otra serie de conceptos informáticos que parecen grabados a fuego en mi mente, aunque posiblemente no les di toda la importancia que debía durante mis años lectivos, aunque sin embargo, la base permanece 🙂

El abanico de profesionales que trabajamos en el ámbito de la nueva sociedad de la información es realmente amplio y permite que cada profesional haya seguido un camino diferente para llegar. Hay caminos en los cuales es difícil haberse topado con la teoría algorítmica, pero aun así todos tenemos un instinto innato para resolver los problemas. El único problema es que reinventar la rueda suele tener un coste alto tanto en tiempo como en calidad para el resultado final.

No hace mucho tiempo un compañero me comento que tenía un programa que necesitaba mejorar para reducir el tiempo de proceso, en esos instantes era de unos dos días. El programa realizaba varias operaciones matemáticas con conjuntos de datos en forma de vectores ordenados. Después de revisar el uso de la memoria, y los logs de ejecución, el problema residía básicamente en el proceso de ordenación de los vectores.

El algoritmo usado para ordenar los vectores no distaba mucho del algoritmo inserción directa, pero en “plan rupestre” por intentar catalogarlo de alguna forma. El diagnostico estaba claro y la solución también. Sustituimos el algoritmo de ordenación por un Quicksort (con pivote aleatorio) y mejoramos un poco la gestión del uso de la memoria. El resultado, nuestro programa tardaba poco más de hora y media, aproximadamente 32 veces menos que inicialmente.

Conclusiones a parte, en las próximas semanas tratare de desempolvar interesantes ejemplos de algoritmos y conclusiones que tuve que elaborar durante mi etapa lectiva, los cuales creo que pueden ser útiles para todos, incluido yo mismo para no olvidar aquello que aprendí.

Be Sociable, Share!