¿Puede alguien sin antecedentes de cálculo aprender estructuras de datos y algoritmos leyendo CLRS?

Admito por adelantado que la siguiente respuesta está más allá del alcance inmediato de la pregunta, pero aquí va.

Los fundamentos del cálculo te ayudarán enormemente a comprender el crecimiento de las funciones, los órdenes de magnitud, la escala global, etc. Sin embargo, hay programadores sobresalientes que no usan el cálculo que estudiaron en la universidad o que nunca tuvieron un curso de cálculo. Las matemáticas discretas son mucho más importantes para la mayoría de los problemas informáticos que una comprensión profunda del cálculo. Dicho esto, la “secuencia de cálculo” que se enseña en todas las escuelas de ingeniería es normalmente un requisito previo para el álgebra lineal y las estadísticas basadas en el cálculo, temas que se ocupan del cálculo multivariado. Estos dos temas son la base de cualquier programación de análisis intermedio a avanzado. Toda esta matemática también le dará una gran comprensión de los problemas comerciales más avanzados y de lo que se requiere para hacer computación científica en un nivel básico.

Mi consejo, después de 32 de ingeniería de software, gran parte de la programación de sistemas muy avanzada, es construir su base matemática tan profundamente como sea posible al principio de su carrera. Incluso si no usa un tercio de estas matemáticas, haber estudiado la disciplina de la lógica detrás de esto lo convertirá en un mejor programador a largo plazo. También significará que puede ingresar a prácticamente cualquier programa de posgrado en ciencias de la computación / ingeniería sin tener que regresar y tomar los requisitos previos de pregrado en matemáticas. Las personas que piensan que la aparente “demanda interminable” continuará sin control para aquellos que tienen habilidades básicas de codificación y pueden generar algún conocimiento sobre algunas estructuras de datos y algoritmos de clasificación, simplemente están equivocados. Si desea hacer un desarrollo de software real sobre carrera larga, luego no te cambies con habilidades superficiales. Construye tu base “lenta y profundamente” al principio de tu carrera. Aprende a pensar matemáticamente y resuelve progresivamente problemas más difíciles. El futuro pertenece a los altamente competentes.

Definitivamente no necesita cálculo para comprender CLRS, pero sí necesita algunas matemáticas discretas y estar bien informado y cómodo con las pruebas. CLRS probablemente tampoco sea uno de los mejores lugares para comenzar (si solo se encuentra en la etapa previa al cálculo). Puede retrasar un poco el aprendizaje de matemáticas discretas solo leyendo los tutoriales en línea:

  • Tutoriales de ciencia de datos (pseudocódigo)
  • Estructuras de datos y algoritmos (una lista completa)
  • Code Monk – Sé un mejor programador o Notas sobre HackerEarth (en muchos idiomas diferentes)

Estudiar algoritmos y estructuras de datos se trata de comprenderlos , no solo de implementarlos . Esto se debe a que cambiar las estructuras de datos y los algoritmos para adaptarse a una pregunta requiere que comprenda cómo funciona . Por lo tanto, en realidad no importa en qué idioma está codificada la estructura de datos y / o el algoritmo al que está mirando o haciendo referencia; solo trata de entenderlo haciéndolo a mano.

Realmente te recomiendo que leas algo de matemáticas en Khan Academy o en un libro de texto para aprender matemáticas discretas (como teoría de números, conteo y probabilidad, etc.) El cálculo no se usa ampliamente en estructuras y algoritmos de datos, pero puede ser útil. ¡Espero que esto ayude!


Sigue mi blog: CodeFightz 🙂

La respuesta a esta pregunta depende de lo que quiere decir con su pregunta. Si su pregunta es si puede aprender la lógica detrás de ciertas estructuras de datos y algoritmos y puede aprender a implementarlos en la programación, entonces la respuesta es un rotundo sí, aunque puede ser difícil con CLRS ya que está enfocado hacia un lector con experiencia en al menos Cálculo 1. A pesar de esto, un conocimiento del cálculo no es necesario para aprender cómo funciona la ordenación por fusión, o cómo implementarlo en C / C ++ / Java / etc. simplemente requiere una comprensión básica de la programación.

Sin embargo, si su pregunta es, ¿puede aprender a analizar ciertas estructuras de datos y algoritmos y comparar su eficiencia? Probablemente al menos necesitará una comprensión superficial de los límites y la notación Big-Oh. Si bien alguien sin experiencia en cálculo puede decirme fácilmente la diferencia en la implementación entre un tipo de burbuja y un tipo de fusión, hay muchas menos posibilidades de que la misma persona pueda decirme por qué un orden de fusión es más eficiente. Para responder a esa pregunta, debe poder analizar matemáticamente el algoritmo que requerirá algunos conocimientos básicos de cálculo.

Como nota al margen, recomiendo tomarse el tiempo para aprender usted mismo Cálculo 1 usando khan academy o alguna otra fuente en línea, los temas no son los más difíciles con un buen instructor, y le permitiría tener mejor comprensión de las estructuras de datos y algoritmos que desea aprender.

¡Definitivamente puedes aprender sobre la estructura de datos / algoritmos sin conocer el cálculo!
CLRS puede ser un poco pesado para principiantes (y se entiende principalmente como una referencia para complementar un curso sobre estructuras de datos en lugar de una fuente de información primaria).

Si eres nuevo, te sugiero lo siguiente:

