Đối với hai thuật toán tìm kiếm chuỗi: KMP và cây hậu tố, được ưu tiên trong trường hợp nào? Đưa ra một số ví dụ thực tế.Thuật toán tìm kiếm chuỗi
9
A
Trả lời
11
cây Một hậu tố là tốt hơn nếu bạn sẽ phải trả lời rất nhiều câu hỏi như "là món quà kim trong Haystack?". KMP tốt hơn nếu bạn chỉ phải tìm kiếm một chuỗi trong một chuỗi khác và không phải thực hiện nhiều lần.
Một cây hậu tố là một cấu trúc dữ liệu tổng quát hơn nhiều, vì vậy bạn có thể làm nhiều hơn với nó. Xem những gì bạn có thể làm với nó here. KMP rất hữu ích cho việc tìm kiếm nếu một chuỗi là một chuỗi con trong chuỗi khác.
Bạn cũng có thể muốn kiểm tra các thuật toán khác, chẳng hạn như Boyer-Moore, Rabin-Karp và thậm chí cả thuật toán ngây thơ, vì có các trường hợp (đầu vào) trong đó một trường hợp tốt hơn so với các thuật toán khác.
Điểm mấu chốt là:
- Nếu bạn có rất nhiều thắc mắc như một tôi đã đề cập ở trên, nó có giá trị để xây dựng một cây hậu tố và sau đó trả lời mỗi truy vấn nhanh hơn.
- Nếu bạn cần làm nhiều hơn các loại truy vấn đó, cây hậu tố cũng đáng để xây dựng.
- Nếu bạn chỉ quan tâm đến việc thỉnh thoảng tìm xem chuỗi có phải là chuỗi con của chuỗi khác không, sau đó sử dụng KMP.
Các vấn đề liên quan
- 1. Thuật toán chuỗi tìm kiếm
- 2. Tìm kiếm thuật toán khóa cấp phép
- 3. tìm kiếm thuật toán đối sánh tuple
- 4. Thuật toán tìm kiếm trang web
- 5. Thuật toán tìm kiếm đồ thị
- 6. đối xứng 3D tìm kiếm thuật toán
- 7. Chuỗi Tìm/Thay thế Thuật toán
- 8. Thuật toán chuỗi con
- 9. Thuật toán xếp hạng/mức độ phù hợp tìm kiếm
- 10. Thuật toán tìm kiếm nhưng đối với hàm
- 11. Thuật toán tìm kiếm tương tự trực quan
- 12. Thuật toán NLP để 'điền' các cụm từ tìm kiếm
- 13. nhanh thuật toán tìm kiếm khoản tiền trong mảng
- 14. Thuật toán tìm kiếm nhị phân trong python
- 15. Thuật toán lập trình và tìm kiếm di truyền
- 16. Tối ưu hóa một thuật toán tìm kiếm đơn giản
- 17. Tìm kiếm thuật toán tốt để phân phối bằng nhau
- 18. Hiểu thuật toán tìm kiếm chuỗi Boyer-Moore của "Good Suffix Shift" -Table
- 19. Sách về thuật toán chuỗi
- 20. Thuật toán ốp lát chuỗi
- 21. Thuật toán đối sánh chuỗi gần đúng
- 22. Chuỗi tìm kiếm JPQL (JPA) tìm kiếm
- 23. chuỗi thuật toán chuyển vị
- 24. tìm kiếm thuật toán để tìm ranh giới của vùng màu
- 25. In_array() có sử dụng thuật toán tìm kiếm nhị phân không?
- 26. Thuật toán để tìm chuỗi con chung trên các chuỗi N
- 27. Thuật toán nhanh nhất để tìm một chuỗi trong một chuỗi các chuỗi?
- 28. Thuật toán băm chuỗi nhanh với thuật toán va chạm thấp với số nguyên 32 bit
- 29. Tìm kiếm chuỗi nhanh?
- 30. Thuật toán nhanh để tìm kiếm mẫu trong tệp văn bản
Bạn nghĩ gì về bản thân? Nó bây giờ trông giống như bạn đã sao chép một phần của bài tập về nhà của bạn. –
Bài tập về nhà? Xin vui lòng thẻ là như vậy. – DVK
Đây không phải là bài tập về nhà. Tôi là một lập trình viên chuyên nghiệp làm việc trong một công ty. Câu hỏi này chỉ là để có được kiến thức. – avd