Existe-t-il une théorie qui combine théorie des catégories / algèbre abstraite et complexité informatique?


18

La théorie des catégories et l'algèbre abstraite traitent de la façon dont les fonctions peuvent être combinées avec d'autres fonctions. La théorie de la complexité traite de la difficulté de calculer une fonction. C'est bizarre pour moi que je n'ai vu personne combiner ces domaines d'études, car ils ressemblent à de telles paires naturelles. Quelqu'un a-t-il déjà fait cela?


À titre d'exemple motivant, examinons les monoïdes. Il est bien connu que si une opération est monoïde, alors nous pouvons paralléliser l'opération.

Par exemple dans Haskell, nous pouvons définir trivialement que l'addition est un monoïde sur les entiers comme ceci:

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

Maintenant, si nous voulons calculer la somme de 0 à 999, nous pourrions le faire séquentiellement comme:

foldl1' (+) [0..999]

ou on pourrait le faire en parallèle

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

Mais paralléliser ce monoïde n'a de sens que parce que mappend s'exécute en temps constant. Et si ce n'était pas le cas? Les listes, par exemple, sont des monoïdes où mappend n'exécute pas de temps (ou d'espace!) Inconstant. Je suppose que c'est pourquoi il n'y a pas de fonction mconcat parallèle par défaut dans Haskell. La meilleure mise en œuvre dépend de la complexité du monoïde.


Il semble qu'il devrait y avoir un moyen pratique de décrire les différences entre ces deux monoïdes. Nous devrions alors être en mesure d'annoter notre code avec ces différences et que les programmes choisissent automatiquement les meilleurs algorithmes à utiliser en fonction de la complexité d'un monoïde.


1
Type Integer dans Haskell est un entier multi-précision, et la complexité temporelle de l'addition dépend naturellement de la longueur des entiers d'entrée, il est donc trompeur de dire que mappend dans votre instance Monoid pour Integer s'exécute en temps constant.
Tsuyoshi Ito du

@TsuyoshiIto Vous avez raison, je voulais utiliser Int. Fixé.
Mike Izbicki

Avez-vous vu cette question ?
Kaveh

@Kaveh je ne l'avais pas fait, merci pour le pointeur. À partir d'une lecture rapide, il semble que personne n'ait fait de travail théorique de catégorie sur les classes de complexité elles-mêmes (et il y a un débat sur ce que cela pourrait même signifier ou si c'est un objectif valable). Je pense donc que cela répond à peu près à la première partie de ma question et laisse simplement toutes les interactions entre l'algèbre et la complexité.
Mike Izbicki

Il y a beaucoup d'interaction entre l'algèbre et la théorie de la complexité. Il existe même des livres intitulés "Théorie de la complexité algébrique" qui utilisent et appliquent des concepts et des techniques algébriques à la complexité. Et il existe également de nombreux travaux appliquant la théorie de la complexité à l'algèbre. Vous devez être plus précis pour obtenir une réponse.
Kaveh

Réponses:


12

[La complexité informatique et la théorie des catégories] semblent être de telles paires naturelles.

Compte tenu de l'importance de la complexité informatique en tant que domaine de recherche, s'il s'agissait de compagnons naturels, peut-être que quelqu'un aurait déjà fait ressortir le lien?

