a. Khái niệm
Trong các phần trên ta đã từng bƣớc xây dựng cây hậu tố cho một chuỗi. Để giải quyết bài toán tìm các nhóm từ chung của hai hay nhiều chuỗi hay văn bản ta cần mở rộng khái niệm cây hậu tố để chứa nhiều chuỗi hơn trong một cấu trúc dữ liệu chung.
Định nghĩa: Cho tập các chuỗi {S1, S2,..., SK}, cây hậu tố tổng quát cho tập các chuỗi này là cây sao cho:
- Các đƣờng đi từ gốc đến lá tƣơng ứng 1-1 với các hậu tố của Si. - Mỗi nút trong, trừ nút gốc, có ít nhất là hai con.
- Mỗi cạnh đƣợc gán nhãn là một xâu con khác rỗng của S.
- Không có hai cạnh nào của cùng một nút có nhãn bắt đầu bằng cùng một kí tự.
40
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
Để phân biệt hậu tố của các chuỗi khác nhau, mỗi chuỗi đƣợc bổ sung một kí tự kết thúc khác nhau và không có trong bảng chữ cái. Mỗi nút lá của cây tƣơng ứng với một hậu tố của một chuỗi nhất định và đƣợc gán nhãn bằng chỉ số của chuỗi đó. Hình 29 cho ta một ví dụ về cây hậu tố của {xabxa, abxbx}.
Hình 2.19: Cây hậu tố với các liên kết hậu tố cho 2 chuỗi xabxa và abxbx
b. Dựng cây hậu tố tổng quát trong thời gian tuyến tính
Áp dụng giải thuật Ukkonen ta dễ dàng dựng đƣợc cây hậu tố tổng quát trong thời gian O(N) với N là tổng độ dài các xâu.
Đầu tiên ta dựng cây hậu tố thông thƣờng cho xâu S1. Với các xâu S2, S3,..., SK trƣớc tiên ta tìm tiền tố dài nhất Sk[1…i] đã tồn tại trong cây. Ta thực hiện các giai đoạn i+1, i+2,..., k của thuật toán Ukkonen để mở rộng cây hậu tố tổng quát phủ toàn bộ xâu.
Đi sâu vào chi tiết, việc tìm tiền tố dài nhất đã có trong cây đồng nghĩa với việc tìm đƣờng đi dài nhất trong cây có nhãn Sk[1…i] bằng cách quét từng kí tự trên đƣờng đi từ gốc. Có hai trƣờng hợp xảy ra:
1. Đƣờng đi kết thúc ở nút v (có thể là nút gốc): thêm nút con mới nối với v bằng cạnh có nhãn là Sk[i+1].
2. Đƣờng đi kết thúc giữa một cạnh: chia đôi cạnh tại điểm đƣờng đi kết thúc và tạo ra nút mới v. Tạo nút con của v nối với nó bằng cạnh Sk[i+1].
Sau khi thực hiện xong bƣớc trên bƣớc mở rộng đầu tiên của giai đoạn i+1 đã hoàn thành, ta có thể đi theo nút cha của v, theo liên kết hậu tố v.v... để
41
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
thực hiện các bƣớc mở rộng tiếp theo. Lƣu ý rằng trong trƣờng hợp thứ 2 ta cũng cần đảm bảo liên kết hậu tố của v sẽ đƣợc thiết lập trong bƣớc mở rộng tiếp theo.