¿Qué necesitas saber para aprender algoritmos? Probé los algoritmos gratuitos de Coursera y el curso de estructuras de datos de Princeton y me perdí por completo.

Si tiene problemas con los cursos en línea como el de Coursera que señaló, comience con algo más simple primero.

Mi filosofía para progresar, no solo en la programación, sino en general, es tener unos fundamentos muy fuertes primero y luego progresar abordando los problemas ligeramente por encima de sus habilidades actuales (más sobre este factor en la respuesta de Pawel Kacprzak a ¿Cuál es el ¿Cuál es la mejor técnica de entrenamiento de programación competitiva? Sé que se trata de resolver MUCHOS problemas, pero, ¿es solo eso? ¿O tengo que resolverlos sistemáticamente y de cierta manera para que mi rendimiento pueda mejorar rápidamente?).

La combinación de los dos factores anteriores me funciona muy bien, al menos en programación, baloncesto y ejercicio.

Fundamentos fuertes

Si no ha trabajado, solo leer no cuenta aquí, con libros sobre algoritmos todavía, le recomiendo el Manual de diseño de algoritmos de Steven Skiena , en combinación con su sitio web conectado a él, con muchos recursos útiles: Manual de diseño de algoritmos

Cubre todas las ideas y técnicas básicas y es excepcionalmente fácil de leer por alguien que acaba de comenzar con algoritmos.

Problemas de tachuelas

Primero, debes saber cuál es tu habilidad actual. Si aún no lo sabe, vaya a TopCoder o Codeforces y comience a resolver problemas de los más fáciles disponibles (Div 2 250 para TopCoder y Div2 A para Codeforces) y deténgase cuando encuentre un problema para el que no puede encontrar una solución en como 15 minutos El primer problema debería representar la clase de problemas en los que debería trabajar ahora.

Recomiendo dedicar algo de tiempo a resolver este problema, opcionalmente con editoriales, que están disponibles en cada sitio como TopCoder, Codeforces, etc. Intente hacer esto constantemente, por ejemplo, 2-3 problemas por día durante 2-3 semanas.

Luego, vuelva a medir su habilidad actual con el método proporcionado anteriormente, pero con problemas más difíciles e repita todo el proceso hasta que esté satisfecho con el resultado o simplemente para siempre.

MIT 6.006 Introducción a los algoritmos, el otoño de 2011 está disponible en la cuenta de YouTube de MIT OpenCourseWare. Es un curso increíble y aprendí una buena parte de lo que sé sobre algoritmos al ver esto.

Sin embargo, mirar el curso no es suficiente, necesita algunos proyectos para implementar las estructuras de datos y los algoritmos.

Puedes encontrar algunos en google, pero te daré uno bueno:

Te dan como entrada un hormiguero y una cantidad de hormigas. El hormiguero contiene habitaciones que están unidas por tubos. Una de estas habitaciones es la entrada y otra es la salida. Solo puede haber una hormiga en cada habitación a la vez (a excepción de la entrada y la salida). Cada ciclo, cada hormiga en el gráfico puede moverse de una habitación a otra pasando por un tubo. El objetivo es escribir un algoritmo para hacer que todas las hormigas pasen del punto de entrada al punto de salida en la cantidad mínima de ciclos.

Tomarás como entrada:

  • número de hormigas (un valor entero)
  • habitaciones (definidas por una cadena, como “ab” o “xx”)
  • enlaces (como “ab-xx”)
  • La sala de inicio estará precedida por ## start y la sala de finalización estará precedida por ## end

Por lo tanto,

30
## comienzo 1 2 3 4 5 6 7 ## fin 0
0-4 0-6 1-3 4-3 5-2 3-5 4-2 2-1 7-6 7-2 7-4 6-5

Significa que debes ayudar a 30 hormigas a ir de la habitación 1 a la habitación 0. El gráfico se verá así:

Luego tienes que dar salida a los movimientos para cada ciclo.

Este es solo un ejemplo de un buen proyecto, obviamente puede encontrar muchos otros proyectos para aprender algoritmos. Lo bueno de este es que te ayudará a familiarizarte con el camino más corto de Dijkstra, con BST (o al menos listas vinculadas) y con gráficos.

¡Buena suerte!

Primero, necesitas entender los conceptos básicos. La siguiente es una gran lista de reproducción para aprender estructuras de datos. Los videos cubren las estructuras de datos bastante bien y si puede ver todo esto e implementarlo en código, estará listo para un Curso de Algoritmos:

