¿Cómo se usan las matemáticas en la informática?

A2A.

Las matemáticas que se usan en Ciencias de la Computación generalmente se relacionan con un conjunto limitado de temas. Pero como dicen, las generalizaciones siempre son malas, dividiré el análisis en 2 áreas cruciales y específicas de la Informática.

Diseño y análisis de algoritmos : esta área tiene su base completa como Matemáticas. Los algoritmos se pueden utilizar en cualquier lugar, en cualquier campo para resolver los problemas más complejos y, por lo tanto, verá el uso de diferentes áreas de Matemáticas, desde el álgebra básica hasta el cálculo, desde la inducción hasta las transformadas de Fourier y desde la trigonometría hasta la geometría avanzada, para resolver estos problemas. El área es lo suficientemente amplia como para ser explorada y la mayoría de las Matemáticas utilizadas en Ciencias de la Computación se limitan a ella.

Programación / codificación : las matemáticas utilizadas aquí son limitadas. Básicamente, cuando haya terminado con el diseño de algoritmos (si al principio era necesario), no tiene más que transformar la lógica algorítmica en lógica de programación que no requiere casi ningún uso de Matemáticas. Para la mayoría de los informáticos, el diseño de algoritmos es muy limitado antes de codificar las cosas. Esto puede ser debido a la naturaleza trivial del trabajo o por el principio de reutilizar el código / ideas / algoritmos. Y así, el uso de las Matemáticas se limita a ellos, en ambas dimensiones posibles.

Ahora volviendo a la pregunta real, realmente no necesita profundizar en Matemáticas (considerando que no es entusiasta de las Matemáticas y no planea tomar Matemáticas para estudios adicionales) pero no lo tome a la ligera por otro lado. Nunca se sabe lo que podría ganar con un conocimiento adicional en un área que está vinculada a casi todo a su alrededor, no solo a Informática. Y como dice Rishul, Matemáticas será el único tema interesante en los semestres iniciales, ¡así que disfrútalo! 🙂

Análisis algorítmico

Utiliza la combinatoria y las relaciones de recurrencia.

Una gran parte de la ciencia de la computación implica tratar de comprender cuán eficientes son los algoritmos para realizar tareas específicas. Desea una manera de poder considerar si un algoritmo es más rápido o menos intensivo en recursos que otro; de esta manera, puede diseñar programas que realicen la misma tarea con menos recursos. Esto es necesario si desea poder escalar sus aplicaciones para manejar grandes entradas.

Para hacer esto, los científicos informáticos han inventado una serie de notaciones y trucos para clasificar el rendimiento de los algoritmos. La idea es bastante sencilla:

  • la complejidad del tiempo (la cantidad de tiempo que toma) de un algoritmo es aproximadamente igual al número de operaciones que realiza en una entrada determinada. Digamos que quieres poder ordenar una lista de números [math] n [/ math]. Si el paso más caro en este proceso utiliza las operaciones [math] n ^ {2} [/ math], entonces usted dice que la complejidad del tiempo es del orden de las operaciones [math] n ^ {2} [/ math], denotadas como [math] O (n ^ {2}) [/ math]. Derivar la complejidad del tiempo implica una gran cantidad de matemáticas, en particular la combinatoria y las relaciones de recurrencia.
  • la complejidad del espacio (la cantidad de espacio que ocupa) de un algoritmo es aproximadamente la cantidad de recursos adicionales que necesita para poder manejar la entrada. Nuevamente, tomemos una lista de números [math] n [/ math]. Si terminas creando listas adicionales de [math] n [/ math], cada una con un personaje, entonces tienes una complejidad de espacio de [math] O (n) [/ math].

La complejidad temporal de los algoritmos a veces no es muy intuitiva. La exponenciación mediante el algoritmo de cuadratura puede tomar el tiempo de [math] O (log (n)) [/ math], por ejemplo. Aquí hay una derivación de la complejidad temporal de la ordenación de fusión utilizando series infinitas y relaciones de recurrencia.

Esquemas de compresión de datos

Usa probabilidad y estadísticas – mucho.

Una gran cantidad de algoritmos por sí mismos explotan las matemáticas avanzadas. La probabilidad es una de las favoritas de siempre.

Los esquemas de compresión de datos se utilizan para comprimir archivos mediante la explotación de patrones en los datos. Por ejemplo, en lugar de escribir ‘aaaaa’, una computadora podría simplemente marcar esa región en la memoria como 5a, lo que indica que esta sección tiene cinco a, lo que reduce la cantidad de caracteres necesarios para expresar eso de 5 a solo 2.

