Radix ağaçları ve Patricia denemeleri arasındaki fark nedir?


31

Radix ağaçları (aka sıkıştırılmış denemeler) ve Patricia deniyor, ama aslında aynı olup olmadıklarına dair çelişkili bilgiler buluyorum. Sayı tabanı ağacı, normal (sıkıştırılmamış) ağaçlardan, düğümler tek çocukken ebeveynleri ile düğümleri birleştirerek elde edilebilir. Bu aynı zamanda Patricia'nın denemesi için de geçerli. İki veri yapısı hangi yönlerden farklıdır?

Örneğin, NIST ikisini aynı şekilde listeler:

Patricia ağacı

(veri yapısı)

Tanım: Tek bir çocuk olan herhangi bir düğümün ebeveyni ile birleştirildiği bir ipucunun kompakt bir temsili.

Radix ağacı olarak da bilinir.

İnternetteki birçok kaynak aynı şeyi iddia ediyor. Ancak, görünüşe göre Patricia çalışır özel bir radix ağaçları durumda. Vikipedi girişi diyor ki:

PATRICIA denemeleri, radix eşittir 2 olan radix denemeleridir, bu, anahtarın her bir bitinin ayrı ayrı karşılaştırıldığı ve her bir düğümün iki yönlü (yani, sağdan sola) bir dal olduğu anlamına gelir.

Bunu gerçekten anlamıyorum. Aradaki fark sadece arama yaparken karşılaştırmalar yapıldığında mı? Her bir düğüm "iki yönlü bir dal" nasıl olabilir? ALPHABET_SIZEBelirli bir düğüm için mümkün olan en fazla dal bulunmamalı mı?

Birisi bunu netleştirebilir mi? Pratik amaçlar için, radix denemeleri tipik olarak Patricia'nın denemesiyle (ve dolayısıyla genellikle aynı kabul edilir) yapılır mı? Yoksa böyle bir genelleme yapılamaz mı?

Yanıtlar:


22

Bu yazıyı çok faydalı buldum .

Patricia denemeleri ve sayı tabanı ağaçları arasındaki farkı görmek için şunu anlamak önemlidir:

  • Patricia çalıştığından, sayı tabanı kavramı, 2'ye eşit yarıçaplı ağaçlardır.
  • r2r

Anahtarları bir gülümsemeyi , gülümsemeyi ve gülümsemeyi (bu sırayla) Patricia trie'ye yerleştirdiğimizi varsayalım . Bu anahtarların ikili gösterimi aşağıdaki gibidir:

Üç örnek anahtarın ikili gösterimi

Bu Not gülümsemek bir önek olan gülümsedi ikili gösterimini analiz, ve, görebiliriz birinci bit (soldan sağa) farklılık olduğunu 0 (ikinci satırda kırmızı vurgulanmış); Bu sebeple, gülümsedi olacak sol çocuk arasında gülümseme . Benzer şekilde, gülümsüyor olacak doğru çocuk arasında gülümsedi onlar, değeri olan bir bit aynı öneki paylaşan çünkü 1 (üçüncü sıradaki kırmızı vurgulanmıştır). Üç anahtarı taktıktan sonra ortaya çıkan Patricia trie şöyledir:

3 düğümlü Patricia trie

Yarıçap, örneğin 4 ise, iç düğümlerin en fazla dört çocuğu olabilirdi (kenarları sırasıyla 00, 01, 10 ve 11 olarak etiketlenmiş halde). Bu durumda, anahtarlar 1 değil, 2 bitlik parçalarla karşılaştırılır (Patricia'nın yaptığı gibi).


İki veri yapısı hangi yönlerden farklıdır?

Anladığım kadarıyla, tek fark Patricia denemesi durumunda 2'ye eşit olan sayı tabanıdır. Bu değer normal sayıdaki ağaçlarda 2 değerinde herhangi bir güç olabilir.

Aradaki fark sadece arama yaparken karşılaştırmalar yapıldığında mı?

günlük2R,R,

Her bir düğüm "iki yönlü bir dal" nasıl olabilir? ALPHABET_SIZEBelirli bir düğüm için mümkün olan en fazla dal bulunmamalı mı?

Sayı tabanı, sayı tabanı ağacının düğümlerinin sahip olabileceği maksimum çocuk sayısını belirler. Örneğin, radix = 2 olduğunda, her düğüm en fazla iki çocuğa sahip olabilir. Bu Patricia denemesi durumudur (ikili yarıçap ağaçları olarak da bilinir).

Radix denemeleri genellikle Patricia denemeleriyle uygulanır mu (ve dolayısıyla sıklıkla aynı kabul edilir)? Yoksa böyle bir genelleme yapılamaz mı?

Dürüst olmak gerekirse, bu soruya bir cevabım yok. Her iki veri yapısının aynı anda farklı yazarlar tarafından önerildiği anlaşılıyor. Farkında olmadığım tarihsel nedenlerden ötürü, her iki terim de bugün hala geçerlidir.


3

Patricia trie, PATRICIA algoritmasının alnümerik verilere uygulanmasından kaynaklanan ikili bir yarıçapıdır.

PATRICIA açılımı Alphanumeric Bilgi Kodlu Al için Pratik Algoritma [ Donald R. Morrison tarafından orijinal kağıt ]. Bu makale, START, STOP, END, L-PHRASE, ŞUBE, İKİZ ve ZİNCİR'den oluşan temel bir kelimeleri tanımlar. PATRICIA denemeleri, bu algoritmanın uygulanmasından kaynaklanan denemelerdir - ikili yarıçap, yarıçap, r'nin 2 [ wikipedia ] (ve üstü) olduğu yerlerde çalışır ; trie'yi geçerken her bir düğümde ikili bir seçim).

Bununla birlikte, pratikte Patricia terimi, benzer bir depolama ve arama alogoritmasının kullanıldığı r> = 2 (yani radix denemeleri) ile birlikte kullanılıyor gibi görünmektedir. Örneğin bu patricia olarak adlandırılır. Ethereum Patricia Merkle Trie r belirli düğüm 16 bir başka örnektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.