Quiero practicar algoritmos durante 10 días (240 horas). ¿Donde debería empezar?

Si tuviera que idear un curso acelerado de 10 días en algoritmos (en su mayoría trabajando desde el principio, y obviamente dividiendo las cosas y ordenándolas de manera bastante arbitraria), podría dividirlo de esta manera:

1. Algoritmos de ordenación: aprenda algunos algoritmos de ordenación simples, como la ordenación por burbujas y la ordenación por inserción. Aprenda algunos buenos algoritmos de clasificación, como Quicksort, Merge Sort y Heapsort. Comprenda cómo funciona cada uno, qué características de rendimiento tiene cada uno y por qué.

2. Algoritmos de búsqueda: comprenda los conceptos básicos de la búsqueda de amplitud en primer lugar y de profundidad en primer lugar. ¿Cómo puede ayudarle si los datos están organizados de alguna manera? Tómese el tiempo para entender la búsqueda binaria y la búsqueda A *.

3. Algoritmos de grafos: algoritmos de estudio para encontrar rutas / ciclos hamiltonianos. Estudie el algoritmo de Dijkstra y otros algoritmos para encontrar la ruta más corta entre dos nodos gráficos. Estudia el problema del vendedor ambulante y la coloración de gráficos.

4. Autómatas y análisis: aprenda sobre las máquinas de Turing. Aprender sobre autómatas finitos deterministas y expresiones regulares. Aprende sobre los autómatas pushdown y autómatas celulares. Lea el artículo sobre la automatización celular en Wolfram MathWorld y embarque en una caminata wiki épica.

5. Teoría de colas y algoritmos de red: conozca las colas de prioridad. Aprende sobre el algoritmo del ascensor. Aprenda sobre el protocolo de red IP, y compare y contraste TCP y UDP.

6. Estimación y algoritmos heurísticos: aprenda sobre la estimación de Fermi, los algoritmos de Monte Carlo, el método de Newton y los algoritmos evolutivos.

7. Algoritmos de hash – Aprenda cómo se implementan y utilizan las tablas hash. Aprende sobre funciones hash criptográficas.

8. Aprendizaje automático: estudie las redes neuronales, los algoritmos de clasificación, las cadenas de Markov y los filtros bayesianos.

9. Algoritmos de gráficos: algoritmos de estudio relacionados con la geometría y la óptica.

10. Concurrencia: aprenda sobre el problema de la exclusión mutua (y las diversas soluciones a ese problema). Aprenda sobre la computación en paralelo, y los problemas de condiciones de carrera, punto muerto y estado inconsistente. Aprenda sobre la programación de hilos / procesos.

Después de estudiar estas cosas, definitivamente sabrás algo acerca de los algoritmos.

Me encanta esta pregunta y espero que te guste mi respuesta.

He aquí por qué me encanta. Pide una manera de llegar a algo que parece imposible. Casi se siente como si quisieras engañar a todos aquellos que vertieron años y años en algoritmos de aprendizaje. Probablemente es aquí de donde viene algo de negatividad en las respuestas.

¿Pero por qué? Probablemente la gente que respondió eso asumió que desea terminar el proyecto después de 10 días. Bueno, estoy de acuerdo. En 10 días se puede aumentar un poco su conocimiento de los algoritmos, pero entonces probablemente olvide todo esto lo más rápido que pueda decir “Fue una pérdida de tiempo y esfuerzo”. Me recuerda a abarrotar que no es una forma muy efectiva de aprender.

Sin embargo, si pasara 40 minutos al día en el mismo proyecto de aprendizaje para los próximos 365, finalmente le dedicaría aproximadamente 240 horas de trabajo y los resultados serían una historia totalmente diferente.

¿Qué puedes lograr en 240 horas?

Mucho.

Puedes aprender español intermedio alto.

Puedes prepararte para un triatlón de distancia olímpica desde el cero absoluto y lograr un resultado respetable. Hice unas 100 horas de entrenamiento antes del evento, donde puse mi mejor temporada: 2h39m. Si tuviera que pasar el doble de tiempo (aún 40 horas por debajo de las 240hrs) podría imaginarme que llegar a la marca mágica de 2h30m en esa primera temporada es una posibilidad real.

Mis cursos de CS fueron entre 30-60 horas cada uno. Probablemente pasé el doble de tiempo revisando las notas, leyendo más sobre el tema y haciendo tareas de trabajo.

