2. Nội dung
Đặc tả bài toán
Đánh giá các giải pháp
Giải pháp đề xuất
Demo
Tài liệu tham khảo
Thảo luận
Hoang V.Nguyen 7/1/2010 2
3. Đặc tả bài toán
Khái niệm chuỗi con: Cho chuỗi X=x1x2x3 …xn.
S là chuỗi thu được từ X bằng cách bỏ đi một
vài ký tự trong X được gọi là chuỗi con của X.
Ví dụ:
X= computer science.
S= co u r s e => course
Trình tự các ký tự được đảm bảo không thay đổi
Hoang V.Nguyen 7/1/2010 3
4. Đặc tả bài toán
Cho X={x1, x2, x3, …, xn} là tập các chuỗi.
Khái niệm chuỗi con chung: CS là chuỗi con
chung của các chuỗi trong X nếu CS là chuỗi
con của tất các các chuỗi trong X.
LCS là chuỗi con chung dài nhất của các
chuỗi trong X nếu:
LCS là chuỗi con chung của các chuỗi trong X.
Và LCS có chiều dài lớn nhất.
Hoang V.Nguyen 7/1/2010 4
5. Đặc tả bài toán
Bài toán: Tìm chuỗi con chung dài nhất
Input: Tập các chuỗi X={x1, x2, x3, …, xn}.
Output:
Liệt kê tất cả(1) LCS của các chuỗi trong X.
Xác định chiều dài của LCS. ==> Edit Distance.
Hoang V.Nguyen 7/1/2010 5
6. Đánh giá các giải pháp
Giải pháp 1 - Vét cạn(Bruteforce)
Ý tưởng: Với mỗi chuỗi con của xâu x1 đem
kiểm tra với tất cả các xâu còn lại.
|X |
Độ phức tạp thời gian: O(2 n1 n )
i 2
i
Không có giá trị trong thực hành!
Hoang V.Nguyen 7/1/2010 6
7. Đánh giá các giải pháp
Giải pháp 2 – Quy hoạch động
Ý tưởng: dựa trên quan hệ đệ quy
Chỉ áp dụng được khi |X| là hằng số: N. N
Độ phức tạp thời gian và không gian: O( n )
i 1
i
Chỉ có ý nghĩa với N nhỏ(N=2)
Hoang V.Nguyen 7/1/2010 7
8. Đánh giá các giải pháp
Giải pháp 2 – Quy hoạch động
- C A C A G T A G
- 0 0 0 0 0 0 0 0 0 L<i-1,j-1> L<i-1,j>
A 0 0 1 1 1 1 1 1 1
G 0 0 1 1 1 2 2 2 2
C 0 1 1 2 2 2 2 2 2 L<i,j-1> L<i,j>
T 0 1 1 2 2 2 3 3 3
G 0 1 1 2 2 3 3 3 4 Có tính chất cục bộ
A 0 1 2 2 3 3 3 4 4
C 0 1 2 3 3 3 3 4 4
G 0 1 2 3 3 4 4 4 5
O(2m) để tính chiều dài của LCS
Hoang V.Nguyen 7/1/2010 8
9. Đánh giá các giải pháp
Giải pháp 2 – Quy hoạch động
- C A C A G T A G
Có một phép phân
- 0 0 0 0 0 0 0 0 0 hoạch dựa trên độ
A 0 0 1 1 1 1 1 1 1 dài của dãy con
chung dài nhất.
G 0 0 1 1 1 2 2 2 2
C 0 1 1 2 2 2 2 2 2 Dãy con chung là
T 0 1 1 2 2 2 3 3 3 một dãy “tăng dần”
các điểm “match”.
G 0 1 1 2 2 3 3 3 4
A 0 1 2 2 3 3 3 4 4 Trong số các điểm
C 0 1 2 3 3 3 3 4 4 match chỉ một vài
điểm là quan trọng.
G 0 1 2 3 3 4 4 4 5
=> Giảm một phần độ phức tạp không gian và thời gian
Hoang V.Nguyen 7/1/2010 9
10. Đánh giá các giải pháp
Luật xác định các match quan trọng:
- C A C A G T A G
<i,j> là một k-match
- 0 0 0 0 0 0 0 0 0 quan trọng nếu j là
A 0 0 1 1 1 1 1 1 1 giá trị nhỏ nhất thỏa
a[i]=b[j] và chỉ nếu
G 0 0 1 1 1 2 2 2 2
low<j<high với:
C 0 1 1 2 2 2 2 2 2 +) high = min j
T 0 1 1 2 2 2 3 3 3 của <i’,j’> k-match.
+) low=min j của
G 0 1 1 2 2 3 3 3 4
<i’,j’> (k-1)-match.
A 0 1 2 2 3 3 3 4 4 Với i’<i.
C 0 1 2 3 3 3 3 4 4
G 0 1 2 3 3 4 4 4 5
Hoang V.Nguyen 7/1/2010 10
11. Giải pháp đề xuất
Ý tưởng:
Chỉcó những ký hiệu “match” là thuộc LCS.
Sử dụng tiếp cận tham lam: lấy tối ưu cục bộ.
A G C T G A C G A G C T G A C G
C A C A G T A C A C A G T A
Hoang V.Nguyen 7/1/2010 11
12. Giải pháp đề xuất
Thuật toán:
Tiềnxử lý => tạo danh sách các vị trí trong xâu
thứ 2.
Vét xâu thứ nhất để xây dựng lcs.
Độ phức tạp thuật toán: O(nlogs) time và O(n)
space.
Hoang V.Nguyen 7/1/2010 12
14. Tài liệu tham khảo
1. L. Bergroth, et all A Survey of Longest Common Subsequence Algorithms IEEE
2000
2. D.S. Hirschberg Algorithms for the Longest Common Subsequence Problem
ACM 1977
3. D.S. Hirschberg A Linear Space Algorithm for Computing Maximal Common
Subsequences ACM 1975
4. Wagner & Fischer The String-to-String Correction Problem ACM1974
Hoang V.Nguyen 7/1/2010 14