Hiệu quả hơn về hằng số là rất phụ thuộc. Một mặt, trie cung cấp độ phức tạp thời gian nghiêm ngặt O(N)
để chèn tất cả các phần tử, trong khi bảng băm có thể phân rã thành thời gian tối thiểu trong trường hợp xấu nhất.
Mặt khác, cố gắng không hiệu quả khi nói đến cache - mỗi yêu cầu yêu cầu O(|S|)
truy cập ngẫu nhiên yêu cầu bộ nhớ, có thể làm giảm hiệu suất đáng kể.
Cả hai cách tiếp cận đều hợp lệ và tôi nghĩ có nhiều cân nhắc cần thực hiện khi chọn một cái khác như tối đa latency (nếu đó là hệ thống thời gian thực), thông lượng và thời gian phát triển.
Nếu hiệu suất của trường hợp trung bình là quan trọng, tôi khuyên bạn nên tạo một loạt tệp và chạy statistical analysis cách tiếp cận nào tốt hơn. Wilcoxon kiểm tra đã ký là bài kiểm tra giả thuyết thực tế hiện đang được sử dụng.
Về hệ thống nhúng: cả hai phương pháp vẫn còn hiệu lực, nhưng ở đây: Mỗi "Node" (hoặc bó nodes) trong Trie sẽ được trên đĩa chứ không phải sau đó trên RAM. Lưu ý rằng nó có nghĩa là cho trie O (| S |) truy cập ngẫu nhiên đĩa tìm kiếm mỗi mục, có thể bị chậm.
Đối với các giải pháp băm, bạn có 10MB, giả sử chúng có thể sử dụng 5MB trong số này cho bảng băm của con trỏ vào đĩa.Giả sử bạn có thể lưu trữ 500 địa chỉ đĩa khác nhau trên 5MB (phân tích bi quan ở đây), điều đó có nghĩa là bạn còn 5MB để tải một thùng sau mỗi lần tìm kiếm băm và nếu bạn có 500 nhóm, với hệ số tải là 0.5, điều đó có nghĩa là bạn có thể lưu trữ 500 * 5MB * 0,5 ~ = 1,25GB> 1GB dữ liệu của bạn, do đó, sử dụng giải pháp bảng băm, do đó, sử dụng băm - mỗi tìm kiếm sẽ chỉ cần O(1)
ngẫu nhiên đĩa tìm kiếm để tìm nhóm chứa chuỗi có liên quan.
Lưu ý rằng nếu nó vẫn chưa đủ, chúng tôi có thể khôi phục lại bảng con trỏ, rất giống với những gì đang được thực hiện trong paging table trong cơ chế bộ nhớ ảo.
Từ điều này chúng ta có thể kết luận, đối với các hệ thống nhúng, giải pháp băm tốt hơn cho hầu hết các trường hợp (lưu ý nó vẫn có thể bị trễ cao trong trường hợp xấu nhất, không có dấu đầu dòng bạc).
PS, radix tree thường là nhanh hơn và nhỏ gọn sau đó Trie, nhưng bị các tác dụng phụ tương tự của Trie so với băm bảng (mặc dù ít quan trọng, tất nhiên).
Khoảng bao nhiêu từ khác nhau mà bạn mong đợi ở đó trong tệp 1GB? – NPE
Tôi không thực sự mong đợi bất cứ điều gì đặc biệt. Vấn đề này có thể được viết lại theo thuật ngữ thế giới thực như tìm 10 thuật ngữ tìm kiếm hàng đầu từ danh sách tìm kiếm hoặc thứ gì đó thuộc loại đó, vì vậy tôi đoán nó sẽ theo một số phân bố xác suất, nhưng tôi không cài đặt. – user1921187