В информатике частый анализ поддеревьев — это проблема поиска всех шаблонов в заданной базе данных, поддержка которых (метрика, связанная с числом их появлений в других поддеревьях) превышает заданный порог. [ 1] Это более общая форма проблемы максимального согласия поддеревьев . [2]
Частое извлечение поддеревьев — это проблема поиска всех шаблонов, «поддержка» которых превышает определенный уровень, указанный пользователем, где «поддержка» рассчитывается как количество деревьев в базе данных, которые имеют по крайней мере одно поддерево, изоморфное данному шаблону. [3]
Проблема частого извлечения поддеревьев формально определена как: [1]
В 2002 году Мохаммед Дж. Заки представил TreeMiner — эффективный алгоритм для решения часто встречающейся проблемы извлечения поддеревьев, который использовал «список областей» для представления узлов дерева и который был противопоставлен PatternMatcher — алгоритму, основанному на сопоставлении шаблонов. [4]
Поддерево является индуцированным поддеревом тогда и только тогда, когда и . Другими словами, любые два узла в S, которые напрямую соединены ребром, также напрямую соединены в T. Для любых узлов A и B в S, если узел A является родителем узла B в S, то узел A также должен быть родителем узла B в T.
Поддерево является вложенным поддеревом тогда и только тогда, когда и два конечных узла любого ребра в S находятся на одном и том же пути от корня до листового узла в T. Другими словами, для любых узлов A и B в S, если узел A является родителем узла B в S, то узел A должен быть предком узла B в T. Любые индуцированные поддеревья также являются вложенными поддеревьями, и, таким образом, концепция вложенных поддеревьев является обобщением индуцированных поддеревьев. Как таковые вложенные поддеревья характеризуют скрытые закономерности в дереве, которые отсутствуют в традиционном индуцированном поддеревьевом майнинге. Поддерево размера k часто называют k-поддеревом.
Поддержка поддерева — это количество деревьев в базе данных, содержащих поддерево. Поддерево является частым, если его поддержка не меньше заданного пользователем порога (часто обозначается как minsup). Цель TreeMiner — найти все вложенные поддеревья, которые имеют поддержку не ниже минимальной.
Существует несколько различных способов кодирования древовидной структуры. TreeMiner использует строковые представления деревьев для эффективной обработки деревьев и поддержки подсчета. Изначально строка установлена в . Начиная с корня дерева, метки узлов добавляются к строке в порядке поиска в глубину. -1 добавляется к строке всякий раз, когда процесс поиска возвращается от дочернего элемента к его родительскому элементу. Например, простое двоичное дерево с корнем, обозначенным как A, левым дочерним элементом, обозначенным как B, и правым дочерним элементом, обозначенным как C, может быть представлено строкой AB -1 C -1.
Говорят, что два k-поддерева находятся в одном и том же классе эквивалентности префиксов, если их строковые представления идентичны до (k-1)-го узла. Другими словами, все элементы в классе эквивалентности префиксов отличаются только последним узлом. Например, два дерева со строковыми представлениями AB -1 C -1 и AB -1 D -1 находятся в классе эквивалентности префиксов AB с элементами (C, 0) и (D, 0). Элемент префиксного класса определяется меткой узла, парной с индексом глубины, начинающимся с 0, узла, к которому он прикреплен. В этом примере оба элемента префиксного класса AB прикреплены к корню, который имеет индекс 0.
Область действия узла A задается парой чисел , где l и r — минимальный и максимальный индекс узла в поддереве с корнем в A. Другими словами, l — индекс A, а r — индекс самого правого листа среди потомков A. Таким образом, индекс любого потомка A должен лежать в области действия A, что будет очень полезным свойством при подсчете поддержки поддеревьев.
Частые шаблоны поддеревьев следуют антимонотонному свойству. Другими словами, поддержка k-поддерева меньше или равна поддержке его (k-1)-поддеревьев. Только супершаблоны известных частых шаблонов могут быть частыми. Используя это свойство, кандидаты k-поддеревьев могут быть сгенерированы на основе частых (k-1)-поддеревьев через расширение префиксного класса. Пусть C будет классом эквивалентности префикса с двумя элементами (x,i) и (y,j). Пусть C' будет классом, представляющим расширение элемента (x,i). Элементы C' добавляются путем выполнения операции соединения на двух (k-1)-поддеревьях в C. Операция соединения на (x,i) и (y,j) определяется следующим образом.
Эта операция повторяется для любых двух упорядоченных, но не обязательно различных элементов в C для построения расширенных префиксных классов k-поддеревьев.
TreeMiner выполняет генерацию кандидатов в глубину с использованием представления списка областей поддеревьев для ускорения подсчета поддержки. K-поддерево S может быть представлено триплетом (t,m,s), где t — идентификатор дерева, из которого происходит поддерево, m — метка соответствия префикса, а s — область последнего узла в S. В зависимости от того, как S встречается в разных деревьях в базе данных, S может иметь разное представление списка областей. TreeMiner определяет объединение списка областей , которое выполняет расширение класса в представлении списка областей поддеревьев. Два элемента (x,i) и (y,j) могут быть объединены, если существуют два поддерева , удовлетворяющие любому из следующих условий.
Отслеживая отдельные идентификаторы деревьев, используемые в тестах списка областей, можно эффективно рассчитать поддержку поддеревьев.
Домены, в которых частое извлечение поддеревьев полезно, как правило, включают сложные отношения между сущностями данных: например, анализ документов XML часто требует частого извлечения поддеревьев. [1] Другой домен, где это полезно, — это проблема извлечения данных об использовании веб-сайта: поскольку действия, предпринимаемые пользователями при посещении веб-сайта, могут быть записаны и классифицированы многими различными способами, сложные базы данных деревьев необходимо анализировать с частым извлечением поддеревьев. [4] Другие домены, в которых частое извлечение поддеревьев полезно, включают вычислительную биологию , [5] [6] анализ структуры РНК, [6] распознавание образов, [7] биоинформатику, [8] и анализ базы данных KEGG GLYCAN. [9]
Проверка того, поддерживает ли шаблон (или транзакция) заданный подграф, является NP-полной задачей, поскольку это NP-полный экземпляр задачи изоморфизма подграфа . [7] Кроме того, из-за комбинаторного взрыва , по словам Лея и др., «извлечение всех частых шаблонов поддеревьев становится невозможным для большой и плотной базы данных деревьев». [10]