Así que mi sugerencia es:

  • Mira este video: “Cómo aprender algo en 20 horas”:
  • divida su programa en 12 mini objetivos diferentes como: análisis de complejidad, clasificación, algoritmos básicos de árbol, algoritmos de grafos básicos, etc.
  • dividir cada mini-gol en 4 micro-objetivos más pequeños, por ejemplo, algoritmos de clasificación ingenua, combinación de ordenación, ordenación rápida, algoritmos de clasificación de conteo / cubo / radix,
  • derriba cada micro-objetivo en nano-sesiones de 6-7 x 40 minutos de duración cuando obtenga una parte muy pequeña de su micro-objetivo y trate de dominarlo realmente. No solo lea sobre esto y rápidamente pase al siguiente párrafo porque hay muchas cosas que aprender pero realmente dominarlo. Yo mismo encuentro que la Técnica Feynman hace maravillas en ese aspecto. Es genial porque pone un listón razonablemente alto para ti: a menos que puedas explicar el concepto a otra persona con palabras simples, de manera concisa no dominaste el concepto,
  • estar bien con su micro-objetivo extendiéndose sobre un límite de la semana. Realmente está bien. 1 semana por micro-objetivo es solo una guía aproximada para darle algún tipo de marcador de progreso,
  • usa tus habilidades recién adquiridas: escribe código y escribe pruebas; use muchas aserciones para verificar si su implementación cumple con todos los invariantes del algoritmo,
  • después de alcanzar su mini-objetivo, vuelva a evaluar si desea continuar. ¡Puede resultar que no te encuentres tanto en algoritmos como habías pensado! Es mucho mejor descubrir esto antes que después 🙂

¡Buena suerte!

Me puedo imaginar cómo pasar por los libros de algoritmos puede ser aburrido. Puedo compartir lo que hice para enfrentar esta situación. Sin embargo, debo advertirte que no soy un experto, pero esto es lo que me mantiene en movimiento.

Encuentra algunos amigos que compartan intereses similares. Hazlo una actividad grupal. Así es más divertido. Aprendes mucho de tus amigos.

Empieza a participar en concursos de programación. Esto se convertirá en una fuerza impulsora para que usted pueda aprender más. Algunos de los sitios web que realizan estos concursos son TopCoder, Codeforces, Codechef. Y personalmente, creo que la implementación de algoritmos nos da una mejor comprensión de cómo funciona.

Nunca te asustes de la competencia. Cree en ti mismo y sigue aprendiendo. Cada uno de estos sitios web tiene una gran comunidad de programación. Son muy útiles. Puedes publicar dudas y ayudar a otros también.

Para algunos tutoriales puedes visitar los siguientes sitios:
Página en udacity.com
Aprender Algoritmos
Algoritmos: Diseño y Análisis, Parte 1

Para consultas:
Desbordamiento de pila
Página en quora.com

¡Espero que esto ayude!

Tantas respuestas inútiles a una buena pregunta. Kartik Ayyar tiene una gran respuesta, sin embargo.

Probablemente ya conozca algunos algoritmos, que son básicamente una receta para resolver un problema. Por ejemplo, el algoritmo de “búsqueda binaria” es muy simple, puedes inventarlo tú mismo en unos minutos jugando a este juego:

“Estoy pensando en un número entre 1 y 100. Cada vez que adivines, te diré si mi número es mayor o menor que tu adivino”

Juega con alguien durante 5 minutos y descubrirás la búsqueda binaria por ti mismo. La solución a algo como el “Problema de la mochila” es igualmente intuitiva.

Para aprender más de lo que es inmediatamente obvio, comenzaría con edX. Está construido sobre el material openCourseWare de MIT, pero en un entorno más completo y guiado. Los cursos 6.00.1xy 6.00.2x tienen muchas explicaciones realmente buenas sobre algoritmos que incluso puedes entender bien sin ninguna experiencia en programación.

¿Mi experiencia de vida en algoritmos? Comencé a aprender programación cuando tenía, no sé, más o menos 12. Recogí algunos libros en la biblioteca en Javascript, Basic (<3) y Perl y similares, y me enseñé la sintaxis. No aprendí nada "de computación" ni nada, solo un montón de instrucciones para hacer que la computadora haga cosas. (¡A los 12, me sentí como Dios! ¡Bwahahah!) Entonces, si tuviera que resolver un problema, siempre inventaba mi propio "algoritmo". Bastante feo, lento, mierda de fuerza bruta, pero hizo el trabajo.

