Gibt es eine Theorie, die Kategorietheorie / abstrakte Algebra und rechnerische Komplexität kombiniert?


18

Kategorietheorie und abstrakte Algebra befassen sich mit der Art und Weise, wie Funktionen mit anderen Funktionen kombiniert werden können. Die Komplexitätstheorie befasst sich damit, wie schwer eine Funktion zu berechnen ist. Es ist seltsam für mich, dass ich niemanden gesehen habe, der diese Studienbereiche kombiniert, da sie wie solche natürlichen Paare aussehen. Hat das schon mal jemand gemacht?


Schauen wir uns als motivierendes Beispiel Monoide an. Es ist allgemein bekannt, dass wir die Operation parallelisieren können, wenn eine Operation ein Monoid ist.

Zum Beispiel können wir in Haskell trivial definieren, dass Addition ein Monoid über den ganzen Zahlen ist:

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

Wenn wir nun die Summe von 0 bis 999 berechnen möchten, können wir dies der Reihe nach tun:

foldl1' (+) [0..999]

oder wir könnten es parallel tun

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

Die Parallelisierung dieses Monoids ist jedoch nur deshalb sinnvoll, weil mappend in konstanter Zeit ausgeführt wird. Was wäre, wenn dies nicht der Fall wäre? Listen sind z. B. Monoide, bei denen mappend nicht zeitlich (oder räumlich!) Inkonstant abläuft. Ich vermute, aus diesem Grund gibt es in Haskell keine standardmäßige parallele mconcat-Funktion. Die beste Implementierung hängt von der Komplexität des Monoids ab.


Es scheint, als gäbe es eine bequeme Möglichkeit, die Unterschiede zwischen diesen beiden Monoiden zu beschreiben. Wir sollten dann in der Lage sein, unseren Code mit diesen Unterschieden zu versehen und die Programme automatisch die besten Algorithmen auswählen zu lassen, die je nach Komplexität eines Monoids verwendet werden.


1
Typ Ganzzahl in Haskell ist eine Ganzzahl mit mehreren Genauigkeiten, und die zeitliche Komplexität der Addition hängt natürlich von der Länge der Eingabe-Ganzzahlen ab. Daher ist es irreführend zu sagen, dass Mappend in Ihrer Monoid-Instanz für Ganzzahlen in konstanter Zeit ausgeführt wird.
Tsuyoshi Ito

@ TsuyoshiIto Du hast recht, ich wollte Int. Fest.
Mike Izbicki


@Kaveh hatte ich nicht, danke für den Hinweis. Nach einer kurzen Durchsicht klingt es so, als ob niemand selbst eine kategorietheoretische Arbeit an Komplexitätsklassen durchgeführt hätte (und es wird diskutiert, was dies überhaupt bedeuten könnte oder ob es sich um ein lohnendes Ziel handelt). Ich denke, das beantwortet so ziemlich den ersten Teil meiner Frage und hinterlässt nur Wechselwirkungen zwischen Algebra und Komplexität.
Mike Izbicki

Es gibt viele Wechselwirkungen zwischen Algebra und Komplexitätstheorie. Es gibt sogar Bücher mit dem Titel "Algebraic Complexity Theory", die algebraische Konzepte und Techniken für die Komplexität verwenden und anwenden. Es gibt auch umfangreiche Arbeiten zur Anwendung der Komplexitätstheorie auf die Algebra. Sie müssen genauer sein, um eine Antwort zu erhalten.
Kaveh

Antworten:


12

[Komplexität und Kategorietheorie] scheinen solche natürlichen Paare zu sein.

Angesichts der Bedeutung der Komplexität von Berechnungen als Forschungsgebiet hätte vielleicht schon jemand die Verbindung hergestellt, wenn sie so natürliche Bettgenossen gewesen wären?

Wilde Spekulation. Lassen Sie mich den Leser mit Gedanken darüber unterhalten, warum eine kategoriale Darstellung der Rechenkomplexität schwierig ist. Der Schlüsselbegriff der Kategorietheorie konzentriert sich wohl auf universelle Konstruktionen / Eigenschaften (mit den dazugehörigen Apparaten von Funktoren, natürlichen Transformationen, Zusätzen usw.). Wenn wir zeigen können, dass eine mathematische Konstruktion eine universelle Eigenschaft hat, gibt das viel Einsicht. Wenn wir also eine kategoriale Herangehensweise an die rechnerische Komplexität wünschen, müssen wir eine geeignete Kategorie finden und zeigen, wie Schlüsselkonzepte der Komplexitätstheorie (z. B. LOGSPACE oder NP-Härte) durch universelle Konstruktionen unter Verwendung dieser Kategorie gegeben werden können. Dies ist noch nicht geschehen, und ich denke, das liegt daran, dass es ein wirklich schwieriges Problem ist.

