¿Qué necesitan los físicos teóricos de los informáticos?

Recientemente, fui coautor de un artículo (que lamentablemente aún no está en línea) con algunos químicos que esencialmente proporcionó respuestas a la pregunta: "¿Qué necesitan los químicos de los científicos informáticos?" Esto incluía la solución de problemas teóricos, como la enumeración combinatoria y el muestreo de ciertas clases de gráficas; y problemas prácticos de programación, como implementaciones de código abierto de algoritmos que actualmente solo se implementan en paquetes de software costosos.

Esto me motiva a preguntar: ¿qué pasa con este campo? ¿Hay problemas teóricos de combinatoria, análisis de algoritmos, que la física necesita que un científico informático teórico resuelva? O qué tal la creación de herramientas prácticas que le permitan a un físico teórico hacer un mejor trabajo: "¡Si tan solo tuviera un programa que me resolviera este tipo de problemas!"

Diseñado como wiki de la comunidad.

Respuestas (5)

Creo que quizás algunas de las otras respuestas toman la informática como sinónimo de computación. Supongo que esto quizás no sea lo que quieres decir, sino más bien la informática teórica. Obviamente, hay una gran superposición con el procesamiento de información cuántica de la que creo que ya está al tanto, así que lo ignoraré.

Gran parte de la física (incluida la física cuántica) es continua, por lo que el tipo de matemática utilizada tiende más hacia la matemática continua (resolver PDE, encontrar geodésicas, etc.) en comparación con las estructuras discretas estudiadas en la informática teórica. Como tal, no hay tanta superposición. La mecánica estadística tiende a estar más preocupada por estructuras discretas, por lo que hay más superposición allí.

Una gran área de superposición es en realidad en términos de física computacional, donde las personas se preocupan por calcular ciertas propiedades de los sistemas físicos. En particular, la simulación de sistemas físicos es un área enorme de investigación, y hay mucho enfoque en encontrar algoritmos eficientes para la simulación de sistemas físicos. En particular, encontrar estados fundamentales cuánticos y simular dinámicas cuánticas son los que tengo experiencia más directa. Ha habido un gran progreso tanto en términos de probar los resultados de dureza (por ejemplo, el artículo reciente de Scott Aarosnson sobre la dureza de la simulación de la óptica lineal, la integridad de QMA para encontrar estados fundamentales cuánticos incluso de sistemas bastante restringidos , la simulación de operadores de conmutaciónetc.), así como algoritmos eficientes (por ejemplo , puertas de coincidencia o el teorema de Gottesman-Knill ).

Los modelos principales son discretos, pero hay otros modelos que se ocupan de la continuidad. Un buen ejemplo antiguo está aquí . También hay una interesante interacción sobre preguntas relacionadas con el k-SAT aleatorio.
@Kaveh: Sí, lo sé. Simplemente quise decir que en un nivel alto las matemáticas tienden a ser diferentes.
Si bien ciertamente me gusta esta respuesta, no encuentro ninguna indicación en la pregunta de que Aaron tenga la intención de que se dirija principalmente hacia el área de la informática teórica; incluso pregunta por la "creación de herramientas prácticas". Por supuesto, el que pregunta es un científico informático teórico, pero por lo que puedo decir, la pregunta es igualmente sobre todas las ramas de la informática.
@Logan: Dice específicamente "¿Hay problemas teóricos de combinatoria, análisis de algoritmos, que la física necesita que un científico informático teórico resuelva?"
@Joe: Sí, pero en la siguiente oración pregunta sobre problemas prácticos, lo que para mí fue una indicación de que estaba buscando respuestas tanto desde el punto de vista teórico como desde el aplicado. Además, para aclarar, no estaba tomando computación e informática como sinónimos, pero debo admitir que no sé mucho sobre en qué consiste la informática teórica más allá de, digamos, Hopcroft & Ullman. Los científicos informáticos teóricos aquí investigan cosas como la informática biológica, que, por lo que sé, no es lo que la mayoría de la gente quiere decir cuando habla de informática teórica.
@LoganMaingi: Tal vez esa cita, junto con mis interacciones anteriores con Aaron, hayan influido en mi interpretación de lo que estaba preguntando.

EDITAR: Esta respuesta es específicamente desde la perspectiva de campos muy orientados a la computación como la física teórica del plasma.

