Versuche ermöglichen die effiziente Speicherung von Elementlisten. Die Präfixe werden gemeinsam genutzt, um Platz zu sparen.
Ich suche nach einem ähnlichen Weg, um Bäume effizient zu lagern. Ich möchte in der Lage sein, die Mitgliedschaft zu überprüfen und Elemente hinzuzufügen. Es ist auch wünschenswert zu wissen, ob ein gegebener Baum ein Teilbaum einiger gespeicherter Bäume ist oder ob es einen gespeicherten Baum gibt, der ein Teilbaum des gegebenen Baums ist.
Ich würde normalerweise ungefähr 500 unausgeglichene Binärbäume mit einer Höhe von weniger als 50 speichern.
BEARBEITEN
Meine Anwendung ist eine Art Modellprüfer, der eine Art Memoisierung verwendet. Stellen Sie sich vor Ich habe einen Zustand und die folgenden Formeln: f = φ und g = ( φ ∨ & psgr; ) mit φ ein komplexes Unterformel zu sein, und sich vorstellen , ich möchte zunächst wissen , ob f in hält s . Ich überprüfe, ob ϕ gilt und nach einem langen Prozess erhalte ich, dass dies der Fall ist. Jetzt möchte ich wissen, ob g in s gilt . Ich möchte mich daran erinnern, dass f gilt und dass g ⇒ fso dass ich in s fast sofort ableiten kann .
Umgekehrt, wenn ich bewiesen habe, dass g nicht in t hält , dann möchte ich sagen, dass f nicht fast sofort in t hält .
Wir können eine Teilordnung auf Formeln aufbauen und haben iff g ⇒ f . Für jeden Zustand s speichern wir zwei Sätze von Formeln; L ( s ) speichert die maximalen Formeln, die gelten, und l ( s ) speichert die minimalen Formeln, die nicht gelten. Wenn ich nun einen Zustand s und eine Formel g gebe , kann ich sehen, ob ∃ f ∈ L ( s ) , f ⇒ g oder ob ∃ f ∈ l ( s ) In diesem Fall bin ich fertig und weiß direkt, ob g in s gilt .
Derzeit sind und l als Listen implementiert, und dies ist eindeutig nicht optimal, da ich alle gespeicherten Formeln einzeln durchlaufen muss. Wenn meine Formeln Sequenzen wären und die Teilreihenfolge "ein Präfix von" wäre, könnte sich ein Versuch als viel schneller erweisen. Leider haben meine Formeln eine baumartige Struktur, die auf ¬ , ∧ , einem Modaloperator und atomaren Sätzen basiert .
Wie @Raphael und @Jack hervorheben, könnte ich die Bäume sequentiellisieren, aber ich befürchte, dass dies das Problem nicht lösen würde, da die Teilreihenfolge, an der ich interessiert bin, nicht "ist ein Präfix von" entspricht.