Kategorietheorie, rechnerische Komplexität und kombinatorische Zusammenhänge?


17

Ich habe versucht, " Pearls of Functional Algorithm Design " und anschließend " The Algebra of Programming " zu lesen , und es gibt eine offensichtliche Korrespondenz zwischen rekursiv (und polynomiell) definierten Datentypen und kombinatorischen Objekten mit derselben rekursiven Definition und anschließendem Führen auf die gleiche formale Potenzreihe (oder auf die Erzeugung von Funktionen), wie in den Einführungen zu kombinatorischen Arten gezeigt (ich lese „ Arten und Funktoren und Typen, oh mein! “).

Gibt es also für die erste Frage eine Möglichkeit, die erzeugende (rekursive) Gleichung aus der Potenzreihe wiederherzustellen? Das ist allerdings ein nachträglicher Gedanke.

Ich interessierte mich mehr für den Begriff der anfänglichen Algebren und der endgültigen Co-Algebren als eine Art „Definieren von Prozeduren über die Datenstruktur“. In der funktionalen Programmierung gibt es einige praktische Regeln, die sich auf die Zusammensetzung, die Produkte der Abbildung zwischen Algebren und Ähnliches beziehen und beispielsweise in diesem Lernprogramm beschrieben werden. Es scheint mir, dass dies eine sehr wirkungsvolle Methode sein könnte, um sich der Komplexität anzunähern, und es scheint zum Beispiel ziemlich einfach zu sein, den Satz des Meisters in einem solchen Kontext wiederzugewinnen (ich meine, Sie müssen dasselbe Argument machen, also in diesem Fall nicht viel Gewinn). und der einzigartige Katamorphismus aus der Anfangsalgebra und die Tatsache (irre ich mich?), dass die Algebren zwischen A und FA für den F-Polynom-Funktor isomorph sind, lassen mich glauben, dass ein solcher Ansatz viele Vorteile bei der Analyse der Komplexität von haben könnte Operationen über Datenstrukturen.

Aus praktischer Sicht sind Fusionsregeln (im Grunde genommen Wege, um Algebra-Morphismen miteinander zu komponieren, Coalgebra-Morphismen und allgemeine Morphismen) eine sehr leistungsfähige Optimierungstechnik für die Programmtransformation und das Refactoring. Bin ich zu Recht der Meinung, dass die vollständige Ausnutzung dieser Regeln ein optimales Programm ergeben kann (keine unnötigen Zwischendatenstrukturen oder andere zusätzliche Operationen).

Bin ich auf etwas (und was) hier? Ist es vom Lernstandpunkt aus sinnvoll, die Komplexität der Berechnungen auf diese Weise zu untersuchen? Sind die Strukturen, für die wir "schöne" Anfangsalgebren haben können, für manche Probleme zu begrenzt?

Ich versuche hauptsächlich, einen Weg zu finden, um über die Komplexität in Bezug auf die Struktur des Suchraums und die Art und Weise, wie der "Suchraum" und der "Suchalgorithmus" durch ein "nettes" Objekt wie die ursprüngliche Algebra des Funktors und des Suchraums interagieren, nachzudenken zu verstehen, ob es sinnvoll ist, die Dinge bei komplexeren Strukturen so zu betrachten.


5
Können Sie das Format ändern, um es lesbar zu machen?
Lev Reyzin

11
Es gibt zwei mögliche Probleme mit Ihren Ideen. Erstens können nicht alle Datenstrukturen mit Anfangsalgebren dargestellt werden. Ein allgemeiner Graph oder eine komplizierte Zeigerstruktur ist nicht die ursprüngliche Algebra eines Funktors. Zweitens verbessern Fusionsregeln und so weiter im Allgemeinen nur die Effizienz des Codes, anstatt die O (-) - Effizienz des Algorithmus zu ändern (obwohl ich Ausnahmen kenne).
Dave Clarke

Danke, Dave, ich versuche, das Buch zur Algorithmischen Spieltheorie zu lesen, und die Algorithmen in traditionellen Behandlungen werden sozusagen größtenteils operativ spezifiziert Die fehlende Übereinstimmung zwischen der allgemeinen Datenstruktur und den Funktoren ist jedoch ein Problem. @sclv: Danke, ich werde es mir ansehen!
Stefan Petrov

Ich möchte darauf hinweisen, dass es andere Möglichkeiten gibt, Graphen darzustellen, als komplizierte Zeigerstrukturen. Insbesondere kann man sie induktiv durch eine Reihe von Änderungen oder Ergänzungen @DaveClarke darstellen. Ich bin mir sicher, dass dies auch für andere Strukturen wie diese gilt, obwohl ich das nicht so kategorisch sagen möchte, da ich kein Experte für anfängliche Algebren und deren Einschränkungen bin.
Samuel Schlesinger

Antworten:


7

Dave Clarkes Kommentar ist sehr wichtig. Im Allgemeinen ändert die Fusion nicht die O (-) Effizienz. Von besonderem Interesse ist jedoch die Arbeit von Liu, Cheng und Hudak über kausale kommutative Pfeile. Mit ihnen geschriebene Programme sind notwendigerweise teilweise durch Stream-Fusion auf eine einzelne Schleife optimierbar, die frei von dynamischer Speicherzuordnung und Zwischenstrukturen ist: http://haskell.cs.yale.edu/?post_type=publication&p=72


6

Joyals kombinatorische Spezies, Sedgwick / Falojets "zulässige Konstruktionen" der analytischen Kombinatorik und Yorgeys Haskell-Spezies sind alle gut.

Power Series Power Serious von McIlroy mit UNIX-Diff-Bekanntheit ist ebenso ein Muss wie das Kapitel über Corecursion in The Haskell Road to Logic Maths and Programming.

Die historischen Werke von Buchi, herausgegeben von Saunders MacLane und Chomsky / Schützenberger, stellen die Verbindung zwischen Potenzreihen, Algebren, Bäumen und endlichen Automaten her. Die in Stanley beschriebene Übertragungsmatrixmethode zeigt Ihnen, wie Sie die Generierung von Funktionen aus gewichteten Automaten berechnen.

Ich arbeite immer noch an der besten Methode, um die Domänen (GF, gewichtete Automaten, Algebra, Baum, Rekursion) effizient zu übersetzen. Im Moment schalte ich SymPy aus, da es noch kein gutes Haskell-Symbolikpaket gibt.

Persönlich habe ich die Iteration Graph eines endofuction genommen dann eine min berechnet auf sie dominiert Satz eine exakte Blackbox Suche gebunden zu bekommen, http://oeis.org/A186202 Nicht sicher , welche Arten von Komplexität führt Sie für die Suche, Aber diese Technik ist sehr wirkungsvoll, wenn es darum geht, eine Endofuktion über eine endliche Menge zu untersuchen.

--Original 2. Oktober 14 um 15:37 answer--

Werfen Sie einen Blick auf Brent Yorgeys These, die dem von Ihnen zitierten Aufsatz folgt. http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

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.