¿Cuál es la base matemática necesaria para la programación competitiva?

Si quieres ser un programador competitivo muy serio, profundizaré un poco en los detalles de todas las matemáticas que puedas necesitar para una programación competitiva.

  • Aritmética y Geometría: –
    • Enteros, operaciones (incluida la exponenciación), comparación
    • Propiedad básica de los enteros (signo, paridad, divisibilidad)
    • Aritmética modular básica (suma, resta, multiplicación, división)
    • Números primos (es un gran tema)
    • Fracciones y porcentajes
    • Línea, segmento de línea, ángulo, triángulo, rectángulo, cuadrado, círculo (y especialmente la forma de representarlos en su código)
    • Punto, vector, coordenadas en un plano
    • Polígono (vértice, lateral / borde, simple, convexo, interior, área)
    • Distancias euclidianas
    • Teorema de Pythogorean (Hay un uso bastante diverso de este teorema)
    • En algunas preguntas, es posible que necesite el pequeño teorema de Fermat, el teorema del resto chino, o que necesite usar la función de Euler, etc. Debe mejorar la teoría de números. He encontrado algunos problemas en codechef que los necesito.
    • Conocer algunas técnicas como el Algoritmo Euclidiano y la exponenciación rápida se considera un requisito previo en algunos concursos.
    • Algunas técnicas de geometría computacional como Graham Scan y casco convexo.
  • Estructuras discretas: –
    • Funciones, relaciones y conjuntos
      • Funciones (sobreyecciones, inyecciones, inversas, composición)
      • Relaciones (reflexividad, simetría, transitividad, relaciones de equivalencia, relaciones de orden total / lineal, orden lexicográfico)
      • Conjuntos (cardinalidad, inclusión / exclusión, complementos, productos cartesianos, conjuntos de potencia)
    • Lógica básica
      • Lógica de primer orden
      • Conectivos lógicos (incluidas sus propiedades básicas)
      • Tablas de verdad
      • Cuantificación universal y existencial
      • Modus ponens y Modus tollens (No se deje intimidar por los nombres: P)
    • Técnicas de prueba (no las necesita demasiado rigurosamente)
    • Conceptos básicos de contar
      • Contar argumentos (suma y regla de producto, progresiones aritméticas y geométricas, números de Fibonacci)
      • Permutaciones y combinaciones (definiciones básicas)
      • Función factorial, coeficientes binomiales
      • Principio de inclusión-exclusión
      • Principio de casillero
      • Identidad de Pascal, teorema binomial
      • Resolviendo relaciones de recurrencia
      • Lema de Burnside
    • Gráficos y arboles
      • Árboles y sus propiedades básicas, árboles enraizados
      • Gráficos no dirigidos (grado, ruta, ciclo, conectividad, ruta / ciclo de Euler / Hamilton, lema de apretón de manos)
      • Gráficos dirigidos (en grado, fuera de grado, ruta / ciclo dirigido, ruta / ciclo de Euler / Hamilton)
      • Árboles de expansión
      • Estrategias transversales
      • Gráficos ‘decorados’ con etiquetas de borde / nodo, pesos, colores
      • Multigrafos, gráficas con auto-bucles
      • Gráficos bipartitos
      • Gráficos planos
  • Teoría de la probabilidad (Esto no está dentro del alcance del plan de estudios del IOI, por lo que no entraré en detalles. Dejaría un recurso aquí para su referencia aunque, porque soy un ángel 0 :-))
    • Tutorial de Topcoder: Comprender las probabilidades
  • Álgebra Lineal (incluyendo pero no limitado a)
    • Multiplicación matricial, exponenciación, inversión y eliminación gaussiana
    • Transformada rápida de Fourier

Aunque muchos de estos temas no se deben dominar rigurosamente, algunos son requisitos previos y los programadores competitivos deben tener el conocimiento básico de al menos la mayoría de ellos para estar entre los mejores programadores.

Espero que esto haya ayudado 😀

¡Feliz codificación!

Fuente: IOI syllabus 2015

¡Espero que encuentres esto útil!

  1. Matemáticas (probabilidad, conteo, teoría de juegos, teoría de grupos, funciones generadoras, ciclos de permutación, álgebra lineal)
  1. Probabilidad.