Avancé hace un par de meses, ahora tengo 12 años de experiencia en varios lenguajes de programación diferentes, pero aún no conozco los “algoritmos” de la forma académica en que lo haría un estudiante de CS. Así que tomo los cursos edX y aprendo los nombres de cosas que ya todos saben, además de otras formas más eficientes de manejar los problemas.

En conclusión, sí, puedes aprender algoritmos en diez días, especialmente si tienes un buen historial. No tendrá suficiente para programar un motor de búsqueda o comenzar a plegar proteínas, pero podrá nombrar y explicar algunas. Comienza con edX y trata de resolver problemas por tu cuenta. Si tiene un problema específico, búsquelo en Google e intente encontrar una solución algorítmica. Si no, simplemente comienza a leer sobre algoritmos, Wikipedia sería un buen comienzo, luego elige uno que te guste y trata de entenderlo realmente.

EDITAR: Para todas las personas que publican respuestas inútiles e inútiles, domine la diferencia entre la palabra “aprender” y la palabra “maestro”. Diablos, puedes aprender qué es un algoritmo en unos 10 minutos.

Tomando su pregunta muy literalmente, “aprenda algoritmos en 10 días” asumiré que quiere decir que se sentirá exitoso si puede aprender al menos dos algoritmos, puede hacerlo en 10 minutos. Muchas personas que trabajan como programadores tienen un conocimiento bastante confuso de los algoritmos hoy en día de todos modos y usted encajará perfectamente.

Por otro lado, si pretende desarrollar algún tipo de competencia profesional para que su conocimiento de los algoritmos pueda ser útil para el trabajo o los pasatiempos, 10 días son suficientes para comenzar a comprender qué tan profundo es el tema. Es genial que te interese. Soy bastante serio cuando digo que muchas personas logran olvidar todo lo que se les enseñó acerca de los algoritmos. Algunos de los usos más comunes de algoritmos, como la clasificación y la búsqueda, vienen preconfigurados en prácticamente todos los lenguajes de alto nivel.

EDITAR
Se olvidó de dar el consejo. Tomando prestada una línea de Mahan Khalsa, “Comience en cualquier lugar, vaya a todos lados”. En 10 días, no puede hacer mucho, excepto meterse, así que elija lo que parezca interesante de los libros con el patrón de denominación “Introducción a _____ y ​​algoritmos”. A menos que sea una inteligencia realmente notable, debe seguir un plan de estudios establecido ya sea por libro o por aula (o aula virtual).

Como han dicho otros, 10 días, por supuesto, no es suficiente. Sin embargo, todavía puedes hacer un trabajo decente en 10 días:
– Comience con Cracking the Coding Interview. Tiene descripciones breves y problemas en varias estructuras de datos y algoritmos básicos. Estudíalos, resuelve los problemas e implementa algunos de ellos. Dado el tiempo, no puede estudiarlo extensamente, pero aún puede repasar la mayor parte del mismo con bastante rapidez. Yo diría que esto se puede hacer en 4 días. (Hice esto yo mismo!)
– Obtener diseño de algoritmos. Los autores han dividido los conceptos de algoritmos más importantes en 6 unidades: teoría de grafos, algoritmos codiciosos, división y conquista, programación dinámica, flujos de red y complejidad computacional. Pasar un día en cada capítulo, incluyendo repasar las ideas y practicar un buen número de problemas, debería ser factible.

Y ya está todo listo …
Obviamente, puede hacerlo mucho mejor si tiene más tiempo, pero en 10 días, esta es una cobertura bastante buena de un tema tan vasto como los algoritmos.

El campo de los algoritmos, al igual que gran parte de la informática, es, en su mayoría, solo una gran bolsa de trucos y principios heurísticos de resolución de problemas. No hay muchos teoremas o ideas unificadoras. Por lo tanto, una forma rápida de obtener una idea general de los algoritmos es aprender algunos de los principios del arte, entender cómo se pueden aplicar y elaborar muchos ejemplos por su cuenta (tanto a mano como por código).

Algunos principios heurísticos básicos importantes son:

  • Algoritmos codiciosos
  • Divide y conquista los algoritmos.
  • Programación dinámica
  • Retroceso