Spéculation sauvage. Permettez-moi de divertir le lecteur avec des réflexions sur les raisons pour lesquelles un rendu catégorique de la complexité de calcul est difficile. On peut soutenir que le groupe de concepts clés dans la théorie des catégories se concentre sur les constructions / propriétés universelles (avec l'appareil de foncteurs associé, les transformations naturelles, les adjonctions, etc.). Si nous pouvons montrer qu'une construction mathématique a une propriété universelle, cela donne beaucoup de perspicacité. Donc, si nous voulions une approche catégorielle de la complexité de calcul, nous aurions besoin de trouver une catégorie pratique et de montrer comment les concepts clés de la théorie de la complexité (par exemple LOGSPACE ou NP-hardness) peuvent être donnés par des constructions universelles utilisant cette catégorie. Cela n'a pas encore été fait, et je pense que c'est parce que c'est un problème vraiment difficile.

Je soupçonne que la raison de cette difficulté est que l'objet clé de la théorie de la complexité, la machine de Turing, n'est pas bien compris algébriquement. Le problème avec les MT est qu'elles ne sont pas naturellement équipées d'une belle algèbre qui permet de construire des programmes de manière compositionnelle. J'entends par là que nous ne programmons généralement pas de MT en disant que notre programme cible est le TM T qui est composé par exemple de où les sont des TM plus petites et sont opérateurs algébriques sur les MT: nous n'avons tout simplement pas d'opérations algébriques (naturelles) sur les MT qui nous permettent de construire des MT par étapes de manière perspicace 1T i, T=T1T2T3Tje,. Au lieu de cela, nous construisons des MT en spécifiant leurs deux composants séparément: le contrôle (un FSM) et la bande. Ni le contrôle ni la bande n'ont eux-mêmes de bonnes algèbres.

Regardons d'abord les bandes. Il existe deux façons naturelles de composer des bandes, dont aucune ne semble fonctionner pour une description de la composition des MT.

  • Collez-les ensemble comme addition ordinale. Ce n'est pas la bonne idée, parce que les bandes sont infinies et en les collant comme une addition ordinale, nous obtenons un double objet infini qui va au-delà de la calculabilité finie, conduisant à un calcul / hyper-calcul infini, qui sont intéressants en tant que mathématiques mais ne correspondent pas à calcul possible.

  • Collez-les en parallèle , par exemple deux machines à 3 têtes se transforment en une machine à 6 têtes. Cela ne nous dit pas comment les machines composants interagissent entre elles.

  • Bandes entrelacées. Un problème avec cette approche est qu'il n'est pas clair ce que l'entrelacement canonique pourrait être, le cas échéant. De plus, l'entrelacement «confondra» le contrôle existant, qui a tendance à être finement réglé vers une disposition de bande spécifique. Nous ne pouvons donc pas réutiliser le contrôle directement.

Avec les FSM, la situation est un peu meilleure, car nous avons des théories algébriques significatives sur le plan du calcul de la construction d'automates, dont les plus connues pourraient être des algèbres de processus comme CSP, CCS, -calculus, ACP, etc. Mais aucun d'eux n'est un calcul des mouvements de la tête de bande, ce dont nous aurions besoin si nous voulions composer des MT.π

Dans l'ensemble, nous sommes assez loin d'un traitement algébrique / catégorique substantiel de la complexité informatique, et nous aurions besoin de plusieurs avancées conceptuelles pour y arriver.


1 Notez que ceci est assez différent des autres formalismes de calcul comme -calculus et -calculus, qui sont des calculs algébriques. Parce qu'ils sont algébriques, il a été facile de développer des théories de type pour -calculus et -calculus comme moyen de contraindre les programmes. Cependant, ces calculs ont des opérations puissantes comme la génération de nouveaux noms, l'extrusion de portée, conversion et la copie illimitée de termes, ce qui les rend a priori inadaptés comme formalismes de base pour la théorie de la complexité. En effet, on peut facilement montrer par exemple P = NP si on ne fait pas attention. Ce n'est qu'en 2014 qu'Accattoli et Dal Lago ont montré (dans: Beta Reduction is Invariant, Indeed ) queπ λ π α λ πλπλπαλ -calculus peut être utilisé pour définir la complexité temporelle si l'on fait attention. Aucun résultat correspondant n'est connu pour la complexité de l'espace ou pour -calculus.π


Je dirais que la composition des machines Turing est assez claire quand on les considère comme des programmes informatiques abstraits. La façon naturelle de composer des programmes est d'appeler l'un en tant que sous-programme d'un autre. Plus généralement, chaque programme est une fonction calculable en temps et espace finis qui accepte certaines entrées formatées et génère une autre chaîne formatée, qui peut être introduite dans une autre fonction. Il est possible que certaines entrées inutiles entraînent des sorties inutiles ou qu'une fonction ne s'exécute pas dans le temps et l'espace alloués, auquel cas le programme entier se bloque.
Anton Fetisov

Évidemment, tous les programmes ne sont pas composables de cette manière, ce qui nous conduit naturellement à une catégorie de MT. Il est également probable que l'on devrait abandonner la notion de MT illimitée dans l'espace-temps, ce qui n'est pas réalisable de toute façon. Y a-t-il une notion publiée qui capture cette structure?
Anton Fetisov

@AntonFetisov Avez-vous essayé d'écrire les détails? Ce n'est pas joli.
Martin Berger

2

Cette réponse sur les isomorphismes entre les langages formels combine les résultats algébriques de la théorie des codes avec des notions de la théorie des catégories pour étudier les notions possibles d'équivalence et d'isomorphisme entre les langages formels et les classes de complexité.

Ma propre interprétation de ces résultats est que les points de synchronisation dans les mots sont différents pour les transducteurs déterministes et non ambiguës non déterministes, et même différents entre les transducteurs déterministes avant et déterministes arrière. Prendre cette perspective des points de synchronisation permet de relier ces résultats à des langages visuellement déroulants, et pose la question de savoir si ceux-ci devraient également considérer de simples séparateurs (comme un espace ou une virgule) en plus des appels et des retours. (Je suppose qu'un séparateur pourrait être émulé par un appel combiné retour + appel, mais comme ceux-ci nécessitent deux symboles au lieu d'un, il n'est pas clair pour moi si cela est suffisant. Il pourrait également y avoir visiblement des langues qui n'ont que des séparateurs, mais pas appeler ou renvoyer des symboles.)


J'en ai fait un wiki communautaire, car il renvoie à ma propre réponse à ma propre question, ce qui n'est certainement pas génial. Je «nettoyais» mes favoris, et écrire cette courte réponse était la façon la plus simple de procéder.
Thomas Klimpel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.