Cómo mejorar las estructuras de datos y algoritmos

Gracias por el A2A 🙂

No soy la mejor persona para responder esta pregunta, pero me gustaría compartir mi experiencia de adquirir conocimiento y comprensión sobre la misma.

Siendo más débil en matemáticas (antes), luché mucho. Y esa lucha me enseñó nuevos patrones para estudiar este campo, ya que literalmente no había nadie allí para guiarme.

¿Qué hice para aprender alguna Estructura de datos o Algoritmo?

Después de probar muchos métodos, encontré este que encontré el más prometedor entre otros. Cada paso tiene su propio significado y se ha escrito junto con él.

Recogí una estructura de datos, digamos gráficos.

(1) Inicialmente leí sobre esto (internet) brevemente, para crear un medio Graph-ish en mi cerebro.

(2) Después de eso, lo leí cuidadosamente, escribiendo los puntos principales (que sentí), como qué tipo de preguntas resuelve, cuáles son las terminologías, cuál es la complejidad de los algoritmos más utilizados, etc.

(3) Leí las notas con el material en otros sitios web. También busqué todas las aplicaciones posibles y lo escribí en mis notas. Esto fue para que pudiera profundizar más en ello.

(4) Cuando me sentí listo, estudié la teoría de Breadth First Search. Intencionalmente evité el algoritmo real. Traté de aplicarlo en unos pocos gráficos y luego intenté escribir el algoritmo por mi cuenta. Traté mucho, y me llevó mucho tiempo, pero cuando pensé que este era el algoritmo correcto, lo combiné con el escrito en el Tutorial de TopCoder y descubrí que la parte máxima era la misma. Esto me dio mucha confianza .

(5) Cuando sentí que había entendido bien el algoritmo, lo escribí 4-5 veces sin mirar y mientras procesaba un gráfico de muestra (1-2 veces). Esto me hizo confiar en el algoritmo y también me hizo comprender por qué cada paso es importante y qué contribución tiene para el algoritmo.

(6) Después de esto, intenté implementarlo en C ++. Me llevó en algún momento pero pude hacerlo. Lo comparé con el TopCoder y lo optimicé en consecuencia.

(7) Luego borré todo el código, e intenté recordarlo y luego lo hice bien, lo que hizo que mi concepto sobre BFS fuera claro como el cristal (lo hice unas 5-7 veces). Además, mis manos se han vuelto tan rápidas y autorreflexivas mientras las escribo que no lo pienso dos veces mientras las escribo.

(8) Luego intenté resolver algunos problemas basándome en las categorías SPOJ y A2OJ y, aunque tuve problemas, pude resolverlos. 🙂

(9) Después de eso, cambié a DFS y luego a otros algoritmos. Pero intenté recordar cada algoritmo cada vez que tenía tiempo.

(10) AHORA trató de leer la Prueba de corrección de Coreman y pude entenderlo más matemáticamente. 🙂

Así es como aprendí sobre este dominio. Todavía no lo he completado por completo, pero me parece útil.

Es mejor porque la mayoría de nosotros no tenemos muchos antecedentes matemáticos o de programación.

Sé que esto parece consumir mucho tiempo, pero es mejor perder algo de tiempo que asustarse, darse por vencido y nunca volver a intentarlo. 🙂

Esperando que esto ayude! 🙂

Para la estructura de datos, compré Narasimha Karumanchi. Este libro es realmente increíble y dame una experiencia de aprendizaje increíble. Si está realmente preocupado por el aprendizaje de la estructura de datos, le sugiero que siga estos pasos:

  1. Mira la serie de videos de mycodeschool.
  2. Asegúrate de no quedarte atrapado en conceptos básicos de recursión (o DP). Así que practique algunos problemas de recursión de SPOJ o CODEFORCES. Mi preferencia personal es SPOJ. Seleccione su propio interés.
  3. Luego saca el libro de Karumanchi. Haz todos y cada uno de los problemas. Cubra todo el libro.
  4. Ahora es el momento de probar el conocimiento, así que vaya a GeeksforGeeks | Un portal informático para geeks en la sección de estructura de datos y hace algún problema típico.
  5. Ahora estás listo para la programación competitiva y estarás muy por delante de tus compañeros.

No hay mejor momento para aprender y ser el mejor en esto, si eres un estudiante. Una vez que ingrese al mundo de los trabajos, se distraerá con muchos problemas laborales y personales.

Para ser bueno en esto, algunas de las opciones son,

  • Lea Introducción a los algoritmos: no hay mejor libro para aprender. Domina si puedes.
  • Vaya a topcoder o http://www.spoj.com : practique tantos problemas como pueda, eventualmente será bueno en eso.

Como estudiante, tendrás tiempo para hacer esto. Aproveche ese tiempo y conviértase en un gran programador.

Ya he escrito la respuesta para esto. Por favor, vaya a través del siguiente enlace.
¿Cómo podría especializarme en estructuras de datos y algoritmos?

More Interesting

¿En cuánto tiempo puedo ser un profesional en la resolución de problemas en algoritmos y estructuras de datos si empiezo hoy sin ningún conocimiento previo?

¿Cuánta codificación necesito saber antes de comenzar con los algoritmos?

¿Qué series matemáticas debo saber para calcular la complejidad de cualquier algoritmo o pseudocódigo?

¿Alguna vez ha enviado un artículo científico sobre un algoritmo que funciona tan bien como los métodos más modernos pero realmente no sabe por qué? ¿Puedes decir 'tal vez' al explicar tu método?

Cómo verificar si un árbol no binario está equilibrado en altura

¿Dejarías que los algoritmos se intercambiaran por ti cuando estés en el trabajo?

¿Cuál es la mejor estructura de datos para un solucionador de ahorcado?

¿Cuál es la mejor manera de aprender estructuras de datos y algoritmos para estudiantes que no son de CS / IT?

¿Qué es el "peso" en el algoritmo de Facebook?

¿Cuál es la probabilidad de que un determinado número binario de 6 bits divida perfectamente un binario aleatorio de 15 bits?

¿Quién sabe qué hay detrás de la API de Google Nearby Search? ¿Qué algoritmo usan? ¿Cómo encuentra Google una estación de servicio cercana?

¿Cómo podemos verificar si un punto (digamos el origen) se encuentra en un casco convexo 6-D (o ND) y qué tan lejos está el punto de cualquiera de los lados (facetas) del casco convexo?

¿Cuáles son los principios fundamentales de los algoritmos en la programación de computadoras?

¿Qué es el algoritmo k-Nearest Neighbour? ¿Qué tipo de problemas puede resolver este algoritmo? ¿Qué tipo de matemática se requiere?

Cómo insertar un nuevo nodo en un árbol binario (no buscar árbol binario)