La mayoría de los físicos pueden programar y, de hecho, muchos son bastante buenos programadores. Sería difícil trabajar en la física moderna sin saber programar. Desafortunadamente, muchos tampoco son muy buenos programadores (he leído muchos códigos fortran donde goto era el método principal de control de flujo).

Tener algoritmos más rápidos siempre es deseable y, por lo tanto, el análisis de algoritmos es útil. Sin embargo, en muchos casos, la velocidad del algoritmo no es el factor limitante, por lo que no es tan útil como cabría esperar. Más sobre eso más adelante.

Una cosa que hice en la escuela secundaria en un laboratorio fue esencialmente desarrollar GUI para programas existentes. En la física teórica del plasma, hay una gran cantidad de códigos que se ejecutan para tener una idea de lo que sucede en el reactor. Desarrollar una GUI para esto no es tan trivial como podría pensar; integrar la entrada de parámetros, la visualización de datos y conectar los códigos de una manera agradable en realidad requiere cierto conocimiento de lo que sucede físicamente. Esto está más dirigido a los programadores que a los informáticos, pero aun así debería ser útil.

Otra área en la que la física computacional deberá avanzar es en la dirección de las teorías basadas en datos. Los informáticos lo conocen mejor como aprendizaje automático. Solo les daré un ejemplo de un proyecto que hice, nuevamente en física de plasma. Al calcular el transporte turbulento para stellarators, el estándar de oro son las llamadas simulaciones girocinéticas. Estos pueden durar 100 millones de horas de CPU o más y generar grandes cantidades de datos. Mi asesor (en ese momento era pasante) sugirió que exploráramos la salida de los archivos con redes neuronales. La idea era entrenar una red neuronal utilizando tantas simulaciones girocinéticas como fuera posible y luego ver qué podía hacer. Esperábamos que probablemente no sería capaz de hacer mucho de nada.

Todos los paquetes de redes neuronales existentes, tanto comerciales como gratuitos, no eran suficientes para lo que necesitábamos. Hay simetrías incorporadas y simetrías aproximadas al sistema, que a menudo no son obvias. Traducir esto en una forma de que funcione una red neuronal no fue fácil. Terminé escribiendo el código completamente yo mismo, simplemente agregando la mayor parte de la física que pude. Funcionó sorprendentemente bien, y tanto mi asesor como yo pensamos que sería una dirección muy interesante en el futuro. Desafortunadamente, ir más allá de eso estaba más allá de mi capacidad de programación y probablemente requeriría un experto en redes neuronales que supiera mucho de la física del plasma.

No espero que se pueda fabricar un código de red neuronal que sea útil para una amplia área de disciplinas. Si hubiera una manera de construir simetrías en el código que la red tendría que seguir, sería extremadamente útil para la teoría basada en datos. Sin embargo, supongo que cada uno probablemente tendría que fabricarse individualmente. Esta es un área en la que los físicos teóricos (computacionales) y los informáticos pueden y probablemente deberían colaborar más. Las redes neuronales obviamente tampoco son lo único; Me imagino que en campos como la física de plasma computacional, la teoría basada en datos vería un gran auge si pudiéramos usar el aprendizaje automático con parte de la física incorporada.

Probablemente debería agregar que lo que estaba tratando de hacer no era, estrictamente hablando, una teoría basada en datos, sino una teoría basada en simulación. La verdadera teoría basada en datos usaría datos experimentales, pero esta es, con mucho, la opción más costosa (dado que cada configuración corresponde a la construcción de un stellarator de más de mil millones de dólares). Era esencialmente un proyecto de prueba de concepto.

En cuanto a la velocidad del algoritmo, en el caso de la física del plasma, el factor limitante no es necesariamente poder realizar las simulaciones. Incluso las simulaciones más costosas que nos interesan se pueden hacer razonablemente en las supercomputadoras de hoy. Las llamadas simulaciones "completas" requerirían algunos 10 30 más computación, lo que es poco probable que alguna vez sea factible. La región intermedia ha demostrado hasta ahora ser bastante caótica, y no parece que las respuestas mejoren mucho simplemente lanzando al azar más puntos de cuadrícula al problema. Primero debemos entender lo que está sucediendo en las escalas pequeñas, y luego podemos aplicar esto. Hay una serie de técnicas para hacer tales cálculos, como las simulaciones girocinéticas antes mencionadas, pero estas son esencialmente solo nuestra mejor suposición y solo coinciden aproximadamente con el experimento.

