Sắp hàng trình tự

Một phần của tài liệu NGHIÊN CỨU CÁC GIẢI THUẬT SONG SONG TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA LÕI (Trang 61 - 64)

Sắp hàng trình tự là một thủ tục cực kỳ quan trọng trong Tin sinh học, nó được xem là nền tảng cho tất cả các thủ tục khác. Vấn đề đặt ra là tạo ra những sự sắp hàng giữa các nucleotide thông qua việc chèn các ký tự gap, làm cho khoảng cách giữa hai trình tự tức chi phí sửa chữa (là tổng chi phí cho các sự kiện chèn – xóa, thay thế các nucleotide) giữa hai trình tự là nhỏ nhất (hoặc lớn nhất).

- 50 -

Đầu vào là 2 trình tự X = (x1, x2, …xp) và Y = (y1, y2, …yq), sắp hàng trình tự X và Y là cách chèn các kí tự trống vào hai trình tự X và Y sao cho chúng có độ dài bằng nhau và khoảng cách (chi phí sửa chữa) giữa hai trình tự là nhỏ nhất (hoặc lớn nhất).

Các thuật toán quy hoạch động đầu tiên cho việc sắp hàng giữa các chuỗi ký tự được trình bày bởi Levenshtein [14], với độ phức tạp về thời gian và bộ nhớ là

O(n2). Needleman và Wunsch [16] lần đầu tiên áp dụng thuật toán này vào lĩnh

vực Tin sinh học năm 1970. Yêu cầu bộ nhớ giảm xuống còn O(n) bởi

Hirschberg[12] trong khi thời gian chạy vẫn là O(n2). Những cải tiến của Ukkonen [21,22] với những cặp trình tự có khoảng cách độ dài là d, thuật toán yêu cầu thời gian O(nd) cho trường hợp xấu nhất và độ phức tạp thời gian trung bình là O(d2+n). Thuật toán Quy hoạch động tính toán chi phí bắt cặp theo công thức sau:

(1)

Cost[i][j] là chi phí bắt tới vị trí i của trình tự 1 và vị trí j của trình tự 2, σi,j là chi phí thay thế nucleotide ở vị trí thứ i của trình tự 1 và ở vị trí j của trình tự 2, σindex là chi phí chèn- xóa một nucleotide.

Pairwise Alignment by Needleman and Wunsch

Cost[0][0] ← 0

{Khởi tạo cột đầu tiên}

- 51 -

Cost[i][0] ← Cost[i-1][0] + σindex {Khởi tạo hàng đầu tiên}

for j = 0 to |Y| do

Cost[0][i] ← Cost[0][j-21] + σindex {Quy hoạch động}

for i = 1 to |X| do for j = 1 to |Y| do

ins ← Cost[i-1][j] + σindex del ← Cost[i][j-1] + σindex sub ← Cost[i-1][j-1] + σi,j

Cost[i-1][j-1] ← min(ins, del, sub)

end for end for

return Cost[|X|][|Y|]

Thuật toán Needleman – Wunsch hoạt động khi mà chi phí cho việc chèn – xóa các nucleotide là một trọng số cố định. Tức chi phí cho việc chèn một đoạn

gap có độ dài k là wk = kw1. Trên thực tế, việc tính toán chi phí chèn – xóa

thường phức tạp hơn, bao gồm chi phí cho việc bắt đầu và mở rộng các đoạn gap.

Waterman [25], tiến hành thực nghiệm trên một khối lượng lớn các trình

tự với trọng số cho việc chèn gap wk ≤ kw1 với độ phức tạp thời gian là O(n3). Lý

do của việc tăng độ phức tạp về thời gian là do việc bổ sung thêm việc tính toán chi phí chèn – xóa gap trong các trường hợp. Công thức được đưa ra:

- 52 -

(2)

Trong đó P[i][j] và Q[i][j] là chi phí chèn và xóa ở vị trí ( i , j) (adsbygoogle = window.adsbygoogle || []).push({});

Trong các trường hợp đặc biệt, chi phí chèn gap là một hàm tuyến tính wk = uk +v trong đó v được gọi là chi phí bắt đầu một đoạn gap và v là chi phí mở rộng đoạn gap. Gotoh (1982) [9] đã đưa ra một công thức tính toán tối ưu hóa việc tính toán ma trận P và Q giảm độ phức tạp thời gian xuống còn O(n2). Công thức mà Gotoh đưa ra là :

(3)

Một phần của tài liệu NGHIÊN CỨU CÁC GIẢI THUẬT SONG SONG TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA LÕI (Trang 61 - 64)