T=T1T2T3Tich,1 . Stattdessen konstruieren wir TMs, indem wir ihre beiden Komponenten separat angeben: das Steuerelement (ein FSM) und das Band. Weder Kontrolle noch Band haben selbst gute Algebren.

Schauen wir uns zuerst die Bänder an. Es gibt einige natürliche Möglichkeiten, Bänder zusammenzustellen, von denen anscheinend keine für eine kompositorische Beschreibung von TMs geeignet ist.

  • Kleben Sie sie zusammen wie ordinale Zugabe. Dies ist nicht der richtige Begriff, da Bänder unendlich sind. Wenn wir sie wie eine ordinale Addition zusammenfügen, erhalten wir ein doppeltes unendliches Objekt, das über die endliche Berechenbarkeit hinausgeht und zu einer unendlichen Berechnung / Hyperberechnung führt, die interessant wie mathematisch ist, aber nicht entspricht machbare Berechnung.

  • Kleben Sie sie parallel , zB zwei 3-Kopf-Maschinen werden zu einer 6-Kopf-Maschine. Dies sagt uns nicht, wie die Komponentenmaschinen miteinander interagieren.

  • Interleave-Bänder. Ein Problem bei diesem Ansatz ist, dass unklar ist, wie das kanonische Interleaving aussehen könnte. Darüber hinaus wird durch das Interleaving die vorhandene Steuerung „verwirrt“, da diese in der Regel genau auf ein bestimmtes Bandlayout abgestimmt ist. Daher können wir die Kontrolle nicht direkt wiederverwenden.

π

Alles in allem sind wir von einer wesentlichen algebraischen / kategorialen Behandlung der rechnerischen Komplexität ziemlich weit entfernt, und wir würden mehrere konzeptionelle Fortschritte benötigen, um dahin zu gelangen.


λπλπαλπ


Ich würde sagen, dass die Zusammensetzung von Turing-Maschinen ziemlich klar ist, wenn man sie als abstrakte Computerprogramme betrachtet. Die natürliche Art, Programme zu komponieren, besteht darin, eines als Unterprogramm eines anderen aufzurufen. Im Allgemeinen ist jedes Programm eine in endlicher Zeit und Raum berechenbare Funktion, die bestimmte formatierte Eingaben akzeptiert und eine andere formatierte Zeichenfolge ausgibt, die in eine andere Funktion eingegeben werden kann. Es ist möglich, dass einige Garbage-Inputs zu Garbage-Outputs führen oder dass einige Funktionen nicht in der vorgegebenen Zeit und im angegebenen Raum ausgeführt werden. In diesem Fall stürzt das gesamte Programm ab.
Anton Fetisov

Offensichtlich sind nicht alle Programme auf diese Weise zusammensetzbar, was uns natürlich zu einer Kategorie von TMs führt. Es ist auch wahrscheinlich, dass man die Vorstellung eines zeitlich unbegrenzten TM loslassen sollte, was sowieso praktisch nicht machbar ist. Gibt es eine veröffentlichte Vorstellung, die diese Struktur erfasst?
Anton Fetisov

@AntonFetisov Haben Sie versucht, die Details aufzuschreiben? Es ist nicht hübsch.
Martin Berger

2

Diese Antwort über Isomorphismen zwischen formalen Sprachen kombiniert algebraische Ergebnisse aus der Theorie der Codes mit Begriffen aus der Kategorietheorie, um mögliche Begriffe von Äquivalenz und Isomorphismus zwischen formalen Sprachen und Komplexitätsklassen zu untersuchen.

Meine eigene Interpretation dieser Ergebnisse ist, dass Synchronisationspunkte in Wörtern für deterministische und eindeutige nicht deterministische Wandler unterschiedlich sind und sogar zwischen deterministischen Vorwärts- und deterministischen Rückwärtswandlern unterschiedlich sind. Aus dieser Perspektive der Synchronisationspunkte können diese Ergebnisse mit sichtbaren Pushdown-Sprachen verknüpft werden, und es stellt sich die Frage, ob diese neben Aufrufen und Rückgaben auch einfache Trennzeichen (wie ein Leerzeichen oder ein Komma) berücksichtigen sollten. (Ich vermute, dass ein Separator durch einen kombinierten Return + Aufruf emuliert werden könnte, aber da diese zwei Symbole anstelle von einem erfordern, ist mir nicht klar, ob dies ausreicht. Es könnte auch sichtbare Sprachen geben, die nur Separatoren, aber keine haben Call- oder Return-Symbole.)


Ich habe dies zu einem Community-Wiki gemacht, weil es auf meine eigene Antwort auf meine eigene Frage verweist, was sicherlich nicht großartig ist. Ich habe meine Favoriten "gesäubert" und nur diese kurze Antwort zu schreiben, war der einfachste Weg, um fortzufahren.
Thomas Klimpel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.