¿Qué temas (en matemáticas y TCS) debe sobresalir un estudiante de matemáticas para seguir la teoría de la complejidad computacional?

Hay una respuesta más específica a esta pregunta que se centra en aquellos que tienen una comprensión más general de la informática teórica y quieren hacer un proyecto antes de ir a la escuela de posgrado. Y luego está el estudiante más principiante que está interesado en CS teórico, pero realmente no puede distinguirlo de otras áreas de CS.

Para el segundo estudiante (y realmente cualquier estudiante interesado en CS), recomendaría las mismas cosas que Teodoro Filippini. Hay algunas áreas matemáticas que deberían estar allí, como la teoría de conjuntos y las matemáticas discretas. Hay algunas cosas básicas en la lógica , hay conceptos algorítmicos básicos como algoritmos codiciosos , programación dinámica y recursividad.

Sin embargo, para el primer tipo de estudiante, recomendaría estudiar una o más de estas áreas con mayor detalle. Una vez que descubrí que quería estudiar CS teórico, caí en picada (¿es esa la metáfora que quiero usar?) En algoritmos. Primero, comencé a jugar con los algoritmos básicos para problemas en P, viendo cuán bien los entendía. ¿Cómo trabajan? ¿Por qué trabajan ellos? ¿Qué problema (s) resuelven? ¿Qué problema (s) no resuelven? ¿Cuáles son sus limitaciones? ¿Cómo los implementaría? ¿Hay alguna ventaja de ciertas estructuras de datos o representaciones? Entiendes la esencia.

También había tomado una clase de CS teórica en este momento y había visto una introducción a NP-Completeness. Si bien no leí los documentos de Cook o Karp en la universidad, no creo que estén fuera del ámbito de la universidad.

Hay tres libros que recomiendo encarecidamente. Los dos primeros son bien conocidos y los he visto en la mayoría de las listas de lectura para el tema, Computadoras e Intractabilidad: una guía para la teoría de la integridad de NP y elementos de la teoría de la computación . Esos son los dos libros que tuve en la universidad y creo que están bien escritos e introducen los conceptos de P, NP, NP-Completeness, Turing Machines , etc. a un buen nivel.

El tercer libro que recomendaría es otro libro que utilicé, pero este fue para la escuela de posgrado. Sus algoritmos de aproximación: Vijay V. Vazirani . Este libro puede ser un poco más avanzado para un estudiante universitario (y tal vez algo así como Optimización combinatoria: algoritmos y complejidad Es un mejor enfoque). El razonamiento detrás de este (estos) libro (s) es que llegas a un punto de “ahora qué” con NP-Completeness. Si tiene un problema que ha demostrado ser NP-Complete, debe hacer algo. Los algoritmos de aproximación son un área que puede ser un poco compleja de comprender por completo para un estudiante universitario, pero pueden ser interesantes conceptos como los algoritmos de aproximación para Vertex Cover & Set Cover , esquemas de aproximación de tiempo polinomial . Esta área también (probablemente) le presentará la programación lineal (y la programación de enteros ) y el método simplex , que es un algoritmo eficiente para resolver problemas de programación lineal.

Dado que la Programación de enteros (IP) es NP-Complete, todos los problemas en NP se pueden representar como IP. Luego, la programación lineal (relajación LP) para estas IP (en lugar de exigir valores enteros para nuestras variables, permitimos números reales) se convierten en los primeros enfoques para muchos de estos problemas. Luego aprendemos sobre los teoremas de dualidad fuertes y débiles que dicen que la relajación primaria y dual de la relajación LP de un IP da límites a la solución óptima. Esto dice que también se debe investigar sobre representaciones eficientes de problemas de programación de enteros en lugar de solo algoritmos.

Esa es una rama para bajar. También hay otras técnicas en las que puede buscar obtener comprensión: búsqueda local , búsqueda tabú , programación genética , optimización de red , matrices totalmente unimodulares , teoría matroide , aprendizaje automático , etc.

Espero que esto ayude.

Parece que has hecho un buen comienzo. Creo que el área más importante de las matemáticas para saber en TCS es: “La que nadie más en TCS conoce”.

Dicho esto, hay algunos conceptos básicos que surgen sin importar dónde termines. Definitivamente, debe conocer alguna probabilidad básica (la probabilidad discreta tiende a usarse más), combinatoria, álgebra y álgebra lineal. Después de eso, aprende lo que te interesa.

La parte superior de mi cabeza:

  1. Teoría de conjuntos (no es tan trivial como parece, y es fundamental comprender las clases de complejidad y el conocimiento actual sobre ellas);
  2. Álgebra booleana (es la base de toda la lógica y la informática después de todo);
  3. Algoritmos y estructuras de datos;
  4. Autómatas y equivalencia o superioridad de expresividad entre ellos;
  5. Matemáticas discretas en general.

De todos modos, no debes preocuparte demasiado: si ya te has dado algunos conocimientos básicos sobre la teoría de la complejidad, ¡lo más probable es que las primeras conferencias y las sugerencias del profesor sean suficientes para continuar y estudiar este maravilloso tema! ¡Que te diviertas!

More Interesting

Dado un número X, encuentre el siguiente número con el mismo número de 1 bits en su representación binaria. Para la entrada x = 12, ¿la salida sería 17?

¿Existe un número distinto de cero para el cual su representación doble y larga es equivalente en bits?

¿Es la informática teórica una subdisciplina de la lógica matemática? ¿Cuál es la diferencia entre los dos? ¿Dónde se cruzan?

Si g (x) es una función unidireccional débil, ¿es f (x) = x (exclusivo o) g (x) una función unidireccional? Si es así, ¿puede ser fuerte?

¿Puedo usar una función hash para ordenar registros de manera aleatoria pero consistente?

¿Luchar con problemas en la programación mejora la capacidad de pensamiento del cerebro?

¿Qué habilidades matemáticas te ayudarán a prepararte para obtener un título en ciencias de la computación?

Yoshua Bengio: ¿Qué habilidades son más importantes para ser un investigador de Machine Learning, matemática o informática?

¿Cuál es la diferencia entre la simulación de Monte Carlo y la simulación estocástica?

Si quiero estar en análisis predictivo y no soy experto en matemáticas ni en programación, ¿cuál debo comenzar a perfeccionar primero y por qué?

Las calificaciones en una prueba intermedia se distribuyen normalmente con una media de 69 y una desviación estándar de 10. ¿Cuál es la probabilidad de que una clase de 27 tenga un promedio menor de 67 (3 lugares decimales)? ¿Cómo hago esto?

¿Qué son las matemáticas discretas?

¿Qué problemas originalmente se pensaban que solo podían resolverse con una computadora pero luego tenían una prueba de papel y lápiz?

Cómo demostrar que EQTM = {: L (M1) = L (M2)} es indecidible (suponga que M1 y M2 son codificaciones de TM)

¿Es importante entender cómo se derivan los teoremas específicos, o es suficiente entender solo cómo usarlos?