У мене великий набір дерев, і я хотів би здійснити пошук, вказавши деревце (підключений підграф). Запит повинен повертати всі виникнення дерева в наборі даних.
Чи є ефективні алгоритми для цього?
Я думав про щось на зразок суфіксних масивів, однак, наївне кодування дерев як струни (за допомогою фіксованого впорядкованого впорядкування їхніх вузлів) не буде працювати, оскільки пошуковий файл може мати будь-яку довільну форму.
ОНОВЛЕННЯ:
Дещо про типові екземпляри, які я очікую:
Набір даних буде складатися щонайменше з десятків тисяч дерев, кожне з яких складається приблизно з двадцяти до тридцяти вузлів. Дерева не будуть бінарними, але типова кількість дітей на вузол буде невеликою (зазвичай не більша чотирьох-п’яти, хоча в деяких вироджених випадках може досягати приблизно тридцяти). Кількість етикеток складе десятки тисяч.
Мені це потрібно для програм NLP: кожне дерево буде розбором залежності речення, кожен вузол, що представляє слово виникнення, а кожен мітка словника (з деякою прикрасою).