En un stellarator, el transporte turbulento depende críticamente de la geometría del reactor y, como tal, hay esencialmente un espacio de parámetros de dimensión infinita para explorar. Al menos para estudiar este espacio de parámetros de manera perturbativa, la mejor dirección parece ser el desarrollo de teorías basadas en simulación/datos híbridos utilizando el aprendizaje automático. Tener códigos más rápidos ayudaría, pero no está claro que nos lleven fundamentalmente a la física correcta; más bien, el problema parece ser que no estamos seguros de cómo desarrollar dichos algoritmos para obtener lo que queremos de ellos. Es cierto que esto fue hace varios años, y no me he mantenido al día con la literatura, y solo había unas pocas personas siguiendo esta dirección, por lo que no sé si todavía está abierto.

Muy bien, debo admitir que esto no encaja exactamente con tu comentario sobre la publicación de Michael, pero creo que es un comienzo.
Creo que puede generalizar su respuesta a las ideas de aprendizaje automático y no solo a las redes neuronales.
Como me retracté de mi publicación, solo para aclarar lo que Logan Maingi quiso decir con "comentar la publicación de Michael": publiqué un ejemplo con una necesidad muy general de informática, pero la pregunta es para un Problema/Ejemplo explícito en TP que requiere CS
Mencioné el aprendizaje automático en un contexto más amplio, véase, por ejemplo, la última oración. No puedo afirmar que tengo conocimiento de nada en el campo, excepto un poco de redes neuronales, por lo que la respuesta las analiza casi exclusivamente. Estoy de acuerdo en que hay mucho más que ganar más allá de las redes neuronales, pero no sé muy bien qué es.
Tengo que estar en desacuerdo. Son exactamente los algoritmos que se ejecutan en las supercomputadoras los que necesita acelerar. (No digo que los científicos informáticos teóricos puedan ayudar, pero decir "siempre podemos ejecutar cosas en computadoras más rápidas" definitivamente es una actitud equivocada). En algún momento, vi un análisis de la aceleración en la resolución de programas lineales. durante un período de algunas décadas. Hubo un factor de varios millones que provino de máquinas más rápidas. Hubo un factor significativamente mayor que provino de la mejora de los algoritmos. Y a la gente todavía le gustaría resolver programas lineales más rápido.
Si bien no puedo estar en desacuerdo con que sería bueno acelerarlos, considerando la cantidad de trabajo que se dedicó a optimizar cada aspecto de los códigos particulares con los que trabajé (por parte de programadores profesionales y físicos), me sorprendería si pudieran acelerarse más que linealmente. Si bien una aceleración de un millón de veces sin duda aumentaría la calidad de la simulación, en este caso el sistema es intrínsecamente caótico e incluso un millón de veces más de cómputo no lo llevaría tan lejos. En sistemas tan complicados, la teoría basada en datos parece ser la mejor manera de abordarlo.
Además, permítanme agregar que es genial ver a un investigador tan notable en este sitio. Si pudiera escribir sus propias experiencias con mayor detalle como respuesta, estoy seguro de que todos lo apreciarían mucho.
@Peter Después de leer mi escrito nuevamente, puedo ver con qué no estabas de acuerdo. Eliminé el segundo párrafo, que decía que el análisis de algoritmos no es útil. Quise decir esto solo en el contexto muy estrecho con el que estaba tratando, e incluso entonces no estaba bien explicado. Sigo pensando que los algoritmos más rápidos no resolverían los problemas planteados aquí, pero por supuesto ayudarían.
@LoganMaingi: encontrar un mejor algoritmo para un problema va mucho más allá de optimizar el código para un algoritmo específico. Un ejemplo de esto es la multiplicación de matrices: no importa qué tan bien implementes la multiplicación que aprendiste en la escuela o la universidad, se necesita O ( norte 3 ) . Sin embargo, hay mejores algoritmos que dan una escala de O ( norte k ) por k < 3 , que nunca obtendría al intentar optimizar la implementación de la multiplicación ingenua. Ver en.wikipedia.org/wiki/…
Soy muy consciente del problema de optimizar la multiplicación de matrices, pero no estoy convencido de que esto sea algo que los físicos deseen específica o especialmente. Prácticamente todos los que hacen cálculos en el mundo quieren multiplicar matrices más rápido. Por supuesto, si alguien puede encontrar un algoritmo más rápido para la multiplicación de matrices, la descomposición de valores singulares, la transformada de Fourier, etc., sería de gran beneficio para los físicos, pero eso es bastante obvio. Además, en el momento en que publiqué esta respuesta, Aaron estaba pidiendo ejemplos específicos; por lo tanto, traté de ser bastante concreto con el problema.
@LoganMaingi: no estaba hablando de la multiplicación de matrices. Era simplemente un ejemplo de la diferencia entre un mejor algoritmo y un código optimizado.
Me temo que no entiendo qué punto estás tratando de hacer, entonces. Estoy de acuerdo en que los algoritmos se pueden mejorar, pero salvo un avance bastante drástico e improbable, no parece que la computación programática por sí sola resuelva los problemas planteados. ¿Estás en desacuerdo conmigo aquí? ¿O no está de acuerdo cuando digo que el uso de técnicas de aprendizaje automático puede ayudar a aliviar el problema? Estoy de acuerdo con lo que dices, así que no estoy seguro de lo que dije con lo que no estás de acuerdo. Sospecho que puede ser un malentendido. ¿Podría citar qué declaración hice con la que no está de acuerdo?
Tenía en mente tu comentario a Peter donde dijiste "Aunque no puedo estar en desacuerdo con que sería bueno acelerar esto, considerando la cantidad de trabajo que se dedicó a optimizar cada aspecto de los códigos particulares con los que trabajé (por profesionales tanto programadores como físicos), me sorprendería si pudieran acelerarse más que linealmente". Me pareció que estabas enfocado en optimizar tu programa, mientras que él hablaba de mejores algoritmos.
Muy bien, ahora entiendo de lo que estás hablando, y puedo ver que puedes tener razón. Sin embargo, si eso es lo que quiso decir con ese comentario, creo que está fuera de tema en este sitio y esta pregunta. La pregunta es sobre lo que los físicos teóricos quieren en particular, no lo que todos los que hacen computación quieren en general. estaría extasiado por O ( norte 2 ) multiplicación de matrices, pero no creo que sea algo razonable preguntar. Sería como pedir a los matemáticos que respondieran la conjetura de Hodge. Ya está bien publicitado y la gente está trabajando en ello, pero no es un problema fácil.
Lo que realmente me gustaría ver es si alguien pudiera presentar una lista de algoritmos de uso común en física que no son muy conocidos fuera de la física. Esa sería una publicación en el área de análisis de algoritmos que apoyaría. Pero creo que cosas tan generales como "Mejore sus algoritmos" o "Danos O ( norte 2 ) multiplicación de matrices" no son muy buenos ejemplos para esta pregunta. El primero es algo irresponsable sin haber leído el algoritmo en sí. ¿Cómo sabe que mejorar el algoritmo resolverá el problema mejor que el aprendizaje automático? El último se analiza en el comentario anterior. .
Debo agregar una advertencia de que estoy completamente de acuerdo con el comentario original de Peter, tal como lo leí. Pensé que estaba comentando la idea de que "siempre habrá computadoras más poderosas disponibles" es irresponsable. Si parezco apoyar tal posición, de hecho no lo hago. Que algunas de mis universidades pensaran de esta manera es parte de por qué me mudé de la computación a áreas más matemáticas. Hace que el análisis de algoritmos parezca inútil, y no lo es. Sin embargo, también creo que la programación basada en procedimientos y algoritmos tiene sus límites. El aprendizaje automático y la teoría basada en datos son el siguiente paso cuando las cosas chocan contra una pared.
@LoganMaingi: Creo que todavía no entiendes mi punto. Decir "queremos mejores algoritmos de simulación" es algo totalmente razonable de pedir. Como dije, solo usé la multiplicación de matrices como ejemplo para ilustrar la diferencia entre mejores algoritmos y un código más rápido.
"Lo que realmente me gustaría ver es si alguien pudiera presentar una lista de algoritmos de uso común en física que no son muy conocidos fuera de la física". -- ¡Yo también! ... pero esperaré hasta la versión beta pública para hacer esa pregunta. :-)
@Aaron: ¿Sabes que los físicos han estado usando algoritmos aleatorios desde los años 40?
@Joe: Diría que mi "conocimiento" de algoritmos en física está en el nivel en el que es más probable que me equivoque que me informe.

