Datenstruktur-Isomorphismen


20

Haftungsausschluss: Ich bin kein CS-Theoretiker.

Aus der abstrakten Algebra kommend bin ich es gewohnt, mit Dingen umzugehen, die einem Isomorphismus gleichkommen - aber ich habe Probleme, dieses Konzept in Datenstrukturen zu übersetzen. Ich dachte zuerst, dass gerade aufgestellte theoretische bijektive Morphismen ausreichen würden, aber ich bin ziemlich schnell auf eine Wand gestoßen - das sind nur Kodierungen und erfassen nicht die rechnerische Essenz der Datenstruktur.

Gibt es eine restriktivere (aber nützlichere) Definition? (Oder wenn nicht, warum?) Gibt es eine kanonische Definition der Kategorie "konstruierter Datenstrukturen"?

Antworten:


16

Es gibt keine solche kanonische Kategorie, aus dem gleichen Grund gibt es keine kanonische Kategorie von Berechnungen. Es gibt jedoch große und nützliche algebraische Strukturen in Datenstrukturen.

Eine der allgemeineren und dennoch nützlichen Strukturen dieser Art ist die Theorie der kombinatorischen Arten. Eine Art ist ein Funktor , wobei B die Kategorie der endlichen Mengen und Bijektionen zwischen ihnen ist. Sie können sich Arten als Familien von Strukturen vorstellen, die durch abstrakte Mengen von Orten indiziert werden. Dies erklärt die Funktionsweise von B - solche Familien müssen in Bezug auf die Umbenennung der abstrakten Bezeichnungen unveränderlich sein. Dann wiederholt der Kalkül der Spezies im Grunde genommen das Erzeugen von Funktionsmethoden auf der Funktionsebene, um Mengen von Datenstrukturen anstelle von Zählungen zu erzeugen.F:BBBB

Um diese Theorie in einer Programmiersprache umzusetzen, können Sie Brent Yorgeys Haskell Symposium Paper, Species and functors and types, lesen , oh my! . Ich denke, Sage hat auch ein Speziespaket, obwohl es natürlich eher auf Computeralgebra als auf Programmierung ausgerichtet ist.


14

In der Tat gibt es einen anderen Begriff als Isomorphismus, der beim Programmieren nützlicher ist. Es wird "Verhaltensäquivalenz" (manchmal "Beobachtungsäquivalenz" genannt) genannt und durch Angabe einer "Simulationsbeziehung" zwischen Datenstrukturen und nicht durch Bijektionen hergestellt. Algebraisten kamen herein und gründeten in der Informatik einen Bereich namens "Algebraische Datentypen", in dem sie eine Zeit lang Isomorphismen und anfängliche Algebren forcierten. Schließlich stellten Informatiker fest, dass sie in die Irre geführt wurden. Ein gutes Papier, das über diese Themen spricht, ist "Über Beobachtungsäquivalenz und algebraische Spezifikation" von Sannella und Tarlecki.

Ich habe eine Antwort auf eine andere Frage in cstheory über logische Beziehungen und Simulationen geschrieben, die sich mit der allgemeineren Geschichte der Simulationsbeziehungen in der Informatik befasst. Sie können das gerne lesen und die dort angegebenen Referenzen nachverfolgen. Besonders aufschlussreich ist das Kapitel 5 von Reynolds '"Craft of Programming".

Ein Lehrbuch über Algebraische Automatentheorie von Holcombe enthält das folgende interessante Zitat (S. 42):

Es gibt viele andere Ergebnisse, die sich mit Homomorphismen und Quotienten befassen ... Obwohl sie von unabhängigem algebraischem Interesse sind, haben sie sich bei der Untersuchung von Automaten und verwandten Gebieten noch nicht als besonders nützlich erwiesen. Tatsächlich weicht die algebraische Theorie von Maschinen in einem wichtigen Punkt von der in anderen algebraischen Theorien vertretenen Richtung ab. In der Automatentheorie geht es jedoch nicht darum, wie Maschinen "aussehen", sondern was "sie können". . Wir werden zwei Maschinen als sehr eng miteinander verwandt betrachten, wenn beide "dasselbe tun" können, sie jedoch möglicherweise nicht algebraisch isomorph sind!


