0

多数[1MM〜10MM]の文字列(「モデル番号」)で部分文字列検索を実行して、指定された部分文字列を含む「モデル番号」をすばやく特定するという問題があります。モデル番号は、次のような短い文字列です。

  1. ABB1924DEW
  2. WTW9400PDQB
  3. GLEW1874

目標は単純で、部分文字列が与えられると、すべてのモデル番号が部分文字列に一致することをすばやく見つけます。たとえば(上記のモデル番号の世界では)、文字列「EW」を検索すると、関数はGLEW1874とABB1924DEWを返します(両方にサブ文字列EWが含まれているため)。

データ構造は、特定の部分文字列で始まり、特定の部分文字列で終わるモデル番号のクイック検索をサポートできる必要もあります。たとえば、WTW ... Bのような検索を迅速に実行できる必要があります(WTWで始まりBで終わるため、WTW9400PDQBと一致します)

私が探しているのは、これらの検索を非常に効率的に行うメモリ内データ構造です。理想的には、Javaには、使用できる場所ですでに実行されている優れた(単純な)実装もあります。シンプル(そして高速)は、超複雑でわずかに高速なものよりも優れています。単純なアルゴリズム(それぞれで部分文字列検索を実行するすべての部品番号をループするだけ)は、私たちの目的には遅すぎます。私たちははるかに高速なものを探しています(okを所有しています)

それで、この問題の教科書のデータ構造/アルゴリズムは何ですか?

4

1 に答える 1

0

必要なのはSuffix Treeです。推奨するJavaのライブラリがわからないので、自分で実装する必要があるかもしれません

于 2012-12-05T18:48:14.383 に答える