¿Existe una teoría que combine teoría de categorías / álgebra abstracta y complejidad computacional?


18

La teoría de categorías y el álgebra abstracta tratan la forma en que las funciones se pueden combinar con otras funciones. La teoría de la complejidad trata de cuán difícil es calcular una función. Es extraño para mí que no haya visto a nadie combinar estos campos de estudio, ya que parecen pares tan naturales. ¿Alguien ha hecho esto antes?


Como ejemplo motivador, echemos un vistazo a los monoides. Es bien sabido que si una operación es un monoide, entonces podemos paralelizar la operación.

Por ejemplo, en Haskell, podemos definir trivialmente que la suma es un monoide sobre los enteros como este:

instance Monoid Int where
    mempty = 0
    mappend = (+)

Ahora, si queremos calcular la suma de 0 a 999, podríamos hacerlo secuencialmente como:

foldl1' (+) [0..999]

o podríamos hacerlo en paralelo

mconcat [0..999] -- for simplicity of the code, I'm ignoring that this doesn't *actually* run in parallel

Pero paralelizar este monoide tiene sentido solo porque mappend se ejecuta en tiempo constante. ¿Y si este no fuera el caso? Las listas, por ejemplo, son monoides donde mappend no ejecuta un tiempo inconstante (¡o espacio!). Supongo que es por eso que no hay una función mconcat paralela predeterminada en Haskell. La mejor implementación depende de la complejidad del monoide.


Parece que debería haber una manera conveniente de describir las diferencias entre estos dos monoides. Entonces deberíamos poder anotar nuestro código con estas diferencias y hacer que los programas elijan automáticamente los mejores algoritmos para usar según la complejidad de un monoide.


1
Type Integer en Haskell es enteros de precisión múltiple, y la complejidad temporal de su adición depende naturalmente de la longitud de los enteros de entrada, por lo que es engañoso decir que mappend en su instancia de Monoid para Integer se ejecuta en tiempo constante.
Tsuyoshi Ito

@ TsuyoshiIto Tienes razón, quise usar Int. Fijo.
Mike Izbicki

¿Has visto esta pregunta ?
Kaveh

@Kaveh no lo hice, gracias por el puntero. De una lectura rápida, parece que nadie ha realizado ningún trabajo teórico de categoría sobre las clases de complejidad (y hay un debate sobre lo que eso podría significar o si es un objetivo que vale la pena). Así que creo que prácticamente responde la primera parte de mi pregunta y simplemente deja cualquier interacción entre álgebra y complejidad.
Mike Izbicki

Hay mucha interacción entre álgebra y teoría de la complejidad. Incluso hay libros titulados "Teoría de la complejidad algebraica" que usan y aplican conceptos y técnicas algebraicas a la complejidad. Y también hay trabajos extensos que aplican la teoría de la complejidad al álgebra. Tienes que ser más específico para obtener una respuesta.
Kaveh

Respuestas:


12

[La complejidad computacional y la teoría de la categoría] parecen tales pares naturales.

Dada la importancia de la complejidad computacional como campo de investigación, si fueran compañeros de cama tan naturales, ¿tal vez alguien ya habría sacado la conexión?

Especulación salvaje. Permítanme entretener al lector con pensamientos sobre por qué es difícil una representación categórica de la complejidad computacional. Podría decirse que el grupo de conceptos clave en la teoría de categorías se centra en las construcciones / propiedades universales (con el aparato asociado de functores, transformaciones naturales, adjuntos, etc.). Si podemos demostrar que una construcción matemática tiene una propiedad universal, eso nos da mucha información. Entonces, si quisiéramos un enfoque categórico de la complejidad computacional, tendríamos que encontrar una categoría conveniente y exhibir cómo los conceptos clave de la teoría de la complejidad (por ejemplo, LOGSPACE o dureza NP) pueden ser dados por construcciones universales usando esa categoría. Esto aún no se ha hecho, y creo que es porque es un problema realmente difícil.

T=T1T2T3Ti,1 . En su lugar, construimos TM especificando sus dos componentes por separado: el control (un FSM) y la cinta. Ni el control ni la cinta tienen buenas álgebras.

Veamos primero las cintas. Hay un par de formas naturales para componer cintas, ninguna de las cuales parece funcionar para una descripción compositiva de TM.

  • Pegarlos juntos como la suma ordinal. Esta no es la noción correcta, porque las cintas son infinitas y al unirlas como una suma ordinal obtenemos un objeto doble infinito que va más allá de la computabilidad finita, lo que lleva a una computación / hipercomputación infinita, que son interesantes como matemáticas pero no corresponden a Cálculo factible.

  • Pegarlos en paralelo , por ejemplo, dos máquinas de 3 cabezales se convierten en una máquina de 6 cabezas. Esto no nos dice cómo las máquinas componentes interactúan entre sí.

  • Cintas intercaladas. Un problema con este enfoque es que no está claro cuál podría ser el intercalado canónico, si lo hay. Además, el intercalado 'confundirá' el control existente, que tiende a ajustarse finamente hacia un diseño de cinta específico. Entonces no podemos reutilizar el control directamente.

π

Con todo, estamos bastante lejos de formar un tratamiento algebraico / categórico sustancial de la complejidad computacional, y necesitaríamos varios avances conceptuales para llegar allí.


λπλπαλπ


Yo diría que la composición de las máquinas de Turing es bastante clara cuando piensas en ellas como programas de computadora abstractos. La forma natural de componer programas es llamar a uno como un subprograma de otro. De manera más general, cada programa es una función computable en tiempo y espacio finitos que acepta ciertas entradas formateadas y emite otra cadena formateada, que puede introducirse en otra función. Es posible que algunas entradas de basura den como resultado salidas de basura o que alguna función no se ejecute en el tiempo y espacio asignado, en cuyo caso todo el programa se bloquea.
Anton Fetisov

Obviamente, no todos los programas son componibles de esta manera, lo que naturalmente nos lleva a una categoría de TM. También es probable que uno deje de lado la noción de un TM de espacio-tiempo ilimitado, que de todos modos no es prácticamente factible. ¿Existe alguna noción publicada que capture esta estructura?
Anton Fetisov

@AntonFetisov ¿Has intentado escribir los detalles? No es lindo.
Martin Berger

2

Esta respuesta sobre isomorfismos entre lenguajes formales combina resultados algebraicos de la teoría de códigos con nociones de teoría de categorías para investigar posibles nociones de equivalencia e isomorfismo entre lenguajes formales y clases de complejidad.

Mi propia interpretación de estos resultados es que los puntos de sincronización en palabras son diferentes para transductores deterministas y no deterministas no ambiguos, e incluso diferentes entre transductores deterministas hacia adelante y hacia atrás deterministas. Tomar esta perspectiva de los puntos de sincronización permite conectar estos resultados a lenguajes visiblemente pushdown, y plantea la cuestión de si esos también deberían considerar separadores simples (como un espacio o una coma) además de llamadas y devoluciones. (Supongo que un separador podría ser emulado por una combinación de retorno + llamada, pero debido a que requieren dos símbolos en lugar de uno, no me queda claro si esto es suficiente. También puede haber idiomas visibles que solo tengan separadores, pero no llamar o devolver símbolos.)


Hice de esta una wiki comunitaria, porque se vincula a mi propia respuesta a mi propia pregunta, lo que ciertamente no es genial. Estaba "limpiando" mis favoritos, y escribir esta respuesta breve era la forma más fácil de proceder.
Thomas Klimpel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.