TÌM CHUỖI CON CHUNG
      DÀI NHẤT



    Hoang V.Nguyen
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
Đặ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
Đặ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
Đặ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
Đá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
Đá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
Đá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
Đá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
Đá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
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
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
Demo




Hoang V.Nguyen   7/1/2010   13
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
Thảo luận




Hoang V.Nguyen    7/1/2010   15

LCS Problem

  • 1.
    TÌM CHUỖI CONCHUNG DÀI NHẤT Hoang V.Nguyen
  • 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àitoá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àitoá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àitoá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ácgiả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ácgiả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ácgiả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ácgiả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ácgiả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
  • 13.
  • 14.
    Tài liệu thamkhả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
  • 15.