Sin embargo, a veces no es muy fácil discernir patrones que pueden ser explotados. Ahí es donde entra la probabilidad. Esquemas como la combinación de contextos intentan predecir la siguiente región en la memoria de todas las piezas anteriores, lo que potencialmente ahorra muchos gastos generales.

Visión por Computador, Gráficos y Procesamiento de Imágenes.

Utiliza álgebra lineal (y ocasionalmente cálculo)

Si alguna vez has jugado a un videojuego o has visto una animación, realmente estás viendo una de las hazañas matemáticas más monumentales de la informática. Casi todo en gráficos de computadora se puede describir como una transformación : tomas un vector y le aplicas una serie de matrices para obtener un nuevo vector. El vector es la unidad fundamental de los gráficos, una buena analogía es una línea recta. Encadenarlos juntos te permite construir gráficos realmente interesantes.

La visión de computadora se ocupa de que las computadoras entiendan lo que significan las imágenes. En realidad, las imágenes no son más que valores RGB codificados en una matriz, por lo que, cuando vemos una obra de arte pintoresca, la computadora solo ve un área gigante de números. Si alguna vez aplicó un filtro en Instagram, realmente ha estado haciendo algunas notables multiplicaciones de matrices avanzadas.

¿Qué pueden hacer los algoritmos de desenfoque gaussiano con un poco de matemáticas?

Muchos motores de juegos hacen uso de la física también para calcular cosas como la dispersión de la luz en juegos en 3D. Por experiencia, puedo decirles que estas son integrales realmente complicadas y feas, y la mayoría de las computadoras usan algoritmos numéricos (como los métodos de diferencias finitas) para resolverlos.

Estructuras de datos

Usa la teoria grafica

Este es un árbol de búsqueda binario, un ejemplo de un árbol binario y una estructura de datos.


Las estructuras de datos son abstracciones que le permiten manipular cómo se almacenan y se accede a los objetos. Una gran cantidad de estructuras de datos realmente interesantes, todas muy útiles, porque algunos de ellos pueden reducir los algoritmos complejos de [math] O (n ^ {2}) [/ math] a solo [math] O (1) [/ math] ( tiempo constante ) algoritmos – son gráficos.

Creo que no es un error decir que la teoría de grafos es lo único que terminas aprendiendo si estás en ciencias de la computación. Puedes usarlo para diseñar motores de ajedrez, por ejemplo, o construir Google Maps. La teoría de gráficos a menudo se ocupa de encontrar rutas (formas de pasar de un nodo a otro) a través de un gráfico; si puede modelar su problema como un gráfico, puede aplicar soluciones de la teoría de gráficos en la mayoría de los casos.

Las estructuras de datos generalmente se agrupan con algoritmos en la mayoría de los cursos de CS.

Criptografía

Utiliza la teoría de los números.

La criptografía hace uso de muchas técnicas para hacer exactamente dos cosas:

  • Realizando operaciones de números en diferentes bases.
  • Factorizar enteros grandes, que requieren muchos trucos de aritmética modular

No todo esto implica matemáticas avanzadas: los Crypto Challenges de Matasano tienen el famoso orgullo de que todos se pueden resolver con matemáticas muy elementales. Pero requiere que entres en la mente de un teórico numérico.

La Ingeniería de Software / Programación normalmente no requiere mucho de ti en un sentido matemático, aunque tener buenas habilidades matemáticas te ayudará.

La informática requiere de usted habilidades matemáticas. Es una parte importante de muchos temas como Inteligencia Artificial, Algoritmos, Estructuras de Datos, Aprendizaje Automático, Complejidad Computacional, Arquitectura de la Máquina, etc.

La pregunta más importante que debe hacerse es “¿Estoy dispuesto a luchar con ____ para hacerme un mejor informático o programador?” Si le preocupa que su conjunto de habilidades no sea suficiente y no cree que pueda mantenerse al día, ¡puede desarrollar estas habilidades matemáticas a medida que avanza! Si está tratando de ver si puede “alejarse” sin tener que aprender más, esa actitud no lo llevará muy lejos en programación o ciencias de la computación, ya que este es un campo que a menudo se innova (y algunas veces se reinventa). Los lenguajes de programación y los paradigmas pueden subir y bajar, pero las habilidades de resolución de problemas siempre serán necesarias en ciencias de la computación.