Estructuras de datos: YouTube

Después de haber visto los videos e implementado las estructuras de datos usted mismo (la implementación es obligatoria), puede comenzar un curso de Algo. El problema surge cuando miras todo el curso pero no implementas una sola cosa o haces una sola tarea. Sin implementación, difícilmente aprenderá nada.

El siguiente curso de MIT es, con mucho, el mejor. Otro curso del Prof. Tim Roughgarden (Coursera) es ideal para principiantes.

Algoritmos: Diseño y Análisis, Parte 1 – Universidad de Stanford | Coursera

Introducción a los algoritmos

Algoritmo: es un montón de pasos lógicos que te llevarán hacia tu Victoria.

Creo que la persona debe implementar algoritmos del mundo real en el mundo de la programación.

Cada persona aplica algoritmos muchas veces en un solo día. Simplemente, agregar 2 números es un Algoritmo, abrir el sistema de la computadora es un algoritmo, ordenar números es un algoritmo …

Ahora ven a tu pregunta. Debes conocer el análisis de datos. No considere el análisis de datos como un término de nivel superior, como, en la biblioteca, cada libro está organizado de una manera particular. En el salón de nuestra casa todo está bien organizado. Ahora, considere los libros como datos. Podrá ver toda la biblioteca en muy buenas estructuras.

Pero para crear una estructura de datos necesitará un algoritmo mejor. Al igual que puede organizar libros por temas, por autor, por nombre (alfabético), por edad, por precio, por no. de páginas ……

¿Cómo seleccionará la forma de construir su biblioteca? Aquí necesitarás un algoritmo.

En el algoritmo, debe poder pensar Recursivamente, lógicamente, “Pensar fuera de la caja” …

Creo que la mejor manera de generar cualquier algoritmo, debe hacer “DIVIDE & CONQUER”. dividir cualquier problema en número de parte. Con esto puedes pensar y prestar atención a la parte más pequeña.

Algoritmo feliz …

Lo más importante antes de comenzar un curso / libro de algoritmos es su mentalidad. Si comienzas con la mentalidad de que son muy complicados, básicamente divides tu impulso a la mitad.

Lo que necesita saber es que los algoritmos son formas lógicas para resolver problemas. Un algoritmo es en realidad una colección de pasos bien definidos que para una entrada dada (algunos valores), devuelve una solución válida para una clase específica de problemas.

Un libro que me ayudó mucho, para comprender los conceptos básicos de los algoritmos, es Introducción a los algoritmos, MIT. Tuve muchos problemas con los algoritmos, en la escuela, y tuve que trabajar duro para ponerme al día. Supongo que la segunda cosa más importante sobre aprender algo es reservar tiempo para trabajar, regularmente. Este no es el tipo de tema en el que puedes “volarlo”. Tienes que entender cómo funcionan las cosas, por qué funcionan de esa manera, y solo puedes hacerlo mediante la práctica constante, en varios tipos de problemas.

Una respuesta muy breve:

Nada ?

Uno no tan breve pero también breve:

