Mejora tus algoritmos y habilidades de estructura de datos.

Fundamentos

Lo primero que necesitaras si desea mejorar los algoritmos y las estructuras de datos es una base sólida. Esta base puede aprenderse de varias maneras, ya sea a través de un programa de ciencias de la computación en la universidad, algunos campos de inicio de codificación se enfocan un poco en los temas que te mostramos más adelante, o puedes aprender por tu cuenta de libros, videos o conferencias en línea. Para comenzar, necesitaras una comprensión básica de los siguientes temas:

Estructuras de datos

Aprende sobre matrices, listas enlazadas, árboles binarios, tablas hash, gráficos, pilas, colas y otras estructuras de datos fundamentales.

Matemáticas y lógica

Necesitaras conocer algunos conceptos matemáticos de diferentes áreas si deseas sobresalir en los algoritmos. Aprende sobre la teoría de conjuntos, las máquinas de estados finitos, las expresiones regulares, la multiplicación de matrices, las operaciones a nivel de bits, la resolución de ecuaciones lineales, los conceptos combinatorios importantes, tales como permutaciones, combinaciones, el principio de casillero.

Arquitectura de Computadores

Aprende cómo se representan los datos en una computadora, los conceptos básicos del diseño de lógica digital, el álgebra booleana, la aritmética computacional, la representación de punto flotante, el diseño de caché. Aprende un poco sobre la programación en C y ensamblador.

Más allá de los fundamentos

Una vez que sientas que tienes una buena comprensión de la mayoría de los conceptos enumerados anteriormente, es hora de comenzar a sumergirte en la parte de algoritmos. Aquí hay una lista de recursos y cosas para mejorar en la escritura y comprensión de algoritmos.

Big-O & Runtime

Aprende qué es Big-O y cómo analizar los tiempos de ejecución de los algoritmos.

Aquí hay una buena lista de cursos en línea que enseñan algoritmos.

Implementa algunos algoritmos tú mismo

Comienza implementando varios algoritmos importantes y aprende sobre sus tiempos de funcionamiento. Algunos ejemplos son:

  • Búsqueda binaria
  • Algoritmo de Euclides
  • Profundidad y amplitud primera búsqueda.
  • El camino más corto de Dijkstra
  • Travesías de árboles binarios
  • Tipo de inserción, Mergesort, Quicksort
  • Pilas Min & max

Libros de algoritmos

Lee el manual de diseño de algoritmos. Es un gran libro.

Introducción a los algoritmos  es un libro clásico que cubre una gran cantidad de material.

Los elementos de programación contienen muchos desafíos y soluciones de código que lo ayudarán a prepararse.

Retos

Practica la codificación de algoritmos simples y luego más avanzados en sitios como Coderbyte y HackerRank que proporcionan explicaciones y soluciones para que pueda aprender de otros programadores.

Ir a través de los desafíos en este sitio web de algoritmos de python interactivo.

Lee tantas explicaciones de algoritmos y ejemplos de código como puedas en GeeksforGeeks. Aquí hay un ejemplo de una buena publicación sobre algoritmos de gráficos.

Mira algunas de las preguntas de la entrevista publicadas en CareerCup e intenta comprender cómo otros usuarios resolvieron las preguntas.

Aparte de los sitios de desafío de codificación, intenta y resuelve las preguntas comunes de codificación que encuentres en línea, como las de esta lista.

Programación dinámica

Este es un concepto muy importante que deberá comprender si desea mejorar los algoritmos, razón por la cual se separa este tema del resto.

“Un método para resolver un problema complejo dividiéndolo en una colección de subproblemas más simples, resolviendo cada uno de esos subproblemas solo una vez y almacenando sus soluciones. La próxima vez que ocurra el mismo subproblema, en lugar de volver a calcular su solución, uno simplemente busca la solución previamente calculada, lo que ahorra tiempo de cálculo.”

Se recomienda tratar y resolver tantos problemas sean posibles de esa lista. También hay un buen tutorial en TopCoder titulado: Programación dinámica: de principiante a avanzado. Muchos de los problemas de PD tienen la misma estructura y patrones, por lo que si resuelves 3 problemas de PD todos los días durante 2 semanas aproximadamente, después de un tiempo podrás detectar y resolver un problema de PD sin problemas.

Recursos Avanzados en Algoritmos

Estructuras de Datos Avanzadas por Erik Demaine

Límites inferiores algorítmicos: diversión con pruebas de dureza por Erik Demaine

Manual del programador competitivo

La guía para los concursos de programación.

AlgoWiki: Un wiki dedicado a la programación competitiva.

Problemas y algoritmos de geometría computacional (geniales y divertidos, pero pueden ser bastante difíciles)

Lista de problemas NP-completos

Open Data Structures Book:  implementación y análisis de estructuras de datos para secuencias, colas, colas de prioridad, diccionarios no ordenados, diccionarios ordenados y gráficos

  Curso gratuito de cálculo diferencial.

Descargar este artículo en PDF

Lo sentimos, esta opción solo está disponible para los socios. Más información de nuestro grupo de socios.


Ernesto Mota on EmailErnesto Mota on FacebookErnesto Mota on LinkedinErnesto Mota on Twitter
Ernesto Mota
Nací en el d.f., sigo siendo defeño, hoy radico en la hermosa ciudad de Cuernavaca, Morelos, soy Ing. en Sistemas computacionales, con un posgrado en Tecnologías de información, Tecnólogo es mi categoría laboral, y mi linea de investigación es la realidad aumentada aplicada a nuevos entornos de aprendizaje.

Déjanos un comentario:

Deja un comentario

Necesitas un Sitio Web

Danos un like y disfruta de cursos gratis, noticias tech y memes. Chingo mi madre si no te gusta el contenido.

(Disculpa por el pop up)