Me resultó difícil entender los algoritmos de clasificación. ¡Cuando profundizo en los algoritmos, siento que mi mente se bloquea! ¿Qué debo hacer para sentirme cómodo con los algoritmos?

El primer intento fallido no es un fracaso. Intenta más, intenta más inteligente. Tu tendrás exito.
Por supuesto, me llevó más de un intento comprender completamente cómo funciona Bubble sort.

Usted pregunta, ¿cómo entender un algoritmo de clasificación?
Digo, cada vez que esté aprendiendo un nuevo algoritmo de clasificación, siga estos pasos:

1. En lugar de tratar directamente de comprender el algoritmo / pseudocódigo de los libros, aclare su mente sobre su funcionamiento gráfico . Como se dijo, una imagen dice más que mil palabras. Un video contiene aproximadamente 24 imágenes por segundo. Siendo eso, aprenderás 24 mil palabras por segundo al mirar un video. Por lo tanto, busque un video en Youtube sobre el algoritmo de clasificación que está tratando de aprender.
Este video muestra un baile húngaro junto con una explicación del tipo Bubble:

2. Ahora aprenda el algoritmo / pseudocódigo de un recurso en línea como este (este muestra su algoritmo con animación): Clasificación (Burbuja, Selección, Inserción, Fusionar, Rápido, Conteo, Radix). También sugiero algoritmos animados.

(Paso opcional) X. Antes de continuar, intente encontrar presentaciones de PowerPoint de conferencias universitarias que contengan el algoritmo que está tratando de aprender. Puede usar la siguiente consulta para hacerlo: “Tipo de archivo de clasificación de burbujas: ppt site: .edu”

3. Ahora puedes referir el libro que tienes. (Iría por Introducción a los algoritmos, CLRS) (Si su libro contiene una implementación de código directo al algoritmo, intente no leerlo ahora)

4. Ahora que comprende profundamente el funcionamiento del algoritmo, intente codificarlo usted mismo. Si puedes hacerlo, ve al paso 6.

5. Busque en Internet el programa que está tratando de codificar (si su libro tiene implementación de código, hágalo). Consulte el código . Dibuje la implementación paso a paso. Ahora, debe comprender completamente el algoritmo con la implementación exacta. Ir al paso 4. 🙂