Consulte las notas del Profesor James Aspnes de Yale sobre Estructuras de datos (para obtener más detalles sobre los materiales, consulte la respuesta de Nishant Jain a ¿Cuáles son los mejores libros para aprender algoritmos y estructuras de datos?) A los que se puede acceder en http: //www.cs. yale.edu/homes/asp… . Tiene una cobertura fantástica de estructuras de datos y no recuerdo que se requiera ningún cálculo para comprender el material (al menos cuando tomé el curso).

Para aprender sobre algoritmos, leí varios libros antes de decidirme sobre el diseño de algoritmos de Kleinberg y Tardos [1] (por recomendación del profesor de algoritmos de Yale / miembro de MacArthur, Daniel Spielman). Después de hablar con Spielman y tomar su clase, estoy de acuerdo en que Kleinberg-Tardos presenta muy claramente el contenido en el campo de los algoritmos, especialmente en comparación con CLRS. Spielman enseña un fantástico curso basado en pruebas titulado Diseño y Análisis de Algoritmos utilizando ese libro de texto como suplemento, y hace un gran trabajo. Sin embargo, recomiendo aprender sobre pruebas de lectura / escritura de antemano, ya que esas habilidades son esenciales para el material (y no se enseñan comúnmente en la escuela secundaria), mientras que solo vi tal vez una prueba compleja en clase que requería conocimiento de cálculo.

¡Buena suerte!

Notas al pie

[1] Diseño de algoritmo: 9780321295354: Computer Science Books @ Amazon.com

Ya recibió la palabra oficial del autor real del texto, pero no, el cálculo definitivamente no es necesario. Algunas de las cosas que obtienes en el cálculo II sobre secuencias y series serían muy útiles (por ejemplo, creo que usar la regla de L’Hospital para probar las tasas de crecimiento asintótico de las funciones es más fácil que las técnicas típicamente utilizadas en matemáticas discretas), pero no es necesario. Al menos debe saber cómo calcular las sumas para series aritméticas y geométricas, pero las series de Taylor son excesivas (aunque son el corazón y el alma del análisis algorítmico en el análisis numérico). Las cosas más importantes son la teoría básica de conjuntos, las recurrencias y la inducción, y la probabilidad discreta y la combinatoria. Alguna teoría de números ayuda a la sección sobre algoritmos teóricos de números, pero ese es un tema bastante avanzado. Un poco de teoría de grafos no hace daño, pero lo que obtienes de un texto matemático real está muy por encima del nivel de tratamiento en un texto de algoritmos típico.

Sin embargo, como se mencionó, es un libro bastante avanzado. Si tienes un fuerte nivel de madurez matemática básica, puedes superarlo, pero este fue mi texto de primer año de posgrado. Es bastante duro para la autodidacta.

La mayoría de los expertos en informática que conozco solo tienen antecedentes generales de cálculo. El cálculo es principalmente la matemática de funciones continuas, que pueden ramificarse en miles de subgéneros intrincados, pero en general se trata de representar lo infinitesimal. En la programación de computadoras, rara vez nos preocupamos por lo infinitesimal (ya que las computadoras digitales no pueden representarlo) a menos que estemos escribiendo software que esté específicamente relacionado con él. Comprender el infinitesimal es importante, especialmente al decodificar una forma de onda (como el audio), pero solo en algunos casos. Los algoritmos (como el gran Thomas Cormen ya ha mencionado) se trata de comprender la complejidad de ciertas operaciones lógicas y matemáticas y cómo impactan el rendimiento del software y los límites de una arquitectura informática.

A2A. Sí, casi el 98% del tiempo, en realidad hasta hace poco casi el 100%, he usado matemáticas básicas de la escuela / décima clase. Por encima de eso, no leí ningún libro. Esto no quiere decir que no deba leer un libro, pero también es un hecho que no necesita nada al 100% si tiene un ambiente pacífico y presencia mental para completar la tarea en cuestión, Wikipedia podría ser su principal amigo. La respuesta es un cierto sí.

Como otros han dicho aquí (incluido un autor real del libro), el requisito principal es la madurez matemática suficiente para comprender la estructura lógica de las pruebas. Recuerdo que tal vez se usó una integral en algún lugar de la primera edición al menos para unir un resumen, pero, por supuesto, podría estar equivocado. Entonces no, no hay mucho cálculo en el texto.

Sin embargo, en general, no recomendaría una vida al margen de preguntar siempre “¿Necesito cálculo para esto?”.

Es más fácil y más gratificante aprender un poco de cálculo, entonces realmente sabrás para qué lo necesitas.

CLRS no es un buen libro introductorio para estructuras de datos y algoritmos. Es muy intensivo en matemáticas. Un libro mejor es Data Structures and Algorithms in Java de Goodrich y Tamassia. CLRS se usa generalmente como un libro de estudiante de tercer año de pregrado y primer año de posgrado. Entonces, para responder a su pregunta, probablemente le resulte muy difícil seguirla.

¡Seguro! Se necesita muy poco cálculo para CLRS. Las fórmulas que necesita saber están en el libro.

Aquí hay otra forma de decirlo. Desde mi última clase de cálculo, que fue en 1975, he usado cálculo (aparte de lo que está en CLRS) exactamente una vez en mi investigación. Estaba dentro de un capítulo de mi disertación, y nunca se publicó en otro lugar.

El CLRS puede ser un desafío, ya que lo que realmente es un libro de matemáticas, pero no requiere un conocimiento significativo del cálculo. Ve a por ello.