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.
- ¿Cuál es un buen enfoque para resolver este problema Problema - 118D - Codeforces?
- ¿Cuál es el algoritmo de clasificación menos eficiente?
- ¿Cómo funciona esta recursión?
- ¿Obtendría algún beneficio resolviendo los problemas del Proyecto Euler por la fuerza bruta?
- ¿Cuál es el beneficio de resolver un problema de HackerRank.com?
¿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! 🙂