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

Análisis Algorítmico

Utiliza la combinatoria y las relaciones de recurrencia.

Una gran parte de la informática implica tratar de comprender cuán eficientes son los algoritmos para realizar tareas específicas. Desea una forma de poder considerar si un algoritmo es más rápido o requiere menos 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 entradas grandes.

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

  • La complejidad de tiempo (cuánto tiempo tarda) de un algoritmo es aproximadamente igual al número de operaciones que realiza en una entrada dada. Digamos que desea poder ordenar una lista de números [matemáticos] n [/ matemáticos]. Si el paso más costoso en este proceso utiliza aproximadamente [matemáticas] n ^ {2} [/ matemáticas], entonces usted dice que la complejidad del tiempo está en el orden de las operaciones [matemáticas] n ^ {2} [/ matemáticas], denotado como [matemáticas] O (n ^ {2}) [/ matemáticas]. Derivar la complejidad del tiempo implica muchas matemáticas, particularmente la combinatoria y las relaciones de recurrencia.
  • la complejidad del espacio (cuánto espacio ocupa) de un algoritmo es aproximadamente cuántos recursos adicionales necesita para poder manejar la entrada. Nuevamente, tomemos una lista de números [matemáticos] n [/ matemáticos]. Si termina creando listas adicionales [matemáticas] n [/ matemáticas], cada una con un carácter, entonces tiene una complejidad espacial de [matemáticas] O (n) [/ matemáticas].

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

Esquemas de compresión de datos

Utiliza probabilidad y estadísticas, mucho.

Muchos algoritmos por sí mismos explotan las matemáticas avanzadas. La probabilidad es un favorito perenne.

Los esquemas de compresión de datos se utilizan para comprimir archivos explotando 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, reduciendo el número 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 en juego la probabilidad. Los esquemas, como la mezcla de contexto, intentan predecir la siguiente región en la memoria a partir de todas las piezas anteriores, lo que puede ahorrar una gran cantidad de sobrecarga.

Visión por computadora, gráficos y procesamiento de imágenes

Utiliza álgebra lineal (y ocasionalmente cálculo)

Si alguna vez has jugado un videojuego o has visto animación, realmente estás viendo una de las hazañas matemáticas más monumentales en informática. Casi todo en los gráficos de computadora se puede describir como una transformación : se toma un vector y se le aplican varias 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 crear gráficos realmente interesantes.

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

Qué pueden hacer los algoritmos de desenfoque gaussianos con un poco de matemática

Muchos motores de juegos también utilizan la física para calcular cosas como la dispersión de la luz en los juegos 3D. Puedo decirle por experiencia 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

