Diese Frage ist inspiriert von einer weiteren Frage zu den Neuerungen in PFDS seit der Veröffentlichung von Okasakis Buch im Jahr 1998 .
Ich beginne mit zwei Fragen, die ich habe:
- Gibt es eine rein funktionale Set-Datenstruktur, die sich der Geschwindigkeit von Hash-Tabellen nähert? Versuche sind noch nicht da.
- Gibt es rein funktionale Fingerbäume mit O (1) -Anhang? Das bisher beste ist O (lg lg n), entwickelt von Kaplan und Tarjan.
Welche anderen rein funktionalen Datenstrukturprobleme sind offen?
Antworten:
Ich werde die Frage etwas großzügig interpretieren. Bei Datenstrukturen im Okasaki-Stil ist die Speicherung eine Form der impliziten Mutation, die sich nebenbei auf die Laufzeit auswirkt. Daher werde ich mich mit der Frage befassen, ob es sich um persistente Datenstrukturen im engeren Sinne handelt und nicht um Datenstrukturen mit einer rein funktionalen Implementierung, die eine Teilmenge der ersteren sind. Mit streng meine ich, dass Sie in der Lage sein sollten, auf ältere Versionen einer Datenstruktur ohne Abstriche zuzugreifen, der Versionsbaum kann beliebig verzweigen usw.
In diesem Zusammenhang betrachte ich die anhaltende UNION-FIND als ein wichtiges offenes Problem. Es gibt das Conchon-Filliâtre-Papier, das im anderen Thread erwähnt wurde. Ein Kommentator hat bereits ein Problem mit seinem sogenannten persistenten Array angesprochen: Es ist wirklich nur halbpersistent. Angenommen, Sie ersetzen es durch einen Hash-Versuch oder ein anderes wirklich beständiges Array, das sich im schlimmsten (und vermutlich durchschnittlichen) Fall besser verhält, im besten Fall jedoch schlechter. Da bleibt noch ein wichtiges Thema offen:
Das Papier gibt einen formalen Beweis für die Richtigkeit in Coq. Sie können sich jedoch weder formal noch informell mit der amortisierten Komplexität befassen. Es ist sehr viel nicht mir klar, dass die hinter den Kulissen Mutation führt zu dem erwarteten amortisierten Komplexität in allen Fällen kompliziert. Als ich das letzte Mal darüber nachdachte, war ich zuversichtlich, ein Gegenbeispiel konstruieren zu können, wenn ich mich anstrengte. Auch wenn ich in diesem letzten Teil falsch liege, ist das Fehlen einer angemessenen Analyse eine große Lücke. Es ist klar, dass Trajans klassische Amortisationsanalyse von UNION-FIND nicht direkt übertragen wird.
quelle
Hier ist eins:
Was ist das rein funktionale Äquivalent einer schwachen Hash-Tabelle?
quelle