Estudia estas técnicas y estudia cómo se pueden utilizar. Si eres listo y si trabajas muy duro, probablemente puedas obtener una competencia aproximada para estos métodos y su aplicación básica en aproximadamente 10 días. (Esto es asumiendo que usted ya es competente en otros fundamentos, como las estructuras de datos básicas y los conceptos básicos de complejidad de tiempo / espacio).

A menudo es útil saber también un poco acerca de los problemas de NP-completa; no porque vaya a resolver P vs. NP, sino porque quiere saber cómo identificar que un problema en particular está NP-completo para que no pierda mucho tiempo tratando de encontrar una solución eficiente. Si eres listo y si trabajas muy duro, probablemente puedas tener una idea aproximada de esto en aproximadamente una semana.

Hay muchos temas más avanzados, pero creo que las cosas que he mencionado deberían formar una base básica bastante buena.

Hay ‘N’ número de algoritmos que tardarían ‘N’ días en resolver y aprender cada uno en particular. Esto tomará O (n ^ 2 ) el tiempo de tu vida.
Pues puedes echar un vistazo a algunos de los básicos:
Algoritmos codiciosos, Algoritmos de búsqueda como búsqueda binaria, Algoritmos de clasificación como Clasificación por fusión, Ordenación rápida, etc.
Para comenzar, primero aprenda sobre la complejidad espacio-tiempo de los algoritmos, el tiempo de ejecución. Entonces, el algoritmo básico sería la búsqueda lineal, la clasificación de burbujas, o puede ser que debas resolver algunos problemas muy simples como invertir un número, verificar si un número es primo o no. Al hacerlo, podrá expresar algoritmos en el idioma que elija. Siempre recuerde que los algoritmos de aprendizaje no se pueden realizar en 10 días. Siga practicando y resolviendo problemas utilizando los algoritmos que aprende en el camino. Feliz codificacion

Primero y ante todo

Empezaste en el extremo corto de la cadena. Aprendes algoritmos básicos antes de aprender programación.
Mira, la programación es solo escribir en un lenguaje, primero necesitas el pensamiento. Ahí es donde entra el algoritmo.

Ahora, a tu pregunta
Es imposible
Principalmente porque, ¿qué quieres decir con que quieres aprender algoritmos? Hay innumerables algoritmos infinitos en el mundo. He estado estudiando algoritmos durante 8 años y tengo que pensar cada vez que me encuentro con un nuevo problema sobre su algoritmo. ¿Qué quieres aprender y cuánto sabes ya?

¿Sabe la clasificación básica en tiempo O (n log (n))?
¿Sabes iteración y recursión?
¿Conoces la Programación Dinámica?
¿Conoces la programación?

Si no, recomiendo leer Donald Knuth (todos los volúmenes). Pero eso lleva mucho más tiempo del que tienes.

Otra opción, posible más rápido.
Comience a leer geeksforgeeks, que puede cubrir todos sus algoritmos básicos. Las descripciones de los algoritmos son claras y están bien ubicadas, pero no muestran la intuición detrás del algoritmo, lo que creo que es una gran decepción para los algoritmos de aprendizaje.

En definitiva, depende de qué subconjunto de algoritmos quiera aprender.

No obstante, comience a aprender, 10 días de aprendizaje serán mejores que ninguno.

El tiempo máximo que puede ser productivo en un día es de 10 horas.
Teniendo en cuenta esto, tienes 100 horas efectivas (no 240) para practicar algoritmos.

Ahora, desde que usaste la palabra práctica, asumo que ya tienes un conocimiento básico sobre algoritmos.

Y en el plazo de 10 días, asumo que es para una prueba o una entrevista.
Ahora, para qué algoritmos practicar, aquí hay una lista de los más populares:
La respuesta de Amit Rai a ¿Cuáles son los algoritmos necesarios para resolver todos los problemas (utilizando C ++) en cualquier concurso de codificación competitivo?

La lista tiene alrededor de 150 algoritmos listados. Seleccione 100 de ellos.
Pasa exactamente 1 hora en cada algoritmo.

De esa manera, tendrá al menos algunos conocimientos sobre los 100 algoritmos al final de las 100 horas.

Ahora, si puede estirarse durante 2 horas cada día, completará las 100 horas en el noveno día. Lo que le dará alrededor de 20 horas para revisar o estudiar más.

Buena suerte y háganos saber cómo va.

Lo primero que debe hacer es eliminar el plazo de la pregunta. El plazo es innecesario, limita y provoca respuestas agresivas.

