根据定义BIDE的文章:
BIDE:频繁闭合序列的高效挖掘
定理 2(反向扫描搜索空间修剪(:
让前缀序列为 n序列,
Sp=e1e2...en
.如果∃i(1≤i≤n)
并且存在项目e′
出现在前缀的每个第 i 个半最大值周期中Sp
SDB
,我们可以安全地停止增长前缀Sp
。证明:
因为项目
e′
出现在前缀的每个第 i 个半最大值周期中Sp
SDB
,我们可以得到一个新的前缀S′p=e1e2...ei−1e′ei...en
(1<i≤n)
或S′p=e′e1e2...en(i=1)
,以及(Sp ⊂ S′p)
和(supSDB(Sp)=supSDB(S′p))
拿着。任何本地常e′′
项目。 前缀Sp
也是本地常见的项目。S′p
,与此同时(〈Sp,e′′〉⊂〈S′p,e′′〉)
和(supSDB(〈Sp,e′′〉)=supSDB(〈S′p,e′′〉))
保持。 这意味着没有希望挖掘频繁的闭合序列 前缀Sp
。
我知道,例如,如果我有一个AB
模式,并且我找到了一个e'
,例如C
,它处于模式的第二个最大周期,因此在包含AB
的每个序列的A
和B
之间,那么我可以停止增长AB
,因为我可以使用向后扩展来制作ACB
, 它将获得相同的支持,但更长。因此,我通过向前延伸AB
得到的任何模式肯定不会是封闭模式,因为其中缺少C
。这就是为什么我必须停止增长AB
并等待 PrefixSpan 通过向前扩展增长A -> AC -> ACB
。我不明白为什么在这种情况下必须将最大周期限制为半最大周期,以及为什么可以测试半最大周期。这篇文章没有写一个真正的解释。知道吗?你能写一个例子,通过使用最大周期而不是半最大周期来失去封闭的频繁模式吗?
我想我得到了答案。下面是一个示例,它在最大周期中有新事件,但在半最大值周期中没有:
[AxByB,AqBtyB], AB
2nd max period: [xBy,qBty] -> By
2nd semi-max period: [x,q] -> 0
所以根据它,我不能停止增长AB
,因为在半最大值时期没有e'
相同的支持。另一方面,在最大周期内有相同的支撑e'
,因此我们可以达到A{By}B
模式,从AB
向后延伸。但我发现我们也可以通过AB
向前扩展来达到AB{yB}
。随着更多的重叠,例如通过像ABAB
这样的模式,我们将得到相同的结论;我们可以将具有前向扩展的初始AB
增长为AB{*A*B}
,但我们不能在半最大周期A{*}B
中添加任何字符,因为我们无法通过从AB
向前扩展和前缀Span仅通过前向扩展来增长模式。因此,例如,如果我们在AB
的 2nd 半最大值周期中找到具有相同支撑的x
,那么我们必须停止增长AB
并等待 PrefixSpan 以A -> Ax -> AxB
方式增长AxB
,并继续增长AxB
模式而不是AB
模式。大洋洲。我们在这里寻找封闭的频繁模式,而不是频繁模式,因此我们可以安全地以这种方式修剪搜索空间。我不确定是否可以设计一种频繁的模式挖掘算法,该算法同时进行向前和向后扩展。也许以后我会尝试设计这样的算法来应对挑战,但现在 BIDE 适合我正在做的事情。