允许使用最多K个失配的模式匹配的Kangaroo方法



我到处找,但没有找到关于Kangaroo方法的好的、清晰的解释。只是我发现了一些PPT,但对我来说毫无用处,因为我以前没有读过袋鼠法。这些PPT是为了修改袋鼠法。

如果有人能给我提供袋鼠法的阅读材料或视频教程链接,那将是一个很大的帮助。

乙醇提前

设T=t1t2…tn,p=p1p2…pm

k=#允许的错误

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

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

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

遍历所有后缀(=leaves),对于每个后缀Si初始化一个错误计数器并查询h1=height(LCA(Si,p)),如果h>=m,我们将i添加到解决方案中,否则:err++,如果err<k继续检查h2=高度(LCA(Si[h1+1,n],P[h1+1,m]))。

[时间:在所有后缀上运行=>O(n),每个后缀最多运行k+1次=>O(kn)]

希望这能有所帮助。。。

布什

最新更新