Su pregunta debería ser simplemente: “Quiero aprender a usar algoritmos en la programación. ¿Cómo debo comenzar?”.

Usted se sorprenderá de lo útiles que serán las respuestas perspicaces y detalladas. Realmente podrías aprender algo de las respuestas.
yo
En su lugar, elige encerrar su pregunta de una manera que apesta a desesperación (¿por qué solo tiene diez días?), Abarata el tema y la competencia de aquellos a quienes pide responder y da una impresión de arrogancia e incinceridad. ¿Por qué alguien querría perder el tiempo respondiendo una pregunta como esa?

¡Aprende sobre la ” recursión ” por 5 días! Sólo recursión, nada más. Profundice en el concepto de ello, cómo funciona, cómo su lenguaje de programación favorito maneja la recursión y cosas así.

Pase los días restantes en hojear a través de varios algoritmos de su libro de texto favorito, encontrará que casi todos esos algoritmos (llamados complejos) están utilizando la recursión.

PD: para comenzar a aprender este maravilloso concepto, simplemente escriba recursión en Google y observe que Google intentará corregirlo recursivamente al mostrar “Quiso decir: Recursión”. Divertido no es?

En primer lugar, su objetivo es muy amplio y debe ser mucho más específico para poder medir su progreso y saber que logró su objetivo o no.

10 días parece un período corto para aprender todos los algoritmos principales, incluso si tiene una capacidad muy alta de memorizar cosas (IQ muy alto, etc.) y algunas bases. Yo diría que es imposible para la mayoría de las personas, debido a las limitaciones de nuestro cerebro y los mecanismos de aprendizaje.

Además, según su estimación de tiempo de 240 horas, veo que está excluyendo el sueño / las siestas / las pausas, que son factores vitales para un aprendizaje eficiente, porque durante el sueño fortalecemos las conexiones neuronales que se construyeron durante el día.

Sin profundizar en la neurociencia, ten en cuenta que aprender es un maratón, y no un sprint.

Cuando comencé a programar prácticamente como un pasatiempo en un semestre muy relajado en la universidad, creo que mi experiencia podría ser útil para ti.
No aprendí ni el ABC de la programación en 10 días. Tomó mucho más tiempo, aunque realmente no lo percibí porque no tenía un objetivo claro.

Mis primeros acercamientos a la codificación fueron una serie de intentos fallidos e inconexos en diferentes momentos de mi vida, a partir de los 9 años. Realmente no aprendí nada útil. Solo leí unas pocas páginas de un lenguaje ensamblador en ese entonces, luego encontré un código fuente básico e imité su sintaxis (que no sabía qué significaba en ese momento) hasta que tuve un chiste de consola que estaba funcionando. Si solo quiero robar méritos, edité algunos archivos HTML, lo que cuenta como código fuente, supongo.
Luego dejé la programación hasta los 19 años, en la segunda mitad de 2010. Luego, conseguí que un amigo me enseñara los fundamentos de MUY MUY MUY, y me puse a resolver algunos problemas de Euler del proyecto de una manera miserable. Tengo el código para los ~ 15 problemas que he logrado resolver, si quieres reírte. Entonces, de nuevo, me estancé.
Sin embargo, en 2012 hice algunas cosas que me animaron de nuevo. El primero, fue un curso de Coursera python, impartido por la Universidad de Toronto, IIRC. El segundo, estaba haciendo alrededor de la mitad de un curso diferente, orientado a la programación de bajo nivel en C. No logré completarlo porque no era muy amigable con el depurador en ese momento y realmente no tenía tanto. tiempo libre como antes. Pero lo que creo que lo hizo para mí fue encontrar un proyecto simple y en el que trabajar. Una vez que encuentre algo que pueda piratear por diversión, sin que nadie establezca fechas límite y eso lo mantiene interesado, comenzará a practicar y no lo percibirá como tal. No será en 10 días. No serás un maestro de los algoritmos. Pero se volverá lo suficientemente inteligente y entusiasta a través de la práctica para enfrentar el desafío de entender los algoritmos formalmente. Hoy en día, comencé a estudiar CS (bueno, en realidad estoy inscripto desde 2010 a CS y Química, pero me centré en Química todo este tiempo, y fui bastante malo en ambos), y recientemente conseguí un trabajo Como programador junior. Claramente, no soy el mejor, pero si juzgaron que lo que logré como un simple aficionado es la calidad de la nómina, entonces tampoco soy el peor.

