4

生データ(非ASCII)の繰り返しパターンを発見するためのアルゴリズムを構築しようとしています。

構成可能な最短および最大のパターンサイズ。検索するデータのサイズは数万バイトになります。

たとえば、次のデータがあるとします。

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

繰り返しパターンに遭遇する回数を出力します。この場合:

ABCD x2
02EF x3

接尾辞木などのいくつかのアルゴリズムを見てきましたが、一般的には文字列ベースのようです。

これはPythonで記述されますが、実際の実装よりも、関連する概念に関心があります。

助けてくれて本当にありがとうございます。

4

1 に答える 1

5

Lempel-Ziv-Welch のようなアルゴリズムを使用します

アルゴリズムの内部ディクショナリはパターン文字列を保持し、出力 (つまり、圧縮されたデータ) はそれらの部分文字列の場所を表します。データからカウントを取得するのは簡単で、アルゴリズムの実装もかなり簡単です。

データ圧縮コンテキストの「文字列」はテキストを意味しないことに注意してください。バイナリ データは、256 の異なるバイト値のアルファベットを使用しているだけです。

于 2013-03-16T22:40:57.897 に答える