6. Ahora que conoce el algoritmo, úselo en alguna pregunta de programación . (He mencionado algunos problemas aquí: la respuesta de Deep Kakkad a ¿Qué es un conjunto común de algoritmos de clasificación que uno tiene que aprender? O puede encontrar dichos programas en leetcode, lint code, geeksforgeeks, etc.

7. Para conocer a fondo el algoritmo, busque el algoritmo en quora , lea las respuestas, contribuya respondiendo . Haga lo mismo con sitios web como stackoverflow .

Algunos enlaces más que puedes seguir:

  • Visualización de algoritmos de clasificación
  • Introducción al grupo de estudio de algoritmos (solución CLRS)
  • Algoritmos de clasificación (¡me encanta este!)
  • Bubblesort (este sitio y he terminado con los algoritmos de clasificación, no necesito nada más)
  • Ordenar animaciones de algoritmos (cuando haya terminado con todas ellas y quiera hacer algunas comparaciones)

    (originalmente respondida aquí: https://www.quora.com/profile/De…)

Paso a paso Camina a través de ellos y visualízalos. Afortunadamente, YouTube tiene muchos videos que potencialmente pueden ayudar. También comience con los algoritmos más simples y entiéndalos primero antes de pasar a los más difíciles.

Mis videos favoritos personales involucran a bailarines húngaros:

Tuve que implementar un algoritmo de ordenamiento bitónico paralelo como tarea. En cuanto a los algoritmos de clasificación, bitonic se encuentra entre “me duele el cerebro” y “qué hechicería es esta”. Agregue paralelismo y puede perder la noción de lo que está sucediendo realmente rápido.

Había tomado un curso de algoritmos el semestre anterior, y creo que la razón principal por la que tuve éxito en la tarea fue la siguiente rutina que había desarrollado al tratar de entender un nuevo algoritmo:

  1. No solo lo leas. Escribelo. No lo escriba todavía, solo lápiz y papel. Si eres como yo, esto hace que tu cerebro preste atención a cada detalle: ¿qué índice estoy usando en este bucle for? ¿Qué valores tiene la variable en la recursividad?
  2. Estudie la prueba: escape del dogma de que las pruebas están ahí para las personas que son demasiado tensas (esta era mi actitud habitual antes). Una buena prueba está ahí para convencerte : esto funciona, aquí está el por qué.
  3. Ejecute el algoritmo, paso a paso, en una hoja de papel para una pequeña muestra de entrada. Asegúrese de que la entrada no sea un caso especial (si está tratando de entender el caso general)
  4. Escribe el algoritmo. Python o MATLAB funciona mejor. Imprima valores que aún no está seguro de comprender. Ahora repita el paso 3, asegurándose de obtener los mismos valores a mano que con la computadora. Si no, “depure” su comprensión y repita esto.
  5. Una vez que lo entiendas, explícaselo a alguien. Generalmente le decía a mi novia, pero mi gato también escuchó algunas de mis conferencias. Al explicar, concéntrese en lo que no era obvio para usted al principio: esto lo ayuda a internalizar su progreso.

Hay otras cosas que también me ayudaron: ver las conferencias del MIT sobre programación dinámica de Erik Demaine es la razón principal por la que entiendo cómo funciona DP hoy.

Y si te cansas demasiado, recuerda esa pequeña sensación de orgasmo que tienes cuando finalmente “lo consigues”. Ese sentimiento vale horas de mi tiempo, y es lo que me motiva a seguir presionando.

¡Buena suerte!

La mejor manera de comprender los Algoritmos es ejecutarlos en una hoja de papel, paso a paso, siempre que los encuentre difíciles de entender. Inicialmente lo encontrará aburrido y lento.
¡Pero luego podrás hacer todos esos cálculos mentalmente!
Happy Coding 😀

Yo mismo encuentro los algoritmos de clasificación muy aburridos, pero al mismo tiempo sé que son importantes porque te enseñan diferentes paradigmas de programación.

Lo que realmente me ayudó es buscarlos en Google con la palabra “cmu” al final.

Visite este enlace, creo que vale la pena visitarlo: Clasificación .

En realidad, esto muestra las notas de la “Carnegie Mellon University” y créanme que son las mejores que he encontrado en Internet.

Puede utilizar el truco anterior para buscar otros temas relacionados con CSE en particular.

Ataca de nuevo. Y otra vez. Y otra vez. Tome la tranquilidad del papel, rastree la ejecución a mano [bolígrafo], paso a paso, simultáneamente para todas las variables involucradas. Quédese con el pseudocódigo, no intente implementarlo en ningún idioma todavía. Encuentra visualizaciones en el interweb. Verifique la respuesta de William Yu.

Cuando estés bloqueado, aléjate. Juega, toma una pajita, haz senderismo, lo que sea. Tomar una siesta. Deja que tu cerebro se reinicie. Ahora, ve a la línea 1 de esta publicación.

No se concentre para tomar la imagen completa a la vez.
Tratar de encontrar un atajo te hará más despeinado.

Algoritmo requiere que tengas una orientación muy detallada.
Cada línea requiere tu atención. Concentrarse en un paso individual a la vez lo hará ver más claramente. Si comprende algunas líneas que le darán una pequeña porción de la imagen completa. Al combinarlos lo entenderás todo.

Una vez que comience a obtenerlo por completo, se enamorará de él.
La mejor de las suertes.

Aquí está tu enfoque.

  1. Comience con una mente fresca. Por ejemplo, corre alrededor del bloque o medita durante 3 minutos antes de comenzar.
  2. Comprenda todas las piezas a su vez, pero suéltelas, confíe en su mente para mantenerlas cerca mientras pasa a la siguiente.
  3. Encuentra las piezas críticas sin las cuales tendrías un problema grave y comienza con ellas.
  4. Repase el problema con pequeños ejemplos para obtener el concepto general.
  5. Aproveche su experiencia en la resolución de problemas mientras observa y ensambla esas piezas.
  6. Si te quedas atascado y no entiendes, encuentra lo último que pensaste que entendiste y ve si te equivocaste.
  7. Si cree que ha terminado, pero no usó toda la información, intente encontrar una forma de que el problema falle si no usa las piezas que faltan. Luego incorpore las piezas adicionales para evitar esa falla.
  8. Si está atascado y sigue ejemplos o retrocede sus suposiciones no funciona, entonces tome un descanso de 5 minutos en el que despejará por completo su mente del problema y volverá a un estado fresco antes de reanudar.
  9. Tenga fe en que cualquier pieza que falte saldrá a la superficie si es paciente y abierto y lo acepta o le da la bienvenida por adelantado.

Descubrí que una baraja de cartas era extremadamente útil.

Eche un vistazo a las conferencias de Robert Sedgewick sobre clasificación. Muy fácil de entender.

More Interesting

¿Cómo puede el comercio algorítmico o de patrones generar ganancias cuando la teoría de eficiencia del mercado (de forma débil) argumenta que la información de precios pasada es irrelevante?

1,000 participantes toman un examen que consta de 100 preguntas y 5 opciones por pregunta. ¿Cuál es el mejor enfoque (algoritmo) para encontrar todos los pares posibles de participantes con al menos un 80% de coincidencia en las opciones que eligieron?

¿Cuál es el mejor método de clasificación para usar si solo un elemento está fuera de servicio?

Cómo hacer un robot que pueda resolver un laberinto de líneas

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

Encontré un problema algorítmico y no sé cómo resolverlo. ¿Alguien me puede ayudar?

Cuando reviso algo en Google, muestra una lista de sitios web. Pero, ¿cómo selecciona lo mejor de 1000 sitios web? ¿Hay algún algoritmo?

¿Qué significa front = rear = null y front = rear = -1 en la cola de las estructuras de datos en C ++?

Quiero escribir un código que reproduzca 10 segundos de audio, luego pause durante 15 segundos y luego reproduzca los siguientes 10 segundos, etc. ¿Cómo lo haría?

¿Debo aprender a diseñar estructuras de datos antes de aprender sobre algoritmos?

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

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

¿Qué problema exacto está resolviendo el 'comercio conversacional'?

¿Cuáles son las ventajas de desarrollar algoritmos de PNL frente al uso de API?

Cómo determinar la eficiencia de un programa de retroceso