¿Cuáles son los cursos de matemáticas más importantes para la programación competitiva y la actualización de mi cerebro?

Los problemas del proyecto euler o infinitium son matemática pura y, según mi experiencia, el 75% de ellos tienen que ver con la teoría de números. Por otro lado, en un concurso estándar, esperaría ver% 5 por ciento de los problemas como ese. Por lo tanto, no es exactamente la misma matemática que necesita o busca.

Como primer paso para resolver un problema, comprenderlo, debe usar las matemáticas. Cuanto más formalice el problema y lo describa en términos matemáticos, más posibilidades tendrá de descubrir la observación necesaria.

Después de que se te ocurra alguna hipótesis, aquí viene la parte de prueba. Porque si implementa 200 líneas de código basadas en su hipótesis en caso de falla, podría perder un par de horas, lo cual es bastante valioso.
Para probar su solución, debe estar familiarizado con las técnicas de prueba matemática, como la inducción, la contradicción …

Mi punto es que no necesitas saber teorías complicadas desde el principio, solo necesitas aprender a pensar de manera matemática.

Gracias A2A

Creo que estos cursos deberían ayudarlo a competir con facilidad.

  • Math for CS por MIT OCW: un gran MOOC para construir la base matemática básica para los estudiantes de CS. Toca todos los conceptos importantes como la teoría de la probabilidad, la teoría de números, la teoría de gráficos, etc.
  • Álgebra lineal de MIT OCW: excelente para alguien que quiere trabajar en la teoría de matrices
  • Introducción al pensamiento matemático – Stanford University | Coursera: este es un curso no específico de CS, pero de todos modos lo encontré bastante útil. Te enseña a analizar teoremas y pruebas

(fuente: la respuesta de Ashish Kedia a ¿Cuál es el mejor MOOC de Matemáticas para Ciencias de la Computación que puedo tomar?)

Espero haber ayudado.

Salud.

Matemáticas discretas de diferentes tipos. Más específicamente:

  1. Tecnologías lógicas y de prueba, como la inducción matemática o la prueba por contrapositivo.
  2. Gráficos de todo tipo.
  3. Teoría de conjuntos. Conceptos básicos, no es necesario distinguir la cardinalidad de conjuntos infinitos o aprender ZFC. Principio de inclusión-exclusión, por ejemplo.
  4. Combinadores Coeficientes binomiales, diferentes trucos sobre el cálculo de la cantidad de algo (se pueden usar trucos similares en la programación para hacer que el problema sea más fácil de resolver): todos son muy útiles.
  5. Análisis asintótico – nuevamente, conceptos básicos. Por ejemplo, recordar que la suma de series armónicas es un logaritmo es muy útil (por ejemplo, en el ingenuo tamiz Eratóstenes)
  6. Teoría de la probabilidad: útil en los problemas correspondientes o cuando intentas inventar un algoritmo aleatorio. También es un buen ejercicio para tu cerebro.
  7. Teoría de números: a veces es útil en problemas correspondientes. No es muy útil fuera de los problemas de teoría de números.

Las matemáticas ‘continuas’ (como cálculo, no un término oficial) no son muy útiles en la programación competitiva, excepto en competencias universitarias (como ACM ICPC) donde accidentalmente puedes encontrar un problema en el que necesitas calcular algún valor geométrico extraño al integrarte. Sin embargo, personalmente lo disfruto mucho y siento que también es bueno para el cerebro. Por cierto, algunas ideas del cálculo también se pueden aplicar a casos discretos o puede ayudarlo a “adivinar” una respuesta (por ejemplo, no conoce un problema discreto, pero conoce un problema continuo similar).

No conozco muchos cursos, pero hay un curso sobre matemáticas para ciencias de la computación que realmente mejoró mi mente.

  • Matemáticas para la informática

