Giả sử chúng ta được cung cấp một tập hợp gồm chuỗi, . Tôi muốn biết liệu bất kỳ chuỗi nào trong số đó là một chuỗi con của bất kỳ chuỗi nào khác trong bộ sưu tập. Nói cách khác, tôi muốn một thuật toán cho tác vụ sau:
Đầu vào:
Đầu ra: sao cho là một chuỗi con của và hoặc Không có nếu không có như vậy tồn tại
Có một thuật toán hiệu quả cho việc này?
Nếu chúng ta thay thế "chuỗi con" bằng "tiền tố", có một thuật toán hiệu quả (sắp xếp các chuỗi, sau đó thực hiện quét tuyến tính để so sánh các chuỗi liền kề; sắp xếp sẽ đảm bảo các chuỗi con liền kề). Nhưng có vẻ khó khăn hơn để kiểm tra xem bất kỳ chuỗi nào là một chuỗi con của bất kỳ chuỗi nào khác. Một thuật toán ngây thơ là lặp đi lặp lại trên tất cả các cặp , nhưng điều này đòi hỏi các bài kiểm tra chuỗi con . Có một thuật toán hiệu quả hơn?
Tôi đoán chúng ta có thể gọi đây là "thử nghiệm chuỗi con tất cả các cặp" hoặc đại loại như thế.
Mục tiêu cuối cùng của tôi là cắt tỉa bộ sưu tập để không có chuỗi nào là chuỗi con của bất kỳ chuỗi nào khác, bằng cách loại bỏ từng chuỗi là một chuỗi con của một thứ khác trong bộ sưu tập.