1

Go で Minimalistic Acyclic Finite State Automaton (MA-FSA; 特定の種類の DAG) を実装しており、EOW (単語の終わり) を示すノードに追加のデータを関連付けたいと考えています。MA-FSA では、そのノードで終わる単語が複数ある可能性があるため、従来のアプローチは不可能です。そのため、代替手段として最小限の完全ハッシュ関数を検討しています。

Steve Hanov は、ブログ投稿の上部にある「修正」ボックスで、Lucchesi と Kowaltowski によるこの論文で説明されている方法を使用したと述べています。図 12 (19 ページ) を見ると、ハッシュ関数が説明されています。

8 行目では と を参照してFirstLetterPredecessor()ますが、それらが何であるかについては説明していません。または、私はそれを見ていません。彼らは何ですか?

私が理解できるのは、ツリーをたどり、Number各ノードから加算するだけだということだけですが、それはおそらく正しいとは言えません。紙が言うように、それは大きすぎる数値を生成し、1対1ではありません. 私は何かを誤解していますか?

4

2 に答える 2

1

DAWG の例を更新して、キーから値へのマップとして使用することを示しました。各ノードは、そこから到達可能な最終ノードの数 (それ自体を含む) を格納します。次に、トライがトラバースされると、スキップしたすべてのカウントを合計します。このように、トライの各単語には一意の番号があります。次に、配列内の数値を検索して、単語に関連付けられたデータを取得できます。

https://gist.github.com/smhanov/94230b422c2100ae4218

于 2014-11-05T18:58:57.550 に答える