Ich habe einen großen Datensatz von Bäumen und möchte ihn durch Angabe eines Baumes (verbundener Untergraph) durchsuchen . Die Abfrage sollte alle Vorkommen des Baumes im Datensatz zurückgeben.
Gibt es dafür effiziente Algorithmen?
Ich dachte an so etwas wie Suffix-Arrays, aber die naive Codierung der Bäume als Zeichenfolgen (durch eine feste Durchlaufreihenfolge ihrer Knoten) funktioniert nicht, da der Suchbaum eine beliebige Form haben kann.
AKTUALISIEREN:
Einige Details zu den typischen Fällen, die ich erwarte:
Der Datensatz besteht aus mindestens Zehntausenden Bäumen mit jeweils etwa zwanzig bis dreißig Knoten. Die Bäume sind nicht binär, aber die typische Anzahl der Kinder pro Knoten ist klein (normalerweise nicht größer als vier oder fünf, obwohl sie in einigen entarteten Fällen etwa dreißig erreichen kann). Die Anzahl der Etiketten liegt bei Zehntausenden.
Ich brauche das für NLP-Anwendungen: Jeder Baum ist die Abhängigkeitsanalyse eines Satzes, jeder Knoten repräsentiert ein Wort Occourrence und jeder beschriftet ein Wörterbuchwort (mit etwas Dekoration).