17

Tôi chỉ muốn biết, khi một cây hậu tố vượt trội hơn một mảng hậu tố nâng cao.Mảng hậu tố và cây hậu tố

Sau khi đọc Replacing suffix trees with enhanced suffix arrays tôi không thấy lý do nào để sử dụng cây hậu tố nữa. Một số phương pháp có thể phức tạp, nhưng bạn có thể làm mọi thứ với một mảng hậu tố, những gì bạn có thể làm với một cây hậu tố và bạn cần độ phức tạp tương tự nhưng ít bộ nhớ hơn.

Một survey thậm chí cho thấy, rằng mảng hậu tố là nhanh hơn, bởi vì chúng được bộ nhớ cache thân thiện hơn, và không sản xuất bỏ lỡ bộ nhớ cache càng nhiều, sau đó cây hậu tố (do bộ nhớ cache có thể dự đoán việc sử dụng mảng tốt hơn nhiều, sau đó trên đệ quy cấu trúc cây).

Vì vậy, có ai biết lý do để chọn cây hậu tố trên một mảng hậu tố không?

chỉnh sửa Ok, nếu bạn biết thêm cho tôi biết, cho đến nay nó:

  • Suffixarrays không cho phép xây dựng trên dòng
  • Một số mô hình phù hợp với các thuật toán chạy nhanh hơn trên Suffixtrees
  • (thêm) vì việc xây dựng trực tuyến, bạn có thể lưu nó trên hd a và phóng to hậu tố tồn tại. Nếu bạn sử dụng ổ SSD, nó phải yên tĩnh nhanh.
+4

Thực hiện đơn giản? –

+0

Chỉ cần đoán nhưng Suffix Trees có thể nhỏ hơn về mặt bộ nhớ trong việc triển khai thực tế. – Justin

+1

@Justin: Không, trên thực tế, các mảng hậu tố nâng cao tiêu thụ ít bộ nhớ hơn, đó là những gì mà giấy liên kết là tất cả về –

Trả lời

1

Có một số interesting thoughts về chủ đề trong bản thân SO. Bạn cũng có thể tìm thấy more technical material có sẵn trên mạng. Có another paper có thể giúp bạn giải quyết các vấn đề của bạn, tự xưng là một cách hiệu quả để triển khai các cấu trúc này.

Tôi không phải là chuyên gia về vấn đề này, nhưng dường như với tôi rằng mảng hậu tố có thể hơi chậm hơn, mặc dù chúng có hiệu quả về mặt không gian hơn. Tuy nhiên, tôi thiếu kinh nghiệm thực tế để chi tiết hơn về cả hai.

-3

Ví dụ khác cho thấy cây hậu tố vượt trội:

Bạn có thể dễ dàng tạo mảng hậu tố nếu bạn có cây hậu tố.

Nhưng sẽ phức tạp hơn nhiều khi xây dựng một cây hậu tố từ một mảng hậu tố.

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