Descargo de responsabilidad: no estoy muy familiarizado con la literatura de análisis numérico, por lo que es muy posible que los problemas que mencionaré ya estén resueltos.

Tal vez esta sea una sugerencia más banal, pero creo que un mejor software para hacer geometría diferencial numérica (y en algunos casos, algebraica) sería increíble. Esto probablemente parezca 'obvio' y para muchas personas, esto podría ser ya un problema de CS resuelto, pero prefiero ilustrar este problema con un ejemplo.

Una vez tuve que considerar una métrica de 10 dimensiones d s 10 = d s S 5 + d s METRO y resolver un problema de valor propio simplificado: ¿Cuál es el valor propio más bajo del operador de Laplace-Beltrami asociado a d s 10 . La relevancia física del problema resultó ser que podríamos usar una aproximación similar a un dipolo que solo depende del valor propio más bajo distinto de cero. Después de pasar algunas semanas tratando analíticamente de encontrar este valor propio, decidí intentar hacerlo numéricamente. Mi asesor me había convencido de que las herramientas numéricas para hacer esto estarían disponibles y que debería ser un problema sencillo. Desafortunadamente, tres meses después, me di cuenta de que había pocos programas comerciales/de código abierto que pudieran hacer esta tarea y, además, había pocos algoritmos desarrollados para aproximarse a PDE de dimensiones ligeramente superiores (no lineales). Creo que los métodos numéricos existen (hablé con algunos analistas numéricos en Courant que dijeron que creían que este problema estaba resuelto,

Creo que, si bien los físicos teóricos a menudo están capacitados para resolver cosas solo de forma analítica, sería bueno ganar algo de intuición a partir de las soluciones numéricas. Además, hay muchos algoritmos de matemáticos como Robert Ghrist para calcular invariantes importantes como la Homología Morse y creo que sería genial si pudiéramos encontrar el equilibrio adecuado entre la informática y la física para implementar tales técnicas. Tengo algo de experiencia en CS y con programación paralela y todavía siento que los dos lados (CS, física teórica) están tan desconectados que es difícil implementar tales soluciones.

Muchas gracias. Este es exactamente el tipo de cosa que estaba buscando.

Mi antiguo asesor, un físico que trabajaba en cs, escribió un artículo que mostraba que los espaciotiempos son categóricamente equivalentes a los dominios de intervalo. Su nombre es Panangaden. Los dominios son útiles en cs como semántica para lenguajes de programación. En los enfoques causales de la gravedad cuántica (que tomo como un lugar general para tener formas únicas de física novedosa y relevante), el tiempo se parece mucho más a los relojes lógicos, que vemos en el análisis del análisis de sistemas informáticos distribuidos y concurrentes. Algunos aspectos de cs son útiles para las cosas más nuevas que se están haciendo en física, como la mecánica cuántica categórica.

Prakash es un caso especial, ya que tiene una formación significativa en física.

Las matemáticas son a la física lo que la masturbación es al sexo - Richard Feynman. Esto significa que la física se trata de interacciones del mundo real versus conceptos abstractos simples. Lo mismo puede decirse de la ciencia frente a la ingeniería: la ciencia desarrolla herramientas abstractas que los ingenieros utilizan para representar modelos informáticos del mundo real.

La informática no es una ciencia sino una disciplina de ingeniería. Ni siquiera se trata de computadoras; se trata de modelar cálculos. La computadora es el medio que une los pensamientos a la física en forma de programas.

La habilidad más obvia que un físico se beneficiaría de la informática es el conocimiento de algoritmos y estructuras de datos. Los algoritmos son descripciones generales de cómo llevar a cabo una tarea específica. Esas tareas se pueden lograr usando muchos algoritmos. Todo es cuestión de resolver la tarea de la forma más concisa, sencilla y eficaz. El conocimiento de los algoritmos ayuda a seleccionar el algoritmo correcto para la estructura de datos correcta. Las estructuras de datos son formas de almacenar datos. Los ejemplos incluyen listas, matrices, números, cadenas, vectores, matrices e incluso funciones (si el lenguaje utilizado permite que las funciones se utilicen como datos para pasar). La teoría de categorías se trata de matemáticas, física, tipos de datos, etc. Todo está vinculado entre sí. Sugiero que los físicos aprendan Haskell para hacer el enlace ellos mismos.

En resumen, ser mejor en la resolución de problemas de palabras reales es lo que la informática tiene para dar. La programación hará que cualquier científico resuelva problemas a la velocidad de un electrón al tiempo que facilita la revisión de pensamientos y modelos.

La programación es práctica, ¿a qué estás esperando? ¡Haz que tus dedos corran!

He rechazado esto porque lo considero inútil y no una respuesta real.