Silaba

  • Probabilidad básica y probabilidad condicional
  1. Problemas sugeridos
  1. SPOJ.com – Problema CT16E
  2. SPOJ.com – Problema CHICAGO
  • Variables aleatorias, funciones generadoras de probabilidad
  • Expectativa matemática + linealidad de la expectativa
    1. Problemas sugeridos
    1. SPOJ.com – Problema FAVDICE
    2. Planteamiento del problema
  1. Distribuciones especiales de probabilidad discreta y continua
    1. Bernoulli, Binomial, Poisson, distribución normal.
    2. Problema sugerido
    1. Concurso en línea de la SSU :: 498. Monedas
  2. Lecturas Sugeridas
    1. Apéndice C de Cormen (muy básico)
    2. Tutorial de probabilidad de Topcoder http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=probabilities
    3. Variable aleatoria
    4. Valor esperado
    5. William Feller, Introducción a la teoría de la probabilidad y sus aplicaciones.
    1. Contando

    Silaba

    • Principios básicos – Principio de paloma, suma, reglas de multiplicación
    1. Problemas sugeridos
      1. http://acm.timus.ru/problem.aspx
      2. Planteamiento del problema
    1. Lecturas sugeridas
      1. Principios combinatorios
      2. Página en topcoder.com
      3. Página en maa.org
      • Exclusión inclusión
      1. Lecturas sugeridas
      1. Principio de inclusión-exclusión
    2. Problemas sugeridos
      1. Planteamiento del problema
      2. Planteamiento del problema

      Numeros especiales

      1. Lectura sugerida: números de Stirling, eurleriano, armónico, bernoulli, fibonnacci
      1. Número de Stirling
      2. Número euleriano
      3. Series armónicas (matemáticas)
      4. Número de Bernoulli
      5. Número de Fibonacci
      6. Matemáticas concretas por Knuth
    3. Problemas sugeridos
        1. Planteamiento del problema
        2. Planteamiento del problema
        3. Planteamiento del problema
        4. Planteamiento del problema
      1. Técnicas avanzadas de conteo: conteo de polia, lema de burnsides
        1. Lectura sugerida
        1. Lema de Burnside
        2. Algorithms Weekly por Petr Mitrichev
      2. Problemas sugeridos
        1. Planteamiento del problema
        2. SPOJ.com – Problema TRANSP

        do. Teoría de juego
        Silaba

        • Principios básicos y juego de Nim
        1. Teorema de Sprague Grundy, números Grundy
        2. Lecturas sugeridas
        1. Teorema de Sprague-Grundy
        2. Juegos de algoritmos – topcoder
        3. Columna de funciones del AMS
        4. Página en codechef.com
      3. Problemas sugeridos
        1. Planteamiento del problema
        2. Planteamiento del problema

        Hackenbush

        1. Lecturas sugeridas
        1. Hackenbush
        2. Columna de funciones del AMS
      4. Problemas sugeridos
        1. Computación + Ciencias Matemáticas
        2. SPOJ.com – Problema PT07A

        re. Álgebra lineal
        Silaba

        • Operaciones matriciales
        1. Suma y resta de matrices
        1. Lectura sugerida
        1. Cormen 28.1
      5. Multiplicación (algoritmo de Strassen), exponenciación logarítmica
        1. Lectura sugerida
        1. Cormen 28.2
        2. Álgebra Lineal por Kenneth Hoffman Sección 1.6
      6. Problemas
        1. Concurso de novatos 2006
      7. Transformaciones de matriz [Transposición, rotación de matriz, representación de transformaciones lineales utilizando matriz]
        1. Lectura sugerida
        1. Álgebra lineal por Kenneth Hoffman Sección 3.1,3.2,3.4,3.7
      8. Problemas
        1. Planteamiento del problema
        2. JPIX en Spoj
      9. Determinante, rango e inverso de la matriz [Eliminación de Gaussean, Eliminación de Gauss Jordan]
        1. Lectura sugerida
        1. 28.4 Cormen
        2. Álgebra Lineal por Kenneth Capítulo 1
      10. Problemas
        1. Planteamiento del problema
        2. Planteamiento del problema
        3. Planteamiento del problema
        4. ALTO en Spoj
      11. Sistema de resolución de ecuaciones lineales.
        1. Lectura sugerida
        1. 28.3 Cormen
        2. Álgebra Lineal por Kenneth Capítulo 1
      12. Problemas –
        1. Planteamiento del problema
      13. Usando la exponenciación de matrices para resolver recurrencias
        1. Lectura sugerida
        1. Artículos destacados de TopCoder
      14. Problemas
        1. REC, CONEJO1, PLHOP en spoj
        2. Declaración del problema, Declaración del problema, Declaración del problema
      15. Valores propios y vectores propios
        1. Problemas
        1. Planteamiento del problema

        Polinomios

        1. Raíces de un polinomio [Factorización prima de un polinomio, raíces enteras de un polinomio, todas las raíces reales de un polinomio]
        1. Problemas
        1. Planteamiento del problema
        2. POLYEQ, ROOTCIPH en Spoj
      16. Interpolación de Lagrange
        1. Problemas
        1. Planteamiento del problema
        2. Planteamiento del problema

        mi. Ciclos de permutación

        • Lectura sugerida
        1. Art of Computer Programming por Knuth vol. 3

        Problemas

        1. ShuffleMethod, Permutation y WordGame en topcoder.

        F. Teoría de grupo

          • Lema de Bernside, teorema de Polias
          1. Lectura sugerida
          1. Los temas de Hernstein en álgebra
          2. Algorithms Weekly por Petr Mitrichev
        • Problemas
          1. TRANSP en spoj
          2. Planteamiento del problema

          Generando funciones

          • Lectura sugerida
          1. Funcionalidad generadora de Herbert Wilf
          2. Análisis combinatorio de Robert Sedgewick y Flajoulet

          Fuente: Programa de campamento de programación

          Según yo, los siguientes son los conceptos básicos que uno necesita aclarar en matemáticas antes de codificar …

          Aritmética: los programadores deben saber cómo se representan internamente los números enteros y los números reales y deben poder codificar números de alta precisión. Los trucos de manipulación de bits y conocer las funciones de la biblioteca para la aritmética básica de números serían muy útiles.

          Teoría de los números: conocer algunos de estos conceptos ahorraría mucho tiempo y esfuerzos al programar en los concursos.

          Exponenciación modular

          Inverso multiplicativo modular

          Prueba de primalidad | Set 2 (Método Fermat)

          Función totiente de Euler

          Tamiz de Eratóstenes

          Casco convexo

          Algoritmos euclidianos básicos y extendidos

          Tamiz segmentado

          Teorema del resto chino

          Teorema de Lucas

          Combinatoria: aunque directamente no parezca importante, la Combinatoria es importante para estimar la complejidad asintótica de los algoritmos.

          Análisis de algoritmos

          Teoría del juego combinatorio | Conjunto 1 (Introducción)

          Algoritmos Geometricos

          Casco convexo

          Graham Scan

          Intersección de línea

          Matriz de exponenciación y esto

          Construcción en línea de casco convexo tridimensional

          Algoritmo de Bentley Ottmann para enumerar todos los puntos de intersección de n segmentos de línea

          Técnica de pinzas giratorias

          Área / perímetro de unión de rectángulos

          Par de puntos más cercanos

          Área de Unión de Círculos

          Delaunay Triangulación de n puntos

          Diagramas de Voronoi de n puntos usando el algoritmo de Fortune

          Punto en un problema de polígono

          Algoritmos de flujo de red

          Implementación de Maxflow Ford Furkerson Algo y Edmond Karp

          Corte mínimo

          Problema de matrimonio estable

          Flujo máximo utilizando el algoritmo de Dinic

          Problema de flujo de costo mínimo

          Algoritmo de camino más corto sucesivo

          Algoritmo de cancelación de ciclo

          Coincidencia bipartita ponderada máxima (algoritmo Kuhn Munkres / Método húngaro)

          Wiki de Algoritmo Húngaro

          Algoritmo húngaro para el problema de asignación

          Máxima coincidencia bipartita

          Algoritmo de corte mínimo de Stoer Wagner

          Máxima coincidencia en el gráfico general (Blossom Shrinking)

          Árboles Gomory-Hu

          Problema del cartero chino (vea esto también)

          Algoritmo Hopcroft-Karp para la máxima coincidencia

          Todos los artículos sobre algoritmos geométricos

          Matemática discreta principalmente

          1.Matemáticas discretas y lógicas
          2. Teoría de los números
          3.Teoría del gráfico
          4.Estructuras matemáticas
          5.Teoría de la probabilidad

          Primero haz esto
          Matemáticas para la informática por MIT OpenCourse Ware

          Matemáticas para la informática

          Esto cubrirá todas las matemáticas necesarias para la programación como teoría de gráficos, sistema numérico, etc.

          Entonces comience a aprender algoritmos

          Buena suerte 🙂

          La mayoría de las respuestas ya han esbozado lo que necesita. Dejaré este sitio web aquí, Acerca de – Proyecto Euler

          Soy bastante débil cuando se trata de resolver problemas matemáticos (es decir, problemas que son completamente matemáticos y no de naturaleza algorítmica). En mi opinión, resolver los problemas del Proyecto Euler le da la mejor idea de qué tipo de problemas se pueden formar en base a las matemáticas. He intentado hacer 1 o 2 preguntas al día desde hace poco menos de una semana, y puedo decir que he mejorado desde entonces. Aprendes algo después de cada problema.

          También hay un concurso en HackerRank para lo mismo.

          Como Arun Prasad ha respondido a todos los temas.

          Matemática discreta incluye principalmente

          1. Matemáticas y Lógicas Discretas
          2. Teoría de los números
          3. Teoría de grafos
          4. Estructuras matemáticas
          5. Teoría de la probabilidad
          6. Combinatoria
          7. Escribir pruebas simples

          Si eres un ávido lector, este es el libro adecuado para ti. El libro es breve en comparación con otros y con buenos ejemplos que son precisos.

          Estaba luchando como novato, pero después de comenzar a leer este libro, me siento mucho mejor para resolver los problemas discretos de matemáticas.

          Por último, intente completar todos los ejercicios y conjuntos de problemas que figuran en este libro.

          Lógica y matemática discreta: una introducción concisa

          More Interesting

          ¿Hay una manera eficiente de comparar la similitud de una cadena con cada permutación de otra cadena (es decir, un grupo simétrico)?

          Estoy interesado en algoritmos. Planeo hacer una maestría en informática teórica en una de las 20 mejores universidades. ¿Cuán significativamente ayudará a hacerme digno de la industria?

          ¿P = NP sería algo bueno?

          ¿Qué piensan los informáticos teóricos de la hipótesis del universo matemático de Max Tegmark?

          ¿Cuál es el algoritmo más rápido para encontrar el número más grande en una matriz sin clasificar con múltiples procesadores?

          Dada una matriz que contiene elementos [matemática] N [/ matemática] y consultas [matemática] Q [/ matemática], cada consulta contiene 3 enteros [matemática] L [/ matemática], [matemática] R [/ matemática] y [matemática ] K [/ matemáticas]. Para cada uno, informe la suma de cada elemento [math] K ^ {th} [/ math] entre [math] L [/ math] y [math] R [/ math] (a partir de [math] L [/ math] )

          ¿Qué es la combinatoria en matemáticas discretas?

          ¿Qué área de programación de juegos está más matemáticamente involucrada y es adecuada para una especialización en matemáticas?

          ¿Cuál es la diferencia entre algoritmo no determinista y aproximado?

          ¿Por qué se acepta la tesis de Church-Turing? Tengo problemas para concebir un programa para una máquina de Turing que sume dos números arbitrariamente grandes.

          ¿Cómo nos ayuda la informática a comprender mejor el universo?

          Dada una matriz que consta de N enteros, ¿puedes encontrar el valor máximo de xor de dos números en una matriz (ai xor aj)?

          ¿Por qué diferenciamos entre máquinas Turing universales y máquinas Turing normales?

          ¿Qué es mejor, una licenciatura con honores conjuntos en matemáticas / CS o matemáticas / física?

          ¿Qué tan importante es el nuevo generador de números aleatorios PCG?