Giải thuật Needleman Wunsch

Một phần của tài liệu Gióng hàng văn bản song ngữ anh việt (Trang 42 - 45)

Xét hai trình tự:

CGTGAATTCAT (trình tự # 1) GACTTAC (trình tự # 2)

Chiều dài (trong ví dụ là số lượng của cácký tự) của trình tự 1 là = 7và củatrình tự 2 là = 7. Ma trận ban đầu được tạo ra với + 1 cột và + 1 dòng. Thêm hàng và cột để phù hợp với khoảng cách, tại thời điểm bắt đầu của ma trận như trong Hình 4.5.

Hình 4.5: Ma trận ban đầu

Sau khi tạo ma trận ban đầu, quá trình tính điểmsẽ được xác định cụ thể với từng bài toán cụ thể. Điểm ban đầu có thể cho đơn giản như sau: nếu hai thành phần ở vị trí thứ và thứ là giống nhau, điểm phù hợp là 1 ( ( , ) = 1) hoặc nếu hai thành phần tại và thứ không giống nhau, điểm không phù hợp được giả thiết là -1 ( ( , ) = −1). Điểm số khoảng cách ( ) hoặc phạt khoảng cách được giả thiết là -1.

Điểm khoảng cách được xem như là điểm phạt trong bài toángióng hàng, khi chúng có hiện tượng chèn vào hoặc xóa.

Tính toán ma trận quy hoạch động theo ba bước: – Khởi tạo ma trận với số điểm ban đầu. – Điền ma trận.

4.2.1.1. Bước khởi tạo

Ví dụ này giả thiết rằng có phạt khoảng cách. Hàng đầu tiên và cột đầu tiên của ma trận có thể lấp đầy với 0.Khi giả thiết có tính tới điểm phạt khoảng cách thì điểm khoảng cách sẽ được thêm vào các ô phía trước của hàng hoặc cột (Hình 4.6).

Hình 4.6: Ma trận điểm tại bước khởi tạo

4.2.1.2. Bước điền đầy ma trận

Bước thứ hai, là bước điền đầy ma trận bắt đầu từ góc trên bên trái của ma trận, là bước quan trọng của thuật toán. Để tìm số điểm cực đại của mỗi ô, thuật toán cần biết các điểm lân cận (đường chéo, bên trái và bêntrên) của vị trí hiện tại. Từ các giá trị đó, thêm điểm số ứng với trường hợpphù hợp hoặc không phù hợp. Tương tự như vậy, phải tính thêm số điểm của khoảng cách sinh ra với các giá trị lân cận khác. Vì vậy, chúng ta có thể có được ba giá trị khác nhau, từ đó lấy cực đạicácgiá trị đó và điền vào vị trí thứ và thứ với số điểm đạt được.

Xét về vị trí ma trận, điều quan trọng là phải biết được giá trị tại

[ ( − 1, − 1) + ( , ), ( , − 1) + , ( − 1, ) + ]

Công thức tính điểm tại ô , của ma trận như sau

, = max[ , + , , , + , , + ] (4.1)

Để tính giá trị tại các vị trí hiện tại (vị trí đầu tiên M1,1) thông qua các công thức đã nêu ở trên. Cặp ký tự đầu tiên trong 2 trình tự ví dụ là “G” và “C”. Hai ký tự không khớp nhau nên điểm số sẽ là -1 ( , = − 1).

= max[0 + (−1), 0 + (−1), 0 + (−1)] = max[−1, −1, −1]

= −1

Điểm số thu được −1 được đặt ở vị trí ( , ) = (1,1) của ma trận điểm. Tương tự như vậy, bằng cách sử dụng phương trình và phương pháp trên để điền vào tất cả các hàng và cột còn lại.

Hình 4.7: Ma trận đã điền đầy

4.2.1.3. Bước quay lui

Bước cuối cùng trong thuật toán là lần theo các dấu vết để lại để được trình tựgióng hàng tốt nhất. Trong ví dụ trên, ta có thể thấy phía dưới bên phải điểm mặt góc là -1. Điểm quan trọng cần lưu ý ở đây là có thể có hai hoặc nhiều hơn cáchgióng hàng giữa hai trình tự ở ví dụ.

Tại các ôcó giá trị -1, thì trongcác ô phía trước nó, ô có số điểm cực đại đạt được là nằm theo đường chéo và giá trị của nó là 0. Nếu có hai hoặc nhiều hơn các giá trị có thể trở lại, thì có thể có hai hoặc nhiều hơn cách gióng hàng.

Bằng cách tiếp tục quay lui lại các dấu vết để lại theo phương pháp ở trên, người ta sẽ đi đến hàng 0, cột 0. Làm theo các bước mô tả ở trên, với ví dụ ban đầu ta sẽ có 2 trình tự được gióng hàng.

Hình 4.8: Các trình tự được gióng hàng có thể có

Một phần của tài liệu Gióng hàng văn bản song ngữ anh việt (Trang 42 - 45)