La informática no es en realidad una ciencia. Es mucho más una disciplina de ingeniería. Como tal, utiliza las matemáticas en todo el lugar. La complejidad computacional es toda matemática. Algoritmos y estructuras de datos son todas matemáticas aplicadas. Los geeks de redes utilizan la teoría de los gráficos a diario. Y aquellos que están haciendo ingeniería seria en computación real necesitan Análisis Numérico.

Respuesta fácil, depende.

Si eres alguien como yo, literalmente hago Matemáticas todo el día en mi investigación. No hay línea que cruzar porque para alguien como yo, no hay línea. La ciencia informática es la mayor parte del tiempo considerada como un subcampo de matemáticas con algunos aspectos muy aplicados que están muy alejados de la ciencia y muchos más son ingeniería (me atengo al lado más “científico” de las cosas, ya que hago trabajo formal todo el tiempo ( y si necesito hacer un experimento de computadora, lo haré cuando sea apropiado)).

Creo que las otras respuestas han hecho un trabajo decente (especialmente la respuesta de los usuarios de Quora a ¿Cómo se usan las matemáticas en ciencias de la computación?), Pero quería reconocer que para muchos puristas en el campo, no hay una línea. Algunos investigadores pueden simplemente trabajar en el diseño de algoritmos y probar teoremas, es una línea de investigación muy tradicional en Informática.

En la mayoría de los dominios de ingeniería de software nunca necesitarás las matemáticas más allá de lo que aprendiste en el álgebra de la escuela secundaria.

Pero la ingeniería de software es solo un aspecto de la informática. En los sistemas, empiezas a hacer preguntas como “Teniendo en cuenta algunas suposiciones simplificadoras, ¿qué tan rápido no puede ejecutar este programa, sino a cualquier programa que le guste de forma remota?”. En los algoritmos, usted pregunta: “¿Qué tan rápido puede funcionar esto no solo en la máquina que tengo hoy, sino en cualquier máquina concebible?” Y en la informática teórica dejas el concepto de máquina completamente atrás.

En cada uno de esos ejemplos, está dando el salto de pensar en una aplicación particular que se ejecuta en la caja que está frente a usted en un conjunto mucho más amplio de aplicaciones, algoritmos y cuadros. Hacer ese salto requiere herramientas matemáticas.

De lo que sea que estudies en Matemáticas en los primeros tres semestres, nada es particularmente importante con respecto a la programación algorítmica.

Según mi conocimiento, la materia de Matemáticas Discretas en el quinto semestre es más importante y se relaciona con los algoritmos más que las matemáticas avanzadas que se enseñarán hasta el segundo año.

Eso no significa que no sea importante. Básicamente, nunca te encontrarás usando Cálculo vectorial o Números complejos en tu vida con la frecuencia con que uses Combinatoria y Teoría de números. Es solo para inculcar la lógica que están incluidos en el programa de estudios.

De hecho, probablemente, Matemáticas es el único tema que te gustará hasta el segundo semestre. ¡Así que relájate, siéntate y disfruta de las matemáticas porque así es como debe ser!

Para agregar un ejemplo más a la bonita lista que reunió Akshat Mahajan:

Sistemas de base de datos

Utiliza la teoría de conjuntos y la lógica matemática.

En el núcleo de los sistemas de bases de datos relacionales se encuentra un formalismo denominado álgebra relacional , en el que vemos una relación (tabla de datos) como un conjunto de n- muestras (filas). Las operaciones en el álgebra se toman directamente de la teoría de conjuntos (unión, intersección, producto cruzado) o se definen fácilmente en él (subconjunto de filas o columnas, combinando dos relaciones o combinación). El uso de la teoría de conjuntos nos permite probar las propiedades de los operadores (por ejemplo, unir distribuciones sobre la unión) que nos permiten reordenarlos para obtener planes más eficientes para evaluar expresiones sobre el álgebra. Estas propiedades son la base de los optimizadores de consultas relacionales.

La lógica matemática aparece en la imagen como la base de los lenguajes de consulta de bases de datos, como SQL y Datalog. Conceptualmente, una consulta es una fórmula lógica que se evalúa sobre un modelo (la base de datos). La ventaja de este punto de vista es que alguien que escribe una consulta solo tiene que concentrarse en lo que se quiere en la respuesta de la consulta, sin preocuparse (demasiado) por la forma en que se obtendrá esa respuesta. El cómo se deja al procesador de consultas, que convierte la consulta en álgebra relacional, que luego puede optimizarse y ejecutarse.

