Một trong những cấu trúc dữ liệu yêu thích của tôi ở trường đại học là Trie. Đó là một cấu trúc dữ liệu tuyệt vời để giữ một tập hợp lớn các chuỗi nếu các tiền tố được chia sẻ. Tra cứu cũng tốt đẹp, vì chúng được thực hiện tại O (| length |) của chuỗi bất kể có bao nhiêu chuỗi trong tập hợp.Có phải Tries vẫn là một ý kiến hay về kiến trúc hiện đại?
Để so sánh, một cây cân bằng sẽ là O (log N) trong số lượng các mục đã đặt, cộng với số tiền bạn trả để so sánh. Bảng băm sẽ liên quan đến tính toán băm, so sánh, v.v.
Do đó đáng ngạc nhiên với tôi là there is no Trie implementation in the standard library of most languages.
Lý do duy nhất tôi có thể đưa ra là khả năng chi phí truy cập bộ nhớ làm cho nó quá đắt. Thay vì điều tra các vị trí O (log N) nếu thực hiện tra cứu cây, bạn không thực hiện các vị trí khác nhau O (| length |), với tất cả các hậu quả. Nếu các chuỗi dài, điều này có thể sẽ là quá nhiều.
Vì vậy, tôi tự hỏi: tôi chỉ mô tả một mối quan tâm là bao nhiêu? Bạn làm gì khi bạn cần lưu trữ một tập hợp lớn hoặc bản đồ của chuỗi?
"trong thư viện chuẩn của hầu hết các chức năng." ý của bạn là "trong thư viện chuẩn của hầu hết các ngôn ngữ _languages_?" –
Nếu bạn định đăng câu hỏi liên quan chặt chẽ (http://stackoverflow.com/questions/623892/where-do-i-find-a-standard-trie-based-map-implementation-in-java) bạn nên liên kết chúng lại với nhau. –
Tôi đã định, và sau đó đặt liên kết Wikipedia cho Trie thay vào đó ... Dù sao, bây giờ bạn đặt liên kết, vì vậy chúng tôi tốt. – Uri