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.
quelle
Antworten:
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.
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.
quelle
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.)
quelle