Cualquier momento es un buen momento para aprender algoritmos. Dependiendo de qué tan profundo quieras bucear, algunas matemáticas ayudarían, pero los algoritmos básicos no necesitan nada más. Ni siquiera un lenguaje de computadora, ya que puede aplicarlo a otros campos.

  • Consigue un buen libro
  • El Algorithm Design Manual 2nd ed.
  • Introducción a los algoritmos, 3a edición
  • Intente implementar los algoritmos usted mismo
  • Compare diferentes algoritmos en la misma solución y comprenda por qué uno es mejor que el otro en ese caso.
  • Disfruta de tu conocimiento.

    Editar:

    Un ejemplo que lo ayudará a comprender la parte de “nada”. Verifica VisualGo. O visualizaciones de estructura de datos.

    Si planeas comprar uno de los libros, creo que Skiena es más fácil para un principiante. (De hecho, probablemente haya mejores libros si no sabes absolutamente nada, pero me quedaré con mis recomendaciones)

    Edición 2:

    Hay varios cursos en línea sobre algoritmos. Verifique Class Central para uno. Si encuentras el que eliges, elige otro. Hasta que encuentre uno que coincida con lo que está buscando.

    Si eres un principiante absoluto, ver un video de una hora de duración en el curso abierto MIT podría no ayudarte.

    Sugiero encarecidamente tomar este curso en su lugar:

    Introducción a los algoritmos | Udacity

    Conocer sus estructuras de datos ayudará. Hay muchas introducciones en estructuras de datos. Solo le tomará 2 horas como máximo comprender los conceptos básicos.

    Las habilidades prácticas de programación y los cursos de Algoritmos están relacionados, pero el conocimiento en uno, puede no transferirse directamente al otro por un tiempo.

    Para tener éxito en un curso de algoritmos, todo lo que necesita es:

    1. Sólidos fundamentos lógicos y habilidades de pensamiento crítico.
    2. Algunas comprensiones básicas de Matemáticas (solo álgebra podría estar bien)
    3. Los fundamentos de las matemáticas discretas (que pueden incluirse junto con el curso)

    No mucho. Ser un poco introductorio a la cocina, la química básica, los kits de lego, los kits de muebles, los juegos de mesa o cualquier cosa que tenga un conjunto de instrucciones. Todos estos son algoritmos simples (aunque a veces largos).

    La disposición a aprender también es importante.

    Creo que primero debes dar un paso atrás y tomar un curso de Matemática discreta [1].

    Muchos conceptos de Matemáticas discretas se toman prestados al intentar calcular la complejidad de los algoritmos y esa es la parte en la que me perdí muchas veces.

    Los algoritmos son realmente geniales y un profundo conocimiento de los algoritmos te hará un programador más inteligente [2]. Así que no te rindas. 🙂

    Notas al pie

    [1] Matemáticas discretas – Wikipedia

    [2] ¿Por qué cada programador debería aprender a optimizar algoritmos?

    También estoy pasando por Algoritmos en este momento. Y cuando empecé, sentí que te sientes. Incluso no toqué nada relacionado con el algoritmo durante una semana. En este tiempo estaba buscando y leyendo sobre algoritmos no aprendiéndolos. Y luego, después de una semana, comencé a aprenderlo. Tomé un libro llamado ‘Introducción al algoritmo’ de Pearson. Partí de eso e incluso tomé ayuda del video de YouTube. Puedo decir que ahora estoy disfrutando mucho aprendiéndolo. Ahora estoy planeando tomar un curso sobre Edx después de completar el libro.
    La mejor de las suertes.

    Solo necesitas saber cómo buscar en Google.

    Hice un video tutorial de Youtube para Estructura de datos y Algoritmo en hindi.

    Espero que te ayude mucho si quieres aprender en hindi.

    A continuación se muestra la URL del canal de youtube:

    Academia Prateek Jain

    More Interesting

    ¿Cuál es la forma más rápida y eficiente de hacer una sustitución / sustitución de cadenas dentro de una cadena grande con JavaScript?

    El año pasado, logré resolver dos problemas de ACM ICPC en las regiones. Ya que falta solo un mes para la competencia de este año, ¿puedo resolver uno o dos más este año si entreno duro hoy o no hay ninguna posibilidad?

    ¿Cuáles son las amplias variedades en programación dinámica que se preguntan con frecuencia en los concursos de codificación?

    ¿Es mejor representar aristas en un gráfico que sale de un vértice como miembros de una matriz dinámica o una lista vinculada?

    ¿Qué algoritmos se usan en los sistemas de recomendación?

    ¿Qué debo hacer si no puedo obtener el algoritmo correcto para un problema de codificación?

    ¿Es [math] | \ mathbb {Q} | = | \ mathbb {N} | [/ math]?

    ¿Cómo implemento un árbol N-ary en C?

    ¿Qué algoritmo se debe usar para una tesis que tiene al menos tres desventajas que se pueden resolver?

    ¿Cuáles son las diferencias entre algoritmos y pseudocódigo?

    ¿Cuál es el significado de usar una cola prioritaria en el algoritmo de Dijkstra? ¿Qué diferencia hay si usamos una cola normal?

    Cómo determinar si un conjunto dado se puede dividir en dos subconjuntos o más de modo que la suma de los elementos en esos subconjuntos sea la misma

    No sé nada sobre algoritmos. Por donde puedo empezar

    Cómo encontrar el subconjunto contiguo de suma máxima utilizando un método de divide y vencerás

    ¿Es posible aplicar de manera eficiente algoritmos de aprendizaje automático para problemas de optimización combinatoria?