La sección de teoría de números no fue muy interesante para mí en este curso, así que la aprendí de varias fuentes increíbles:

  • Teoría de números y aritmética modular
  • Teoría de los números – 1 – Prateek Garg
  • Teoría de los números – II – Tanmay Chaudhari
  • Teoría de los números – III – Boris Sokolov

La mayoría de las veces, los videos de YouTube sobre temas particulares como algo de euclides, inversa modular, teorema del resto chino son los más útiles para mí.

Mi respuesta no es exactamente útil, ya que solo daré algunas partes de lo que necesita.

Primero, necesitas obtener aritmética básica y álgebra (precalc). La geometría sería buena aquí, incluida la geometría analítica básica. Luego el cálculo y el resto de la geometría analítica. Luego puedes tomar un poco de teoría de grupo (álgebra más avanzada). Ah, y lo olvidé por el camino: trigonometría.

La trigonometría, el cálculo y la teoría de grupos son lo suficientemente grandes como para que no tenga exactamente el tiempo suficiente en unos pocos años para comprender todo.

Por supuesto, ahora he visto que quieres tomar lo que es útil para programar. Bueno, la teoría de grupo sigue siendo grande, y en el cálculo es posible que desee centrarse en la parte de la serie.

Para mí es matemática discreta, sin duda. La mayoría de sus conceptos pueden ser aprendidos por niños de 10 años porque no necesitan conocimientos matemáticos sólidos y son bastante naturales.
Además, la mayoría de los problemas de las competencias de programación son en realidad problemas matemáticos discretos.

Aconsejaría ir directamente y entrenar para competiciones. Esta es la forma directa de mejorar sus habilidades de pensamiento.

Mientras tanto. las matemáticas son útiles, al menos indirectamente aquí. El libro Concerete Mathematics es bueno en caso de que quiera ir por este camino.

Hay pocos temas como la aritmética modular que incluye inversa multiplicativa, exponenciación de matrices, exponenciación modular. Algunos teoremas como el pequeño teorema de Fermat, el teorema de Euler, el teorema del resto chino ayudarán. Despeja tus conceptos en permutaciones y combinaciones. Mientras resuelve problemas, tendrá una idea de qué más necesita aprender. La mejor de las suertes.

  1. Aritmética de módulo – postulados básicos [Incluyendo ecuaciones lineales modulares, fracción continua y ecuación de Pell]
  2. Teorema de Fermat, teorema de Euler Totient (función totient, orden, raíces primitivas)
  3. Teorema del resto chino
  4. Pruebas de primalidad
  5. Técnicas de primera generación – Tamiz de Erastothenes
  6. MCD utilizando el método euclidiano
  7. Exponenciación logarítmica
  8. Factorización de enteros (factorización de Pollard Rho)
  9. Números de Stirling
  10. Teorema de Wilson
  11. Teorema de Lucas
    • Probabilidad básica y probabilidad condicional
    • Variables aleatorias, funciones generadoras de probabilidad
    • Bernoulli, Binomial, Poisson, distribución normal.
    • Contando
    • Principios básicos – Principio de paloma, suma, reglas de multiplicación
    • Exclusión inclusión
    • Números de Stirling, eurleriano, armónico, bernoulli, fibonnacci
    • Técnicas avanzadas de conteo: conteo de polia, lema de burnsides

Referencias: http://www.scribd.com/doc/583614

A la respuesta del usuario de Quora, me gustaría agregar

Teoría de matrices y exponenciación de matrices.
Número de catalán
FFT
funciones generadoras
Método de tamiz

Recientemente estudié “Matemática discreta” y creo que es uno de los cursos esenciales para programadores.
En DM aprendes algo y diferentes problemas lógicos que te ayudan a lidiar con la comprensión del código complejo y también a optimizarlo.

Te puedo contar sobre un muy buen sitio web: página en erdos.sdslabs.co

Hace poco encontré este gran curso de un gran profesor en el MIT Open Course ware. Echale un vistazo.

Matemáticas para la informática