原始数据中的模式发现

时间:2013-03-16 21:01:29

标签: algorithm pattern-matching sequence repeat

我希望构建一种算法来发现原始数据中的重复模式(非ASCII)。

可配置的最短和最大图案尺寸。要搜索的数据大小将为数万字节。

例如,给出以下数据:

AB CD 01 AB CD 02 EF 03 02 EF 04 02 EF

将输出遇到重复模式的次数。在这种情况下:

ABCD x2
02EF x3

我已经看过几种算法,比如后缀树,但通常看起来都是基于字符串的。

这将用Python编写,但我对所涉及的概念更感兴趣而不是实际的实现。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:4)

我会选择像Lempel-Ziv-Welch

这样的算法

算法的内部字典将保存模式字符串,输出(即压缩数据)将表示这些子字符串的位置。从数据中获取计数是微不足道的,并且算法也很容易实现。

请注意,数据压缩上下文中的“string”并不表示文本。二进制数据只是使用256个不同字节值的字母表。