基数ツリーとパトリシアの試行の違いは何ですか?


31

私は基数ツリー(別名圧縮試行)とパトリシア試行について学習していますが、実際に同じであるかどうかについて矛盾する情報を見つけています。基数ツリーは、ノードが唯一の子ノードである場合にノードをその親とマージすることにより、通常の(圧縮されていない)トライから取得できます。これはパトリシアの試みにも当てはまります。2つのデータ構造はどのように異なっていますか?

たとえば、NISTは2つを同じものとしてリストします。

パトリシアツリー

(データ構造)

定義:唯一の子であるノードがその親とマージされるトライのコンパクトな表現。

基数ツリーとも呼ばれます。

ウェブ上の多くの情報源は同じことを主張しています。しかし、どうやらパトリシアの試みは基数の木の特殊なケースです。ウィキペディアのエントリは言う:

PATRICIAの試行は、基数が2の基数の試行です。つまり、キーの各ビットが個別に比較され、各ノードが双方向(つまり、左対右)ブランチになります。

私はこれを本当に理解していません。違いは、ルックアップを行う際の比較の方法だけですか?各ノードを「双方向ブランチ」にするにはどうすればよいですか?ALPHABET_SIZE与えられたノードに対して可能な限り多くのブランチがあるべきではありませんか?

誰かがこれを明確にすることはできますか?実用的な目的のために、基数の試行は通常、パトリシアの試行として実装されていますか?または、そのような一般化を行うことはできませんか?

回答:


22

私が見つかりました。この記事は非常に役立ちます。

パトリシアの試行と基数ツリーの違いを確認するには、理解することが重要です。

  • パトリシアの試行が基数2に等しい基数ツリーであるため、基数の概念。
  • r2r

Patriciaトライにキーsmilesmiled、およびsmiles(この順序で)を挿入するとします。これらのキーのバイナリ表現は次のとおりです。

3つのサンプルキーのバイナリ表現

そのノート笑顔の接頭辞である微笑んバイナリ表現を分析し、そして、我々が見ることができる最初のビット(左から右に)異なっていること0(2行目の赤色で強調)。このため、smiledsmileの左の子になります。同様に、笑顔であろう右の子笑った彼らは、その値であるビットに同じプレフィックスを共有するため、1(第3行目に赤で強調します)。3つのキーを挿入した後の結果のPatriciaトライは次のとおりです。

3つのノードを持つPatriciaトライ

たとえば、基数が4の場合、内部ノードは最大で4つの子を持つことができます(それぞれの端に00、01、10、および11のラベルが付けられます)。この場合、キーは1ビットではなく2ビットのチャンクで比較されます(パトリシアの試みのように)。


2つのデータ構造はどのように異なっていますか?

私の理解では、唯一の違いは基数であり、パトリシアの試行の場合は2に等しい。この値には、通常の基数ツリーの2の累乗を指定できます。

違いは、ルックアップを行う際の比較の方法だけですか?

ログ2RR

各ノードを「双方向ブランチ」にするにはどうすればよいですか?ALPHABET_SIZE与えられたノードに対して可能な限り多くのブランチがあるべきではありませんか?

基数は、基数ツリーのノードが持つことができる子の最大数を確立します。たとえば、基数= 2の場合、各ノードは最大で2つの子を持つことができます。これは、パトリシアの試行(バイナリ基数ツリーとも呼ばれます)の場合です。

通常、基数の試行はパトリシアの試行として実装されていますか(したがって、多くの場合同じと見なされますか)?または、そのような一般化を行うことはできませんか?

正直に言うと、この質問に対する答えはありません。両方のデータ構造が異なる著者によってほぼ同時期に提案されたようです。私が知らない歴史的な理由から、両方の用語は今日でも有効です。


3

パトリシアトライは、英数字データにPATRICIAアルゴリズムを適用した結果として得られるバイナリ基数トライです。

PATRICIAは、英数字でコード化された情報を取得するための実用的なアルゴリズム [ Donald R. Morrisonによるオリジナルペーパー ]の略です。このペーパーでは、START、STOP、END、L-PHRASE、BRANCH、TWIN、およびCHAINで構成される基本的な語彙を定義しています。PATRICIAの試行は、このアルゴリズムの適用から生じる試行です。基数rが2 [ wikipedia ](およびそれ以上)であるバイナリ基数試行。トライを横断するときの各ノードでのバイナリ選択)。

ただし、実際には、パトリシアという用語はr> = 2で使用されるようです(つまり、基数の試行)。同様のストレージと検索のアルゴリズムが使用されます。たとえば、これにはpatriciaというタイトルが付いています。イーサリアムパトリシアマークルトライは、 rは特定のノードで16である別の例です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.