TL; versión DR: solo encuentra algo en lo que trabajar. Al menos para mí, la única manera de seguir practicando lo suficiente para ser decente es no percibirla como práctica, ya que eso la hace bastante tediosa.

Hola, interesante pregunta y me gusta tu intención de estudiar. Pero tengo que cuestionar el motivo. ¿Por qué has impuesto un límite de 10 días? ¿Por qué restringirte solo a los algoritmos? Independientemente de sus motivos, esto es lo que sugeriría.

Primero comience por obtener una base sólida en los algoritmos más comunes. Un gran libro para este es este: Amazon.es: T Cormen, C Leiserson, R Rivest, C Stein: 9780262533058: Libros

Una vez que tenga una cierta exposición a la mecánica de resolver estos problemas de tipo de “estudio”. Empieza a aprender cómo aplicar estos en el mundo real. ¿Dónde utilizarías una búsqueda binaria? ¿Por qué elegiría un método de clasificación, como la ordenación por burbuja, en lugar de una clasificación rápida? Aprender cómo y dónde aplicar estos enfoques es tan importante como poder codificarlos.

Uno de los mayores problemas a los que se enfrentan los nuevos desarrolladores no es tanto escribir el código o encontrar ejemplos de trabajo en Internet, sino que está en la aplicación y en la justificación para usar dicho enfoque. El buen diseño del programa supera la velocidad cada vez.

Si solo tienes 10 días de tiempo libre para dedicarte a esto. Consigue un buen libro. Pasa uno o dos días leyendo. Dos veces más tiempo de codificación, y el resto del tiempo aprendiendo sobre los “por qué”.

Buena suerte. Saludos cordiales, Robin.

Es imposible.

Vale la pena intentarlo sin embargo. Ya que cuanto más lo intentes, más odiarás los algoritmos y la programación. Luego, se convertirá en otro desarrollador de Ruby o Java, y contribuirá a la entropía del mundo de una manera similar a como lo hace la mayoría de las personas.

Por lo tanto, los desarrolladores y arquitectos de software reales, que saben de qué se tratan los algoritmos y el diseño de software, ganarían valor una vez más.

Por lo tanto, por todos los medios, adelante e inténtalo. Honestamente no importa donde empieces. Si el objetivo es seguir intentando durante 10 días seguidos, lo odiarás de todos modos. Solo asegúrate de tener suficiente fuerza de voluntad y resistencia para durar todos estos 10 días.


En serio, ¿puede codificar cualquier problema fácil de TopCoder o CodeForces en unos minutos en el Bloc de notas / GEdit / cualquier editor que los usuarios de Mac tengan de forma predeterminada, y hacer que compile y pase todas las pruebas desde el primer intento? Si no, y usted es serio, llegue primero. El resto seguirá.

Uno de los textos autorizados sobre algoritmos es “Introducción a los algoritmos” por CLRS. Aquí hay un extracto de uno de los autores del libro, el profesor Thomas Cormen.

Como algunas páginas tardaron claramente menos de 14 horas en terminarse, ¡hay páginas que tardaron más de 14 horas!

– La respuesta de Thomas Cormen a ¿Por qué CLRS decidió ser coautor de la Introducción a los algoritmos? ¿Cuánto tiempo tomó desde el principio hasta el final?

Aunque no se requiere que uno termine completamente el libro de principio a fin, cuando un trabajo se estima en 14 horas por página para un libro con> 1000 páginas, 10 días es un período de tiempo demasiado corto.

Esta es una buena manera de comenzar sin siquiera levantar un libro de texto:

  • Aprende cómo buscar una matriz de enteros para un número dado.
  • Aprende a ordenar esta matriz.

Ahora aumente el tamaño de su matriz para que sea realmente grande (> 1 millón de enteros) y vea si sus programas que escribió anteriormente todavía son rápidos.

¿Puedes hacer algo para que tus programas sean más rápidos?

Solo haciendo esta simple pregunta abre más preguntas:

  • ¿Cómo se analizan los programas para analizarlos?
  • ¿Cómo puede desarrollar una comprensión de este factor de análisis para hacer que sus programas sean más rápidos?