Utiliza la teoría de grafos

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 acceden los objetos. Muchas estructuras de datos realmente interesantes, todas muy útiles, porque algunas de ellas pueden reducir los algoritmos potencialmente [matemáticos] O (n ^ {2}) [/ matemáticos] a solo [matemáticos] O (1) [/ matemáticos] ( 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 informática. Puede usarlo para diseñar motores de ajedrez, por ejemplo, o construir Google Maps. La teoría de gráficos a menudo se preocupa por encontrar rutas (formas de ir 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

Usa teoría de números

La criptografía utiliza muchas técnicas para hacer exactamente dos cosas:

  • Haciendo números de operaciones en diferentes bases
  • Factorizar enteros grandes, lo que requiere muchos trucos de la aritmética modular

No todo esto involucra matemáticas avanzadas: los desafíos criptográficos de Matasano presumen de que todos pueden resolverse con matemáticas muy elementales. Pero sí requiere que entres en la mente de un teórico de números.

A2A.

Las matemáticas utilizadas en Ciencias de la Computación generalmente están relacionadas solo 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 toda su base como Matemáticas. Los algoritmos se pueden usar en cualquier lugar, en cualquier campo para resolver los problemas más complejos, por lo que verá el uso de diferentes áreas de las 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 extensa como para ser explorada y la mayoría de las matemáticas utilizadas en informática se limita a ella.

Programación / codificación : las matemáticas utilizadas aquí son limitadas. Básicamente, cuando haya terminado con el Diseño de Algoritmo (si fue necesario al principio), no le queda más que transformar la lógica algorítmica en lógica de programación que no requiere el uso de Maths. Para la mayoría de los informáticos, el diseño de algoritmos es muy limitado antes de codificar las cosas. Esto puede deberse a la naturaleza trivial del trabajo o al 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 las Matemáticas (teniendo en cuenta que no es entusiasta de las Matemáticas y no planea tomar Matemáticas para más estudios), pero por otro lado, no lo tome a la ligera. Nunca se sabe lo que podría ganar con un conocimiento adicional en un área que está vinculada a casi todo lo que está a su alrededor, no solo a la informática. Y como dice Rishul, Maths será la única materia interesante en los semestres iniciales, ¡así que disfrútala! 🙂

La Ingeniería / Programación de software generalmente no requiere mucho de usted en un sentido matemático, aunque tener buenas habilidades matemáticas lo ayudará.

La informática requiere habilidades matemáticas de usted. Es una parte importante de muchos temas, tales como inteligencia artificial, algoritmos, estructuras de datos, aprendizaje automático, complejidad computacional, arquitectura de máquinas, etc.

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

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 todo matemática. Los algoritmos y las estructuras de datos son todas matemáticas aplicadas. Los geeks de redes usan la teoría de grafos diariamente. 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 informática se considera la mayoría de las veces un subcampo de matemáticas con algunos aspectos muy aplicados que están muy alejados de la ciencia y mucho más son ingeniería (me quedo con el lado más “científico” de las cosas, ya que hago trabajo formal todo el tiempo ( y si necesito hacer un experimento informático, lo haré cuando sea apropiado)).

Creo que las otras respuestas han hecho un trabajo decente (especialmente la respuesta del usuario de Quora a ¿Cómo se usan las matemáticas en informática?), 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á matemáticas más allá de lo que aprendió en álgebra de secundaria.

Pero la ingeniería de software es solo un aspecto de la informática. En los sistemas, comienzas a hacer preguntas como “Dadas algunas suposiciones simplificadoras, ¿qué tan rápido no solo se puede ejecutar este programa, sino algún programa remotamente parecido?”. En algoritmos, se 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 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 en particular que se ejecuta en el cuadro frente a usted a un conjunto mucho más amplio de aplicaciones, algoritmos y cuadros. Dar ese salto requiere herramientas matemáticas.

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

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

Eso no significa que no sea importante. Básicamente, nunca se encontrará empleando cálculo vectorial o números complejos en su vida tan a menudo como utilizará la teoría combinatoria y de números. Es solo para inculcar la lógica que están incluidos en el programa de estudios.

Para el caso, probablemente, las matemáticas son la única materia que le gustará hasta el segundo semestre. ¡Así que relájate, siéntate y disfruta de las Matemáticas porque así es como debe ser!

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

Con las matemáticas: “Puedo demostrar que el montón binario funciona, que un árbol binario es más rápido para la búsqueda que la búsqueda lineal en una gran matriz, puedo demostrar que los piratas informáticos nunca pueden obtener el control sobre el sistema operativo u otros usuarios”

Sin matemáticas: “Los montones binarios se ven 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. Tengo plena fe en que los piratas informáticos nunca podrán controlar … oops, sucedió de nuevo, pero esta vez seguro … oops, instale la tercera actualización de seguridad esta semana, pero tal vez ahora … oops ”

Lo mismo con la arquitectura. Antes de las matemáticas: “déjenme intentar construirlo de esta manera … vaya, la catedral colapsó 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 colapsará”.

¿Cuándo fue la última vez que un edificio se derrumbó de la nada? Gracias matematicas.

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

Sistemas de bases 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 hay un formalismo llamado álgebra relacional , en el que vemos una relación (tabla de datos) como un conjunto de n -tuplas (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, también conocidas como unión). El uso de la teoría de conjuntos nos permite probar las propiedades de los operadores (p. Ej., Unir distribuye sobre unión) que nos permite 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 entra en escena como base para los lenguajes de consulta de bases de datos como SQL y Datalog. Una consulta es conceptualmente una fórmula lógica que se está evaluando 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 (demasiado) preocupación por cómo se obtendrá esa respuesta. El cómo se deja al procesador de consultas, que traduce la consulta en álgebra relacional, que luego se puede optimizar y ejecutar.


Básicamente , uno de los objetivos más importantes de 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ía 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, miedo a aprender, un tema generalmente candente (informática). Guau.

Las computadoras trabajan con números. Hay fundamentalmente dos cosas que puede hacer con un número: copiarlo de un lugar a otro o hacer cálculos matemáticos . Solo hay una cantidad que puede lograr mover números de un lugar a otro. Por lo demás, las matemáticas son un poco importantes, ¿no te parece?

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 se rige (principalmente) por adición. Sin ella, alguna propiedad matemática básica que nos permite hacer la transición de un estado a otro de una manera predecible, nos resultaría muy difícil implementar y representar con precisión una máquina de estados capaz de hacer cualquier cosa realmente.

2) Todo lo que tiene que ver con las computadoras que en última instancia emerge como un movimiento del mouse o gráficos en una pantalla, en última instancia, se controlan y son, en esencia, números, 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 necesite 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 va a hacer un monitor o una biblioteca de gráficos (o algo más sustancial que se consideraría más cercano al metal que una aplicación).

La informática se clasifica en dos partes:

1) Software : esta parte implica 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 una solución matemática a los problemas.

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 e intentar diseñarlas, no solo necesita usar matemáticas booleanas sino también principios de ingeniería de electrónica y diseño de circuitos, y esto necesita el uso de las matemáticas para varios cálculos.

