Was ist ein Reißverschluss und in welcher Beziehung steht er zu einer baumartigen Struktur?

15

Ich war ein Kapitel in Lesen Lyah , die nicht wirklich Sinn für mich. Ich verstehe, dass Reißverschlüsse willkürlich eine baumähnliche Struktur durchqueren können, aber ich brauche eine Klärung darüber. Können Reißverschlüsse auf jede Datenstruktur verallgemeinert werden?

n_ary_crazy
quelle
3
Dies ist wahrscheinlich besser für die Informatik geeignet , obwohl die Arbeit zur Verallgemeinerung von Reißverschlüssen einige technische Maschinen umfasst.
Dave Clarke
6
Ein Reißverschluss ist etwas, das Sie immer geschlossen halten sollten, besonders wenn Sie einen Baum überqueren.
Andrej Bauer

Antworten:

14

Ein Reißverschluss ist im Allgemeinen eine Datenstruktur mit einem Loch darin. Reißverschlüsse werden zum Durchlaufen / Bearbeiten von Datenstrukturen verwendet, und das Loch entspricht dem aktuellen Fokus des Durchlaufs. Typischerweise wird auch ein Element der Datenstruktur betrachtet, so dass man einen (Listen-) Reißverschluss und eine Liste oder einen (Baum-) Reißverschluss und einen Baum hat. Der Reißverschluss ermöglicht es dem Programmierer, sich effizient in der Datenstruktur zu bewegen und sogar das Element im Fokus zu ersetzen. Das Reißverschlusspaar und das Element im Fokus erfüllen die Bedingung, dass durch Platzieren des Elements im Fokus im Loch die ursprüngliche Datenstruktur erhalten wird.

Reißverschlüsse können auf beliebige induktive Datentypen verallgemeinert werden. Das Konzept kann typindexiert definiert werden (siehe typindexierte Datentypen ). Sie beziehen sich auch auf die Idee der Ableitung einer Datenstruktur und wurden unter kategorietheoretischen Gesichtspunkten untersucht .

Dave Clarke
quelle
2

Ein Reißverschluss ist im Allgemeinen ein Paar Dinge: Es ist eine Struktur mit einem Loch, ein Fokus , der darstellt, wo in der Struktur Sie sich befinden, zusammen mit einem Pfad , der aufzeichnet, wie Sie zu diesem Fokus gelangt sind. (Dieser Weg ist LYAHs Brotkrümelspur.)

Der Pfad ist, wie Sie tatsächlich Änderungen an der Struktur vornehmen: "Gehe nach unten, gehe nach links, erhöhe den Wert". Durch wiederholtes Anwenden von "go up" ( go_upin Huets Artikel ) an dieser Stelle können Sie Ihre Schritte zurückverfolgen und erhalten eine neue, mutierte Kopie der ursprünglichen Struktur.

Sie können in der Tat auf andere Strukturen verallgemeinert werden:

Frank Shearar
quelle