J'ai un grand ensemble de données d'arbres et je voudrais le rechercher en spécifiant un treelet (sous-graphe connecté). La requête doit renvoyer toutes les occurrences du treelet dans l'ensemble de données.
Existe-t-il des algorithmes efficaces pour le faire?
Je pensais à quelque chose comme des tableaux de suffixes, cependant, encoder naïvement les arbres comme des chaînes (par un ordre de traversée fixe de leurs nœuds) ne fonctionnera pas, car le treelet de recherche peut avoir n'importe quelle forme arbitraire.
MISE À JOUR:
Quelques détails sur les cas typiques que j'attends:
L'ensemble de données comprendra au moins des dizaines de milliers d'arbres, chacun composé d'environ vingt à trente nœuds. Les arbres ne seront pas binaires, mais le nombre typique d'enfants par nœud sera petit (généralement pas plus grand que quatre ou cinq, bien que dans certains cas dégénérés il puisse atteindre une trentaine). Le nombre d'étiquettes sera de plusieurs dizaines de milliers.
J'en ai besoin pour les applications PNL: chaque arbre sera l'analyse de dépendance d'une phrase, chaque nœud représentant une occurrence de mot et chaque étiquette un mot de dictionnaire (avec une certaine décoration).