袋鼠方法允许模式匹配与最多K个不匹配

时间:2012-07-25 14:43:32

标签: design-patterns matching

我到处搜索,但没有找到关于袋鼠方法的清晰解释。只有我发现的是一些ppts,但对我来说没用,因为我之前没有读过袋鼠方法。这些ppts用于修改袋鼠方法。

如果有人能提供关于袋鼠方法或视频教程链接的阅读材料,请给我一个很好的帮助。

提前

thanx

1 个答案:

答案 0 :(得分:4)

设T = t1t2 ... tn,P = p1p2 ... pm

k =允许<错误

预处理T $ 1P $ 2的后缀树[时间:O(nlog | Sigma | by Weiner算法构造后缀树)Sigma是语言。

在我们刚刚创建的树上预处理LCA。 [时间:O(n)]

在所有节点上运行并在每个节点上写入它从根开始的高度。 [时间:我们有O(n)个节点]

迭代所有后缀(=叶子)并为每个后缀Si初始化一个错误计数器并查询h1 =高度(LCA(Si,P)),如果h> = m我们将i添加到解决方案中,否则: err ++并且如果err&lt; = k继续检查h2 = height(LCA(Si [h1 + 1,n],P [h1 + 1,m]))。

[时间:在所有后缀上运行=&gt; O(n),对于每个后缀运行高达k + 1次=&gt; O(KN)]

希望这有助于......

布什