Porque sin las matemáticas, se llamaría “fe informática”, no “informática”.

Con matemáticas: “Puedo probar que el montón binario funciona, que un árbol binario es más rápido para buscar que una búsqueda lineal en una gran variedad, puedo probar que los hackers nunca pueden obtener control sobre el sistema operativo u otros usuarios”

Sin matemáticas: “Los montones binarios parecen demasiado complicados, no tengo fe en ellos. Los árboles binarios parecen demasiado complicados, y parece que hay muchos accesos adicionales, no tengo fe en ellos. Confío plenamente en que los piratas informáticos nunca podrán obtener control sobre … oops, sucedió de nuevo, pero esta vez seguro … oops, instala la tercera actualización de seguridad esta semana, pero quizás ahora … oops ”

Lo mismo con la arquitectura. Antes de matemáticas: “déjame intentar construirlo así … Ups, la catedral se derrumbó y mató a todos los que estaban dentro”.

Después de las matemáticas: “Tome la velocidad máxima del viento, tome el peso del edificio, tome los materiales de construcción, calcule el empuje hacia los lados y hacia abajo, y … sí, el edificio no se derrumbará”.

¿Cuándo fue la última vez que tuvo un edificio simplemente colapsado de la nada? Gracias matematicas


Básicamente , uno de los objetivos más importantes de la CS es resolver problemas y hacer grandes soluciones para la vida de las humanidades y ese objetivo de alguna manera se comparte con las matemáticas.
Cualquier problema necesita un algoritmo (forma) para resolverse bien y una herramienta utiliza este algoritmo para resolver el problema
Diseñamos la mayor parte de los algoritmos usando matemáticas y hacemos que nuestro software lo use para resolver los problemas

Este es un excelente troll Lo tiene todo, el miedo a aprender, un tema generalmente candente (informática). Guau.

Las computadoras trabajan con números. Hay básicamente dos cosas que puedes hacer con un número: copiarlo de un lugar a otro, o hacer cálculos matemáticos en él. Solo hay tanto que puedes lograr mover números de un lugar a otro. Para el resto, las matemáticas son un poco importantes, ¿no crees?

Las matemáticas son importantes para la informática por varias razones básicas:

1) La máquina de estado que permite que la computadora funcione está gobernada (en su mayoría) por adición. Sin ella, una propiedad matemática básica que nos permite hacer la transición de un estado a otro de una manera predecible, nos costaría mucho implementar y representar con precisión una máquina de estado capaz de hacer cualquier cosa realmente.

2) Todo lo que tenga que ver con las computadoras que, en última instancia, surgen como un movimiento del mouse o gráficos en una pantalla, en última instancia, se controlan con números de esencia, teorías matemáticas y funciones.

Esas son las dos razones más fundamentales por las que las matemáticas son importantes para la informática. Esto no significa que deba comprender las matemáticas detrás de su monitor trabajando para usar las propiedades fundamentales de su monitor y una biblioteca de gráficos. Sin embargo, ayuda mucho y es necesario si vas a hacer un monitor o una biblioteca de gráficos (o algo sustancial que se considere más cercano al metal que a una aplicación).

La informática se clasifica en dos partes:

1) Software : esta parte involucra programación, trabajo con códigos y lenguajes de programación. Al programar, debe ser bueno con las matemáticas para implementar algoritmos complicados y poder encontrar soluciones a problemas matemáticamente.

2) Hardware : esto implica trabajar con el dispositivo en sí, como la unidad de control, la unidad de lógica aritmética, etc. Al aprender sobre estas estructuras y tratar de diseñarlas, no solo necesita usar matemática booleana sino también principios de ingeniería de electrónica y diseño de circuitos. y esto requiere el uso de las matemáticas para varios cálculos.

La informática es la matemática. Por un poco menos de la mitad de la historia de la informática, las únicas personas que fueron parte del campo fueron los matemáticos. Por supuesto, puede terminar usando otros campos de las matemáticas como el álgebra lineal, pero la informática, al menos en lo que respecta a los algoritmos, es, en sí misma, su propio campo de las matemáticas.

Las matemáticas son una materia importante que deben cubrir los estudiantes de ciencias de la computación.

El objetivo principal del diseño de soluciones de programación es dar un algoritmo eficiente. Algoritmo eficiente aquí significa tener una mejor complejidad de tiempo. Un algoritmo eficiente puede reducir la complejidad del tiempo muchas veces más que usar una computadora más rápida.

