A menudo me preguntan qué hace un informático teórico. Sería genial tener algunas buenas respuestas a esta pregunta. Tiendo a recurrir a la jerga técnica y los ojos de las personas generalmente se vuelven vidriosos en este punto.
¿Qué hace un informático teórico, en términos que pueden ser entendidos por personas que no son informáticos?
Una buena respuesta debe ser ágil, precisa en espíritu, sin sonar vaga o trillada. Para obtener puntos de bonificación, la respuesta debe indicar por qué un informático teórico no es matemático ni profesional de TI.
Esta pregunta está inspirada en la pregunta MO https://mathoverflow.net/questions/3559/colloquial-catchy-statements-encoding-serious-mathematics aunque la intención es diferente.
fuente
Le doy a la gente un ejemplo concreto. Específicamente, suelo motivar la teoría de la complejidad con el mismo problema muy ilustrativo (pero simple). Le pregunto a mi audiencia cómo le dirían a un niño pequeño que descubra si su nombre está en una lista de nombres ordenados alfabéticamente (y les digo que al niño le toma 3 segundos comparar un nombre con otro). A menudo se da el caso de que la persona / grupo presentará un enfoque ingenuo y lineal. Obligo a la conversación a recurrir al algoritmo logarítmico (podría usar una palabra diferente a logaritmo) ya sea pidiéndole a la persona algo mejor o mencionándolo yo mismo. Les muestro cómo duplicar el tamaño de la lista solo agrega tres segundos de trabajo para el niño con este nuevo enfoque. Y comparo esto directamente con la versión lineal, que ahora parecerá completamente tonta.
Por supuesto, lo traigo de vuelta a la tierra. Les digo que el niño en cuestión es generalmente una computadora, pero que podría ser un niño o realmente cualquier persona en general. Que las preguntas que hacemos no son realmente sobre computadoras, sino más bien sobre la cantidad de espacio, tiempo e información que necesita para resolver problemas. Y motivé el análisis de complejidad por analogía a los dos métodos diferentes para resolver el mismo problema.
Cuando llamo su atención, saco a relucir a los grandes bateadores. Les pregunto "¿pueden probar que la solución logarítmica es la mejor que pueden esperar hacer o pueden encontrar algo mejor?" y les pregunto "¿hay problemas que ningún proceso (algoritmo) pueda resolver?" Me sorprendió la forma en que las personas intentan abordar estas preguntas cuando no tienen antecedentes de TCS.
fuente
Me gusta esta publicación de Scott Aaronson , que explica la teoría de la complejidad como teología cuantitativa. Aquí hay un extracto:
fuente
Un ejemplo de respuesta, que definitivamente se puede mejorar:
fuente
Creo que Dijkstra dio una excelente (no) respuesta en este sentido (siempre es una buena fuente a la que recurrir para pronunciamientos crujientes y absolutistas :)).
fuente
Realmente me gusta la introducción al problema de Particionamiento dada por Brian Hayes aquí .
Él usa el problema de dividir un conjunto de niños en equipos de igual habilidad total (suponiendo que pueda cuantificar la habilidad de cada niño que usa un número), y también explica el algoritmo codicioso que los niños suelen usar para resolver este problema.
Es un problema muy simple de entender, es fácil entender el algoritmo, sorprende que sea (muy probablemente) muy difícil en general y vergonzoso que aún no podamos probar el último bit.
fuente
Por lo general, respondo con algo como: trato de averiguar qué es posible hacer con una computadora. No es completamente exacto, pero está bastante cerca, y generalmente la gente pregunta algo como "¿Qué quieres decir?" y puedo hacer referencia a algo específico, como TSP. Aunque reformulo el vendedor ambulante como, por ejemplo, el problema de ir a la barra, el problema del agente de bienes raíces, el problema de demasiadas diligencias, no hay suficiente tiempo, o lo que parezca apropiado.
Por ejemplo: "Bueno, digamos que necesita comprar zapatos, comestibles y ropa, recoger un pastel, cortarse el pelo y hacer otros recados antes de la cena. Sería genial si pudiera poner todo eso en su GPS y podría decirle en qué orden debe hacer todos sus recados antes de las 4. Pero si la lista de recados es lo suficientemente larga, ni siquiera es posible, en este momento, averiguar si pueden conseguir que se hagan por 4 en absoluto , y mucho menos lo que pide lo que necesita hacer en ellos, en cualquier cantidad razonable de tiempo. Quiero saber si es posible resolver el problema rápidamente con un ordenador ".
fuente
¿Cuáles son las mejores formas de resolver problemas y qué problemas son demasiado difíciles de resolver? Hay una palabra en los idiomas europeos, ¡incluido el inglés! - "informática". La ciencia de la información. En los Estados Unidos, llamamos a esto informática teórica, debido a la fuerte industria informática aquí, pero pensamos en resolver problemas sin computadoras por un minuto. Considera el cuerpo humano. Resuelve problemas de una manera casi milagrosa. La luz entra en nuestros ojos y podemos ver cosas que reconocemos . El sonido llega a nuestros oídos y escuchamos palabras que entendemos . Estos son problemas de información que resolvemos fácilmente, miles de veces al día, con los que las mejores computadoras del mundo todavía luchan.
Tomó el proceso de evolución millones de años resolver esos problemas, usando una estrategia de prueba y error, y matando a los desafortunados. Imagine lo que podríamos lograr si adoptamos un enfoque más racional e invertimos tanta creatividad humana en esta nueva ciencia de resolución de problemas como la que hemos invertido en geometría, teología o cálculo. Lo que hago es una pequeña parte de esa inversión.
En respuesta a la pregunta del laico, "¿Qué haces?" A menudo respondí: "Paso mucho tiempo mirando al espacio, descubriendo cómo hacer realidad la ciencia ficción". Luego doy un ejemplo específico de un proyecto, explicado en un par de oraciones.
fuente
La informática teórica es para la informática lo que las matemáticas solían ser para la física.
fuente
Generalmente doy la siguiente respuesta, aunque centrada en la teoría de la complejidad: "Estudio los límites, en términos de espacio y tiempo, para resolver un problema. Los problemas incluyen, encontrar el camino más corto en un mapa o ganar un juego de ajedrez".
fuente
Por lo general, pongo el problema de factorización como ejemplo; Primero pido el número que divide 15; por lo general, las personas pueden responder 3, 5 y divertirse preguntándose si 1 y 15 son respuestas correctas. Luego doy un número enorme (más de 10 dígitos) y les pregunto si pueden decirme cuáles son los divisores; y explico que, incluso para los informáticos, esta es una pregunta realmente difícil.
Entonces, si tengo tiempo, trato de explicar que la pregunta es averiguar cómo resolver este problema o demostrar que siempre tomará mucho tiempo (una noción que sabemos exactamente cómo definir). Y luego una pequeña palabra de criptografía, para explicar por qué se usa, y una palabra sobre cuánto tiempo le toma al equipo de científicos romper la clave del número con cientos de dígitos (evito hablar de bits porque la gente parece saberlo mejor) qué es un dígito)
fuente
La pregunta planteada es realmente difícil ya que la mayoría de las personas no tienen idea de lo que hacen los científicos de la computación en general. Esto es muy diferente de otras disciplinas.
Me gusta usar la siguiente analogía: (T) CS es para computadoras lo que la física es para reproductores de CD (es decir, el láser). En realidad, esto funciona bastante bien porque la mayoría de las personas tienen una idea de lo que trata un físico, ya sea correcto o no.
Ejemplos más específicos incluyen aquellas cosas con las que la mayoría de las personas se pueden identificar
Luego explicaría que, si bien las personas con PCS se encargarían de una implementación rápida o una buena integración en sistemas complejos, las personas con TCS se preguntan qué es posible y prueban cosas que brindan conocimientos / técnicas seguras y reutilizables para que las use PCS.
También puede usar la frustración de la gente sobre las computadoras ("¡No hace lo que quiero!"). Puede señalar que (T) CS se ocupa de cómo expresar las cosas de una manera que las computadoras puedan entender y procesar de manera eficiente (refiriéndose a sintaxis, semántica, estructuras de datos, algoritmos).
fuente
Cuando alguien le hace una pregunta, puede responderla directamente o puede darle un procedimiento paso a paso para que siga y una prueba de que si los pasos se siguen con precisión, la respuesta se obtendrá dentro de un período de tiempo razonable. Dado que los pasos en sí mismos no son demasiado complicados y pueden ser realizados rápidamente por una entidad capaz de existir en este universo, ¿qué tipo de preguntas exhiben tales procedimientos? Creo que este es el tema de la informática teórica.
fuente
Mi respuesta habitual, que no es rápida pero garantiza que la conversación se detendrá (¡bono!) Es "como la teoría cuántica es el núcleo matemático de la física, TCS es el núcleo matemático de la informática".
fuente
Estudiamos los límites de la computación. ¿Qué tan rápido puede resolver un determinado problema computacional? ¿Cuánto tiempo se requiere para resolverlo, sin importar qué solución intentes? Luego les doy estos ejemplos (que son fáciles de explicar a la mayoría de los laicos, y de hecho muchos laicos tienen experiencia directa con ellos, demuestran algunas propiedades de los problemas de NP completo y en realidad tienen que ver con salvar vidas).
Obviamente, las personas (incluyéndome a mí) podrían decir que he ignorado otros recursos importantes como el espacio, la aleatoriedad o incluso la cuantidad. Pero cuando solo tiene 2 minutos para contarle a alguien sobre un campo completo, algunas cosas se quedan fuera.
fuente
Si desea dar una mirada caprichosa al pasado, recuerde a su audiencia que "computadora" solía referirse a una persona cuya profesión era calcular cosas . (Y si quiere violar algunos estereotipos de género que puedan tener, puede señalar que con frecuencia también eran mujeres).
Luego puede lograr un puñado de cosas a la vez:
fuente
Siempre empiezo apuntándolos hacia algún video o artículo creativo, intencionalmente irreverente que explique un concepto técnico a un nivel intuitivo. Aquí hay un buen ejemplo: Garabatos en matemáticas: espirales, Fibonacci y ser una planta
Una vez que entienden el concepto (y espero que se hayan divertido un poco con él), trato de generalizar lo que han aprendido sobre algo sobre TCS. Por ejemplo, el video anterior podría conducir a una explicación básica de los algoritmos o la computación como un proceso recursivo: "algo que genera una estructura compleja a partir de unas pocas reglas simples". ¡La gente de TCS, entonces, solo estudia qué tipos de reglas producen qué tipos de estructura!
A partir de ahí, generalmente es bastante fácil pasar de TCS general a lo específico de dominio que haces. :)
fuente
Siguiendo la sugerencia dada por Ross Snider, de comenzar con un ejemplo específico, también se puede explicar directamente la pregunta P vs NP. Uno puede describir esta pregunta a un laico como averiguar si verificar una solución es probablemente más fácil que encontrarla, o es cierto que siempre que podamos verificar una solución, también podemos encontrarla.
fuente
Aquí está el mío:
Conduce muy bien a hablar sobre computación en biología, el papel de la lógica en informática, etc.
fuente
Tal vez se podría decir eso
El científico no usará una computadora mientras sea creativo, sino que pensará mucho, garabateará fórmulas y dibujos extravagantes en papel y ocasionalmente deambulará. Por lo tanto, la practicabilidad inmediata no es lo más importante, es más como un artista explorando e intentando dar sentido a los misterios de este mundo.
Entonces uno podría mencionar cosas que dependen de algunas soluciones elegantes de teóricos, como la computadora, Internet, motores de búsqueda, banca segura, películas en 3D, secuenciación de ADN, etc. Pero siempre se debe enfatizar que nadie conoce las aplicaciones de la investigación de hoy, parte de esto se puede ver por primera vez en varias décadas.
Según mi experiencia, muchas personas tienen un momento AHA cuando se dan cuenta de que la informática, y la teoría en especial, es tan rica en preguntas y problemas interesantes para estudiar. ¡Muchos de los cuales se pueden describir en un alto nivel! Esta es una lista del Prof. Wikipedia (a través de SIGACT), elija sus favoritos: algoritmos, estructuras de datos, teoría de la complejidad computacional, computación distribuida, computación paralela, VLSI, aprendizaje automático, biología computacional, geometría computacional, teoría de la información, criptografía, computación cuántica , teoría computacional de números y álgebra, semántica y verificación de programas, teoría de autómatas y estudio de aleatoriedad.
fuente
Prácticamente lo mismo que un reparador de videograbadoras. Ambos consideran cómo obtener el mejor rendimiento de las máquinas que leen y escriben información en trozos de cinta extremadamente largos.
Esto puede ser un poco más de lengua en la mejilla de lo que buscabas ...
fuente