2011-01-19 58 views
39

Tôi nhớ từ xa rằng các lần thử không lưu toàn bộ dữ liệu trên mỗi nút, nhưng chỉ có hậu tố cho nút cha.Sự khác biệt giữa Tries và Trees?

Nơi cây lưu trữ toàn bộ dữ liệu, nhưng chỉ tự tổ chức dựa trên tiền tố dựa trên.

Vì vậy, thử trở nên nhỏ hơn, ví dụ như có thể nén từ điển rất tốt.

Vậy đó thực sự là sự khác biệt duy nhất?

Từ các ứng dụng thực tế, tôi nhớ rằng các lần thử nhanh hơn trong các truy vấn phạm vi? Thậm chí còn có các trường trr/lucene đặc biệt để tăng tốc các truy vấn phạm vi. Nhưng thế nào?

Sự khác biệt thực sự là gì và ưu điểm/nhược điểm của nỗ lực và cây cối là gì?

Trả lời

50

Cây là cấu trúc chung của các nút đệ quy. Có rất nhiều loại cây. Phổ biến là binary treebalanced tree. A Trie là một loại cây, được gọi bằng nhiều tên bao gồm cây tiền tố, cây tìm kiếm kỹ thuật số và cây truy xuất (do đó tên là 'trie').

Mỗi loại cây có mục đích, cấu trúc và hành vi khác nhau. Ví dụ, một cây nhị phân lưu trữ một tập hợp các mục có thể so sánh (ví dụ như số). Do đó, nó có thể được sử dụng để lưu trữ một tập hợp các số hoặc để lập chỉ mục các dữ liệu khác có thể được biểu diễn bằng các số (ví dụ: các đối tượng có thể được băm). Cấu trúc của nó được sắp xếp để nó có thể được tìm kiếm nhanh chóng để tìm một mục duy nhất. Các cấu trúc cây khác, chẳng hạn như cây cân bằng, tương tự về nguyên tắc.

A trie đại diện cho một chuỗi trong cấu trúc của nó. Nó rất khác nhau ở chỗ nó lưu trữ chuỗi các giá trị chứ không phải là các giá trị đơn lẻ riêng lẻ. Mỗi cấp độ đệ quy đều nói 'giá trị của mục I của danh sách đầu vào' là bao nhiêu. Điều này khác với cây nhị phân so sánh giá trị được tìm kiếm duy nhất cho mỗi nút.

+0

Không phải là trie như kiểu què? Cây nhị phân có đánh bại trie ở mọi khía cạnh ngoại trừ không gian lưu trữ không? – Pacerier

+0

Có một vị trí cho mọi cấu trúc dữ liệu. những gì về việc tìm kiếm tất cả các chuỗi với cùng một tiền tố? O (n) truy cập? – Joe

+1

Không phải cây cũng sẽ làm điều đó sao? Hãy có 1 tỷ mục, tìm tiền tố 20. Trie thực hiện nó trong 20 bước. Cây làm điều đó trong lg 1B/lg 2 = 30 bước. Bây giờ với các mục 1B giống nhau, chúng ta tìm thấy tiền tố là 40. Cây vẫn thực hiện nó trong 30 bước, nhưng trie thực hiện nó ở 40. Với tiền tố 100, trie bây giờ mất 100 bước trong khi cây vẫn mất 30. – Pacerier

1

A cây nhị phân hoặc bst thường được sử dụng để lưu trữ giá trị bằng số. Độ phức tạp thời gian trong bst là O (log (n)) để chèn, xóa và tìm kiếm. Mỗi nút trong cây nhị phân có tối đa 2 nút con.

Trie: Mỗi nút của trie bao gồm nhiều nhánh. Mỗi chi nhánh đại diện cho một nhân vật có thể có của các phím. Chúng ta cần đánh dấu nút cuối cùng của mỗi phím như nút lá. Giá trị trường nút trie sẽ được sử dụng để phân biệt nút là nút lá (có các cách sử dụng khác của trường giá trị)

Để tìm hiểu về các thử tham khảo hướng dẫn topcoder này. https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/

Các vấn đề liên quan