La informática es matemática. Durante un poco menos de la mitad de la historia de la informática, las únicas personas que formaban parte del campo eran 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 un tema importante que deben cubrir los estudiantes de informática.

El objetivo principal de diseñar 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 necesita saber todos los problemas de matemáticas y pruebas. Solo algunas matemáticas básicas y elementales serán suficientes.

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

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

Estudio adicional: análisis de algoritmos

La informática utiliza como 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 comprender el Universo. Aquí está mi punto de vista a su pregunta.

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

Gran parte de la informática teórica es matemática, a diferencia de algo separado que simplemente usa las matemáticas, en lugar de estudiar espacios de Hilbert o poleas (solo para dar algunos ejemplos arbitrarios, no leas demasiado), etc., podrías ser estudiando autómatas, variedades de idiomas, álgebra sobre monoides, clases de complejidad, circuitos booleanos, semántica de programas, lógica de primer orden, etc. (nuevamente, solo algunos ejemplos probablemente sesgados).

Por supuesto, hay otros aspectos de la informática, que otras respuestas analizan.

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

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

En programación, realizamos declaraciones dependiendo de cuánto necesite resolverse. Determinamos este ‘cuánto’ usando [generalmente] aritmética.

Las condiciones de prueba, con el índice apropiado 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 es a través de números. [hasta ahora no conozco los otros métodos, pero en serio? ¿Hay otra forma de hablar con las computadoras además de los números y los símbolos / representaciones numéricas?]

Hay cosas que necesitan repetirse, y lo logramos mediante bucles.
Tenemos que usar números para mantener el ciclo en marcha, y números [nuevamente] para detenerlo. [Al menos la mayor parte del tiempo]

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

No solo porque la mayoría de los procesos de la vida real, si no todos, pueden ser modelados eficientemente 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 una dirección ambigua por una cantidad ambigua y avance por 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 señales eléctricas, y estas señales, dependiendo de su amplitud, se interpretan como unos o ceros. Las computadoras son de naturaleza matemática.

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