Nach einigem Nachdenken über das Holcombe-Zitat stelle ich fest, dass er im Grunde sagt, dass die traditionelle Algebra damit zu tun hat, wie Dinge "aussehen", dh wie sie aufgebaut sind, aber sie haben keinen Einfluss darauf, was "sie können", dh wie sie sich verhalten. Dies scheint auf eine grundlegende Einschränkung der traditionellen Algebra in Bezug auf die Informatik hinzudeuten. Leider denke ich, dass die Kategorietheorie auch in dasselbe Lager gehört. Die Kategorietheorie hat jedoch den Status einer "heiligen Kuh", und es wird als unsinnig angesehen, über ihre Grenzen zu sprechen. Die Informatiker werden hoffentlich genug Mut haben, es lauter auszusprechen.
Uday Reddy

Uday, könnten Sie noch etwas näher darauf eingehen, wie (die Assymetrie?) Die Kategorietheorie nicht gut zusammenpasst?
Łukasz Lew

@ ŁukaszLew, Wenn die Kategorietheorie gut passen würde, könnten Sie sagen, dass alle typisierten Lambda-Kalkül-Typ-Ausdrücke mit einer Typvariablen X Funktoren sind. Sie sind aber nicht zB F (X) = (X -> X) ist kein Funktor.
Uday Reddy

7

Anstatt zu fragen, wie wir den Begriff des Isomorphismus stärken / schwächen können, besteht eine andere Möglichkeit darin, zu fragen: Was ist der richtige Begriff der Äquivalenz zwischen Rechenstrukturen und welche mathematische Struktur liegt diesem Begriff zugrunde?

Eine große Familie von Strukturen sind Kohlegebren. Strukturen wie Listen, Bäume, Automaten der endlichen und der unendlichen Vielfalt können als Kohlegebren bezeichnet werden. Wir können dann Homomorphismus oder Isomorphismus zwischen Kohlegebren untersuchen.

Aber selbst Homomorphismen zwischen Kohlegebren erzählen nicht die ganze Geschichte. Es kann hilfreich sein, Simulationen, Bisimulationen und andere logische Beziehungen nachzuschlagen. Wenn Sie strikt einen algebraischen Ansatz bevorzugen (im Gegensatz zu einem relationalen), sind Galois-Verbindungen eine Option. Hier sind einige Ansatzpunkte.


2

Haftungsausschluss: Ich bin nicht sicher, ob ich Ihre Frage verstanden habe. Möchten Sie über Isomorphismus zwischen zwei Datenstrukturen oder zwischen zwei "Datenstrukturspezifikationen" sprechen? (Diese werden manchmal als abstrakte Datentypen bezeichnet.)

Wenn Sie das Modell der Zellsonde betrachten, entsteht meiner Meinung nach leicht ein Konzept des Isomorphismus. Dies liegt daran, dass das Zellsondenmodell die Berechnung anhand eines Entscheidungsbaums modelliert, sodass der Isomorphismus leicht zu definieren ist. Das Zellsondenmodell würde meiner Meinung nach helfen, sowohl wenn Sie den Isomorphismus zwischen Datenstrukturimplementierungen berücksichtigen, als auch wenn Sie Datenstrukturspezifikationen berücksichtigen.

Informationen zum Zellsondenmodell finden Sie zB in der Übersicht von Miltersen. ( Zellsondenkomplexität: Eine Umfrage )

Wenn Sie mehr darüber sagen, warum Sie Isomorphismus zwischen Datenstrukturen definieren müssen, ist es möglicherweise möglich, weitere Hilfe bereitzustellen. Fühlen Sie sich frei, mir eine Nachricht zu senden.

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.