Генерация кандидатов
Последовательность, состоящую из k элементов будем называть k-последовательностью. Пусть Lk - содержит все частые k-последовательности, а Ck набор кандидатов из k-последовательностей. В начале каждого шага мы располагаем Lk − 1 - набором частых (k-1)-последовательностей. Необходимо на их основе построить набор всех частых k-последовательностей. Введём определение смежной подпоследовательности. При наличии последовательности s = < s1s2...sn > и подпоследовательности c, c будет являться смежной последовательностью s, если соблюдается одно из условий:
c получается из s при удалении элемента из s первого (s1) или последнего (sn).
c получается из s при удалении одного объекта из элемента si, если в его составе не менее двух объектов.
c - смежная подпоследовательность c`, если c` смежная подпоследовательность s.
Например, дана последовательность s=<(1,2)(3,4)(5)(6)>. Последовательности <(2)(3,4)(5)>, <(1,2)(3)(5)(6)> и <(3)(5)> являются смежными подпоследовательностями s.
А последовательности <(1,2)(3,4)(6)> и <(1)(5)(6)> таковыми не являются. Генерация кандидатов происходит в две фазы.
Фаза объединения. Мы создаём последовательности кандидаты путём объединения двух последовательностей Lk − 1.
Последовательность s1 объединяется с s2 если подпоследовательность, образующаяся путём удаления объекта из первого элемента s1 будет та же, что и в случае удаления объекта из последнего элемента s2. Объединение последовательностей происходит путём добавления к s1 последнего элемента из s2. При объединении L1 c L1 нам нужно также добавить элемент к s2 как дополнительный объект к последнему элементу, так и в качестве отдельного элемента, так как <(x y)> и <(x)(y)> дадут одну и ту же последовательность <(y)> при удалении первого объекта. Таким образом исходные последовательности s1 и s2 являются смежными подпоследовательностями для новой последовательности-кандидата.
Фаза очистки. Удаляем последовательности-кандидаты которые содержат смежные (k-1)-подпоследовательности, чья поддержка меньше минимально допустимой. Если параметр max-gap не задан, то также удаляются кандидаты, содержащие последовательности (в т.ч. не смежные), поддержка которых меньше минимально допустимой.
Пример.
Частые 3-последовательности |
Кандидаты 4-последовательности |
|||
После объединения |
После очистки |
|||
|
|
<(1,2)(3,4)> |
||
В таблице показаны L3 и C4 после завершения обеих фаз. В фазе объединения последовательность <(1,2)(3)> объединяется с <(2)(3,4)> и образует <(1,2)(3,4)>, а с последовательностью <(2)(3)(4)> - <(1,2)(3)(5)>. Оставшиеся последовательности не объединяются друг с другом. Например, последовательность <(1,2)(4)> не может быть объединена ни с одной другой из L3 так как не существует последовательности вида <(2)(4 x)> или <(2)(4)(x)>. В фазе очистки последовательность <(1,2)(3)(5)> удаляется, поскольку её смежная подпоследовательность <(1)(3)(5)> не входит в L3, а значит не является часто встречающейся.