Enhorabuena, has empezado con los algoritmos de aprendizaje. Si bien encontrarás muchas herramientas que te permitirán analizar y resolver tales problemas, lo que hizo que los algoritmos fueran interesantes para mí fue a pesar de la profundidad que encontraste más adelante, comenzar fue relativamente fácil.

Al contrario de lo que dicen otras personas, creo que es posible aprender algoritmos en algún sentido de esta palabra en 10 días. Por ejemplo, podría elegir los 10 algoritmos más populares para memorizar su implementación y comprender qué problema general están resolviendo.

La cosa es que no es muy útil. Hay dos cosas de conocimiento de los algoritmos y el pensamiento algorítmico. El primero es otro conocimiento más. Esto último es algo que lo convertirá en un gran científico de la computación, le permitirá obtener un gran trabajo o tal vez incluso proponga su propio algoritmo que otras personas intentarán memorizar en diez días (). También creo firmemente que el pensamiento algorítmico va mucho más allá de la ciencia de la competencia. Por ejemplo, lo uso mucho en la vida cotidiana para cosas pequeñas (automatizando la rutina diaria aburrida) y algunas cosas un poco más grandes (planeando qué hacer el próximo año para lograr la felicidad en cierto sentido).

Ahora el pensamiento algorítmico es algo que comencé a tener una comprensión inicial después de 3 años de hacer casi exclusivamente eso en mi escuela secundaria polaca, ir a campamentos de informática participando en muchas competiciones y escuchar a personas más experimentadas.

Resumiendo, entienda lo que puede lograr en 10 días, pero también piense un poco si está tratando de lograr lo correcto en primer lugar.

Definitivamente es una actividad digna. Mire los libros de texto comunes sobre algoritmos y estructuras de datos. Por lo general, tendrán algunos problemas al final de los capítulos; comience por codificarlos.
Hay algunos algoritmos muy fundamentales que se utilizan con frecuencia: los algoritmos de búsqueda espacial del estado, el algoritmo de Dijkstra, los algoritmos de búsqueda de disco, los algoritmos de recolección de basura, etc. La maestría de estos (poder codificarlos correctamente desde la memoria) lo pondrá muy por delante de sus compañeros .
También hay una opinión de que practicar algoritmos es muy similar a la práctica de Kata. (Inicialmente argumenté que era un Koan, pero terminé aceptando que Kata podría ser una mejor opción). Y, la analogía con Karate es buena. Mas Oyama era muy hábil, pero practicaba técnicas básicas durante toda su vida. Los grandes corredores de esquí pasan el tiempo cada primavera estudiando cosas como resbalones laterales y giros básicos. ¿Por qué? Siempre se puede ser mejor y ser el mejor en la palabra o el mejor nacido depende del dominio de la aplicación de los fundamentos.
¡Buena suerte!

More Interesting

Intento aprender nuevas palabras todos los días. Pero a veces no entiendo sus significados, olvídalos más tarde y cometo errores gramaticales al usarlos en una oración. ¿Cuáles son las soluciones prácticas?

¿Soy un estúpido, raro o simplemente diferente?

Quiero aprender música, específicamente música clásica del sur de la India. Me encuentro demasiado intelectual al respecto. ¿Cómo puedo bucear y aprender a cantar?

Siento que cuanto más uno lee y aprende, más se desordena su vida. La ignorancia es felicidad. ¿Cuáles son tus ideas?

Quiero hacer un blog. Sé lo básico de HTML, CSS y JavaScript para construir mi blog. ¿Cómo debo empezar a escribir los códigos o cuáles serán los pasos?

Tengo un mes de tiempo libre conmigo. ¿Cómo lo uso efectivamente en la red?

Lo estoy haciendo mal en Harvard en este momento. ¿Cómo puedo empezar a estudiar de forma más inteligente? ¿Cómo puedo aprender mejor el material a lo largo del semestre?

Estoy tratando de aprender francés (específicamente Quebecois). Encuentro la comprensión casi imposible, mientras que todos los demás aspectos mejoran. ¿Hay alguna técnica de aprendizaje que debería usar para superar esto?

Tengo 17 años. Quiero aprender a hacer aplicaciones, codificación, creación de sitios web y mucho más. Me encanta todo sobre una computadora. ¿Cómo puedo aprender todo esto solo con la ayuda de la información disponible en la red y cuánto tiempo específicamente se necesita para aprender cada cosa?

Estaré iniciando un producto de software. ¿Hay algún curso de capacitación disponible para nuevas empresas o algún curso de plan de negocios?