Sự khác biệt giữa cây radix và Patricia cố gắng là gì?


31

Tôi đang tìm hiểu về cây radix (còn gọi là thử nén) và Patricia thử, nhưng tôi đang tìm thấy thông tin mâu thuẫn về việc chúng có thực sự giống nhau hay không. Một cây cơ số có thể được lấy từ một trie bình thường (không nén) bằng cách hợp nhất các nút với cha mẹ của chúng khi các nút là con duy nhất. Điều này cũng giữ cho Patricia cố gắng. Hai cấu trúc dữ liệu khác nhau như thế nào?

Ví dụ, NIST liệt kê hai cái giống nhau:

Cây Patricia

(cấu trúc dữ liệu)

Định nghĩa: Một đại diện nhỏ gọn của một trie trong đó bất kỳ nút nào là con duy nhất được hợp nhất với cha của nó.

Còn được gọi là cây radix.

Nhiều nguồn trên web tuyên bố như vậy. Tuy nhiên, rõ ràng Patricia cố gắng là một trường hợp đặc biệt của cây radix. Mục nhập Wikipedia cho biết:

Các lần thử của PATRICIA là các lần thử cơ số với cơ số bằng 2, có nghĩa là mỗi bit của khóa được so sánh riêng lẻ và mỗi nút là một nhánh hai chiều (nghĩa là trái so với phải).

Tôi không thực sự hiểu điều này. Có phải sự khác biệt chỉ trong cách so sánh được thực hiện khi thực hiện tra cứu? Làm thế nào mỗi nút có thể là một "nhánh hai chiều"? Không nên có nhiều ALPHABET_SIZEnhánh nhất có thể cho một nút nhất định?

Ai đó có thể làm rõ điều này? Đối với các mục đích thực tế, các cơ số cố gắng thường được thực hiện như Patricia cố gắng (và, do đó, thường được coi là giống nhau)? Hoặc không thể khái quát hóa như vậy?

Câu trả lời:


22

Tôi thấy bài viết này rất hữu ích.

Để thấy sự khác biệt giữa cây cố Patricia và cây cơ số, điều quan trọng là phải hiểu:

  • Khái niệm về cơ số , vì Patricia cố gắng là những cây cơ số có cơ số bằng 2.
  • Các khóa được xử lý: như các luồng bit . Các khóa được so sánh các bit tại một thời điểm, trong đó là cơ số của bộ ba.r2r

Giả sử rằng chúng ta chèn các phím cười , mỉm cườimỉm cười (theo thứ tự này) trong một bộ ba Patricia. Biểu diễn nhị phân của các khóa này như sau:

Biểu diễn nhị phân của ba khóa ví dụ

Lưu ý rằng nụ cười là tiền tố của nụ cười và khi phân tích biểu diễn nhị phân, chúng ta có thể thấy rằng bit đầu tiên khác (từ trái sang phải) là 0 (được tô màu đỏ ở hàng thứ hai); vì lý do này, nụ cười sẽ là đứa con của nụ cười . Tương tự, nụ cười sẽ là đứa con đúng của nụ cười vì chúng có chung tiền tố lên đến một bit có giá trị là 1 (được tô màu đỏ ở hàng thứ ba). Kết quả Patricia trie sau khi chèn ba phím là như sau:

Patricia trie với 3 nút

Ví dụ, nếu cơ số là 4, thì các nút bên trong có thể có nhiều nhất là bốn con (với các cạnh được dán nhãn lần lượt là 00, 01, 10 và 11). Trong trường hợp này, các khóa sẽ được so sánh bằng các đoạn 2 bit chứ không phải 1 (như trong Patricia cố gắng).


Hai cấu trúc dữ liệu khác nhau như thế nào?

Theo hiểu biết của tôi, sự khác biệt duy nhất là cơ số, bằng 2 trong trường hợp Patricia thử. Giá trị này có thể là bất kỳ lũy thừa 2 trong các cây cơ số thông thường.

Có phải sự khác biệt chỉ trong cách so sánh được thực hiện khi thực hiện tra cứu?

Trong cả hai cấu trúc dữ liệu, hoạt động so sánh là bitwise. Tuy nhiên, số lượng bit được kiểm tra nguyên tử thay đổi tùy theo cơ số. Trong trường hợp Patricia thử, các bit được so sánh riêng lẻ (vì radix = 2). Điều này không nhất thiết là trường hợp trong cây cơ số. Nói chung, các bit được kiểm tra theo các khối có kích thước , trong đó là cơ số của bộ ba.log2RR

Làm thế nào mỗi nút có thể là một "nhánh hai chiều"? Không nên có nhiều ALPHABET_SIZEnhánh nhất có thể cho một nút nhất định?

Cơ số thiết lập số lượng con tối đa mà các nút của cây cơ số có thể có. Ví dụ, khi radix = 2, mỗi nút có thể có tối đa hai con. Đây là trường hợp Patricia thử (còn được gọi là cây cơ số nhị phân).

Các cơ số cố gắng thường được thực hiện như Patricia cố gắng (và, do đó, thường được coi là giống nhau)? Hoặc không thể khái quát hóa như vậy?

Thành thật mà nói, tôi không có câu trả lời cho câu hỏi này. Dường như cả hai cấu trúc dữ liệu đã được đề xuất cùng một lúc bởi các tác giả khác nhau. Vì những lý do lịch sử mà tôi không biết, cả hai điều khoản vẫn còn tồn tại đến ngày nay.


3

Một Patricia trie là một bộ ba cơ số nhị phân xuất phát từ việc áp dụng thuật toán PATRICIA cho dữ liệu chữ và số.

PATRICIA là viết tắt của Thuật toán thực hành để lấy thông tin được mã hóa bằng chữ và số [ bài báo gốc của Donald R. Morrison ]. Bài viết định nghĩa một từ vựng cơ bản bao gồm START, STOP, END, L-PHRASE, BRUC, TWIN và CHAIN. Nỗ lực của PATRICIA là những lần thử kết quả từ việc áp dụng thuật toán này - cơ số nhị phân thử trong đó cơ số, r, là 2 [ wikipedia ] (và ở trên); một lựa chọn nhị phân tại mỗi nút khi đi qua bộ ba).

Tuy nhiên, trong thực tế, thuật ngữ Patricia dường như được sử dụng với r> = 2 (nghĩa là cơ số cố gắng), trong đó một thuật ngữ lưu trữ và tìm kiếm tương tự được sử dụng. Ví dụ, điều này có tiêu đề là patricia. Các Ethereum Patricia Merkle Trie là một ví dụ khác, trong đó r là 16 tại các nút nhất định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.