Para tener un mejor conocimiento de la complejidad (tiempo y espacio) de sus algoritmos, necesitará algunas herramientas matemáticas. Y no necesitas saber todos los problemas y pruebas de matemáticas. Sólo algunas matemáticas básicas y elementales harán.

Algunas de las herramientas que usted muestra saben.
1 + 2 + 3 + 4 + ⋯
Probabilidad
Gran notación o
Inverso multiplicativo modular
Permutación

Estas son algunas de las matemáticas básicas que debe conocer para diseñar algoritmos eficientes. Aparte de estos, si desea ingresar al campo de Big Data, debe conocer algunos modelos estadísticos que implican más matemáticas.

Estudio adicional: Análisis de algoritmos.

La informática utiliza como una herramienta básica los lenguajes de programación, y se utilizan para comunicarse con las máquinas. Las matemáticas son el lenguaje del Universo y en los últimos tiempos usamos la informática para entender el Universo. Aquí está mi opinión a su pregunta.

Depende de qué parte de la informática estés viendo.

Gran parte de la ciencia de la computación teórica es matemática, a diferencia de una cosa separada que simplemente utiliza la matemática, en lugar de estudiar espacios de Hilbert o poleas (solo para dar algunos ejemplos arbitrarios, no lea mucho sobre ellos), etc. estudio de autómatas, variedades de idiomas, álgebra sobre monoides, clases de complejidad, circuitos booleanos, semántica de programas, lógica de primer orden, etc. (de nuevo, solo algunos ejemplos probablemente sesgados).

Por supuesto, hay otros aspectos de la informática que se ven en otras respuestas.

En primer lugar, las matemáticas nos ayudan a desarrollar nuestro razonamiento. En programación, una buena habilidad para poseer es la capacidad de resolver las cosas dentro de los recursos disponibles.

En matemáticas, aprendemos a “segmentar” las cosas (por ejemplo, qué cosas se deben resolver primero y luego qué). En programación, no podemos simplemente llegar a un algoritmo sin pasar por el proceso de “pensar” sobre el problema, y ​​segmentar los pasos en partes lógicas y sensibles.

En la programación, realizamos declaraciones dependiendo de cuánto se necesita resolver. Determinamos este ‘cuánto’ usando aritmética [usualmente].

Las condiciones de prueba, al crear el índice adecuado para lo que se debe acceder (base de datos, matrices, etc.), implican aritmética.
La habilidad de manipular números es esencial para la codificación. La forma en que nos conectamos a la computadora y le preguntamos qué necesitamos y qué debemos hacer para hacerlo es a través de los números. [Hasta ahora no conozco los otros métodos, pero ¿en serio? ¿Hay otra forma en que podamos hablar con computadoras además de números y símbolos / representaciones numéricas?]

Hay cosas que necesitan repetirse, y las conseguimos a través de bucles.
Tenemos que usar números para mantener el bucle, y números [de nuevo] para detenerlo. [Al menos la mayor parte del tiempo]

Así que sí. Estas son solo algunas de las cosas que relacionan la aritmética con la programación [todo el campo de la informática es todavía muy amplio, y la programación es solo una pequeña pulgada]. Todavía soy un principiante, y yo mismo he estado explorando este campo. Pero hay algo de lo que estoy seguro: necesitamos matemáticas.

No solo porque la mayoría, si no todos los procesos de la vida real, pueden ser modelados de manera eficiente por las matemáticas, sino porque las matemáticas son la forma menos ambigua de comunicar un conjunto de instrucciones a una computadora. Las computadoras necesitan instrucciones precisas, y esto requiere lógica y matemáticas. Imagínese si no usáramos las matemáticas en nuestros programas de computadora. “Gire en alguna dirección ambigua en cierta cantidad ambigua y avance en una cantidad desconocida”. La computadora no tendría idea de qué hacer. Necesitamos valores exactos y operaciones precisas en nuestros lenguajes de programación porque las computadoras, en sus niveles más fundamentales, están formadas por transistores que amplifican o cambian las señales eléctricas, y estas señales, según su amplitud, se interpretan como unos o ceros. Las computadoras son de naturaleza matemática.

Como estudiante de ciencias de la computación, puedo decirles que no es realmente un gran problema no saber las matemáticas cuando se trata de ingeniería de software. Lo que es más importante es conocer las herramientas y APIs. Sin embargo, si estás hablando de informática teórica, sí, es definitivamente importante. Después de todo, la informática puede considerarse como un campo de las matemáticas aplicadas.