Môi trường phân tán MPI với các thuật toán xử lý song song phù hợp cho phân hoạch dữ liệu giúp cải thiện hiệu suất tìm kiếm và kiến trúc chia sẻ sử dụng CUDA cho phép song song hóa bài t
Trang 1LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
Đồng Nai – Năm 2013
Trang 2Chuyên ngành: Công nghệ thông tin
Mã ngành: 60.48.02.01
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học : PGS TS TRẦN VĂN LĂNG
Đồng Nai – Năm 2013
Trang 4LỜI CẢM ƠN
Lời đầu tiên tôi xin chân thành cám ơn đến PGS TS Trần Văn Lăng đã tận tình giúp đỡ tôi trong suốt thời gian học tập vừ qu và h ớng dẫn tôi hoàn thành luận văn này
Tôi chân thành cám ơn thầy cô Khoa Công nghệ thông tin nơi tôi học tập
và nghiên cứu đã tạo điều kiện và hỗ trợ tôi trong suốt thời gian qua
Tôi cũng xin chân thành cám ơn ng ời thân, bạn bè đã giúp đỡ và động viên tôi trong suốt thời gian học tập cũng nh trong thời gian thực hiện luận văn Chân thành cám ơn !
Biên Hòa, ngày 25 tháng 05 năm 2013
Phạm Đông Phong
Trang 5LỜI CAM ĐOAN
Tôi xin c m đo n đây là công trình nghiên cứu của bản thân Các số liệu, kết quả trình bày trong luận văn này là trung thực Những t liệu đ ợc sử dụng trong luận văn có nguồn gốc và trích dẫn rõ ràng đầy đủ
Biên Hòa, ngày 25 tháng 05 năm 2013
Học viên
Phạm Đông Phong
Trang 6TÓM TẮT
Bắt cặp các trình tự (Sequence Alignment) sinh học DNA, Protein là một bài toán cơ bản và đòi hỏi nhiều thời gian xử lý trong lĩnh vữc sinh tin học (Bioinfomatics) Trong đó, Smith-Waterman là một thuật toán bắt cặp cục bộ nhằm giải quyết bài toán này Trên cơ sở bài toán bắt cặp này, có thể ứng dụng cho nhiều bài toán khác Đặc biệt đó là bài toán tìm sự tương đồng của các trình tự.(Sequence
Similarity Searching)
Tuy nhiên, hiện nay số lượng các trình tự trong các cơ sở dữ liệu sinh học lớn trên thế giới như NCBI, EMBL, DDBJ đang gia tăng nhanh chóng dẫn đến việc các thuật toán xử lý trên khối lượng lớn dữ liệu trở nên kém hiệu quả Luận văn này trình bày một phương pháp triển khai thuật toán Smith-Waterman trên môi trường phân tán MPI kết hợp với kiến trúc chia sẻ GPU-CPU nhằm tăng tốc thuật toán Môi trường phân tán MPI với các thuật toán xử lý song song phù hợp cho phân hoạch dữ liệu giúp cải thiện hiệu suất tìm kiếm và kiến trúc chia sẻ sử dụng CUDA
cho phép song song hóa bài toán bắt cặp trình tự
Từ khoá: Sinh tin học, bắt cặp trình tự, CUDA, GPU, MPI
Trang 7MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
TÓM TẮT iii
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT vi
DANH MỤC HÌNH vii
DANH MỤC BẢNG ix
DANH MỤC BIỂU ĐỒ x
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN 5
1.1 Giới thiệu vấn đề 5
1.2 Tổng quan về sinh tin học 7
1.2.1 Amino acid và tính chất 7
1.2.2 DNA và RNA 8
1.2.3 Protein 10
1.2.4 Ngân hàng dữ liệu và phần mềm trong sinh tin học 11
1.3 Bắt cặp trình tự 13
1.4 Song song hoá dữ liệu trên môi trường phân tán dùng MPI 14
1.5 Công nghệ CUDA giải quyết bài toán sắp hàng trình tự 15
CHƯƠNG 2 CÁC PHƯƠNG PHÁP SẮP HÀNG TRÌNH TỰ 19
2.1 Khái niệm alignment 19
2.1.1 Ký tự ―gap‖ 19
2.1.2 Hàm đánh giá 20
2.1.3 Phân loại bắt cặp trình tự 22
2.2 Bắt cặp hai trình tự (Pairwise Sequence Alignment-PSA) 22
2.3 Bắt cặp đa trình tự (Multiple Sequence Alignment-MSA) 23
2.4 Các thuật toán so sánh các trình tự sinh học 24
2.4.1 Thuât toán Needleman – Wunsch 24
2.4.2 Thuật toán Smith-Waterman 27
CHƯƠNG 3 MÔI TRƯỜNG LẬP TRÌNH CUDA VÀ MPI 30
3.1 Khái niệm và thuật ngữ 30
3.1.1 Kiến trúc máy tính Von Neumann 30
3.1.2 Phân loại theo Flynn 31
3.2 Môi trường lập trình CUDA 34
3.2.1 Giới thiệu bộ xử lý đồ hoạ - GPU 34
3.2.2 Môi trường lập trình CUDA 38
3.3 Môi trường lập trình truyền thông điệp với MPI 44
3.3.1 Lịch sử MPI 44
3.3.2 Đặc điểm của MPI 45
Trang 83.3.3 Cấu trúc chương trình MPI 45
3.3.4 Cách lập trình MPI 45
CHƯƠNG 4 GIẢI THUẬT VÀ PHƯƠNG PHÁP HIỆN THỰC HÓA GIẢI THUẬT TRÊN MÔI TRƯỜNG MPI KẾT HỢP CÔNG NGHỆ CUDA 47
4.1 Thuật toán Smith-Waterman 47
4.2 Xây dựng giải thuật song song và cài đặt trên môi trường CUDA 51
Xây dựng giải thuật 51
4.3 Song song hoá xử lý dữ liệu dựa trên mô hình truyền thông điệp MPI 54
4.3.1 Lý do chọn mô hình truyền thông điệp MPI 54
4.3.2 Mô tả bài toán 54
4.3.3 Mô tả thuật toán 54
CHƯƠNG 5 KẾT QUẢ THỰC NGHIỆM 58
5.1 So sánh thời gian chạy chương trình 59
5.2 So sánh độ chính xác 62
KẾT LUẬN 64 TÀI LIỆU THAM KHẢO
Trang 9Hình 4.6 Sơ đồ biểu diễn Server gửi chuỗi DNA về Client 55 Hình 4.7 Sơ đồ biểu diễn Server gửi vị trí các trình tự DNA trong ngân hàng về Client 56 Hình 4.8 Sơ đồ biểu diễn Client bắt cặp từng trình tự DNA trong ngân hàng với chuỗi truy vấn DNA muốn tìm 57 Hình 5.1 Kết quả chạy chương trình với file cơ sở dữ liệu db1b 59 Hình 5.2 File lưu trữ kết quả sắp hàng đa trình tự 59
Trang 10phần mềm trên GPU được xây dựng bằng ngôn ngữ lập trình C Với CUDA các lập trình viên dùng để điều khiển GPU để xử lý, tính toán song song các dữ liệu lớn Việc tăng tốc trong quá trình tính toán không những đòi hỏi những thiết bị GPU có khả năng xử lý tốc độ cao với dữ liệu khổng lồ mà cần phải có những giải thuật song song hữu hiệu
Xuất phát từ nhu cầu trên, luận văn tập trung xây dựng các module chương trình giải quyết vấn đề xếp hàng trình tự trên hệ thống phân tán và tìm sự tương đồng giữa các trình tự sinh học
Mục tiêu luận văn
Khảo sát thuật toán Smith - Waterman để sắp hàng trình tự trên hệ thống phân tán dùng MPI và kiến trúc chia sẻ với CUDA
– Luận văn tập trung nghiên cứu khả năng giải quyết bài toán sắp hàng trình tự cục bộ bằng cách xử lý song song hóa dữ liệu trình tự trên môi trường phân tán MPI và song song hoá xử lý của thuật toán Smith-Waterman và hiện thực trên kiến trúc chia sẻ đa nhân đồ hoạ GPU nhằm gia tăng hiệu năng tính toán
– Cung cấp thực nghiệm cho các nghiên cứu khác sâu hơn hoặc phát triển các ứng dụng phục vụ nhu cầu thực tiễn
Nội dung thực hiện
Để hoàn thành được mục tiêu đề ra cần luận văn cần nghiên cứu các nội dung như sau:
− Thu thập các tài liệu có liên quan đến vấn đề bắt cặp trình tự
− Khảo sát và cài đặt thuật toán Smith – Wateman với các môi trường khác nhau như MPI, CUDA để tìm kết quả bắt cặp cho sự tương đồng và không tương đồng của hai phần tử trong hai trình tự
− Tìm hiểu các giải thuật tính toán song song và các cách thiết kế mẫu trong tính toán song song xử lý song song hóa dữ liệu trên môi trường MPI và xây dựng giải thuật toán song song trên thiết bị đồ họa GPU
− Đánh giá kết quả theo yêu cầu của luận văn
Trang 11− Sử dụng thuật toán Smith - Waterman để thực hiện trên một số trình tự cần
so sánh Thuật toán này bắt cặp cục bộ để tìm vùng tương đồng giữa hai trình
tự nucleotide hay protein, thuật toán tìm các đoạn hay các miền có độ tương đồng cao từ đó đánh giá mức độ tương đồng của hai trình tự
Dự kiến kết quả đạt được
− Về lý thuyết: Tài liệu về vấn đề khai thác kiến trúc phân tán và chia sẻ tìm
sự tương đồng của các trình tự sinh học
− Về sản phẩm: Module chương trình về sự tương đồng của các trình tự sinh học
Dự kiến tên công trình công bố trên tạp chí hoặc hội thảo khoa học:
Khai thác kiến trúc phân tán và chia sẻ để tìm sự tương đồng của các trình tự sinh học
Trang 12truyền gói tin MPI Chương thứ tư trình bày giải thuật và phương pháp hiện thực hóa giải thuật trên môi trường MPI kết hợp công nghệ CUDA Chương thứ năm
trình bày kết quả thực hiện, đánh giá thực nghiệm và phần kết luận
Chương 1: Tổng quan
Trong chương này giới thiệu về sự cần thiết việc ứng dụng công nghệ thông tin vào sinh học Tổng quan về sinh tin học và vấn đề bắt cặp trình tự nhằm giải quyết bài toán tìm sự tương đồng giữa các trình tự sinh học Giới thiệu song song hóa dữ liệu trên môi trường MPI và công nghệ CUDA giải quyết bài toán sắp hàng trình tự
Chương 2: Các phương pháp sắp hàng trình tự
Trong chương này, luận văn đưa ra khái niệm alignment, vấn đề bắt cặp trình
tự để tìm sự tương đông giữa hai trình tự hoặc đa trình tự trong đó, luận văn cũng giới thiệu hai thuật toán cơ bản được áp dụng trong vấn đề bắt cặp như: Needleman – Wunsch, Smith – Waterman
Chương 3: Môi trường lập trình CUDA và MPI
Trong chương này, luận văn giới thiệu kiến trúc máy tính Von Neumann và phân loại theo Flynn Cũng như môi trường lập trình CUDA và môi trương truyền thông điệp MPI
Chương 4: giảu thuật và phương pháp thực hiện giải thuật trên môi trường MPI kết hôp công nghệ CUDA
Trong chương này, giới thiệu thuật toán Smith – Waterman giúp nhận ra những miền tương đồng giữa hai chuỗi tìm kiếm cho việc sắp hàng chuỗi cục bộ tối
ưu hơn Xây dựng các giải thuật song song và cài đặt trên môi trường CUDA vấn
đề song song hóa dữ liệu trên môi trường MPI
Chương 5: Kết quả thực nghiệm
Trong chương này, thực hiện so sánh thời gia chạy cũng như độ chính xác Cũng như nhận xét chương trình chạy trên CUDA vượt trội hơn chương trình CPU
ở các trường hợp các trình tự có độ dài chuỗi lớn và số trình tự nhiều
Trang 13cặp toàn cục đòi hỏi sắp xếp và so sánh về trình tự một cách toàn bộ Trong loại này, trình tự đầu vào thường tương tự và có độ dài xấp xỉ bằng nhau Bắt cặp cục bộ tập trung vào tính tương đồng của các bộ phận cục bộ Các thuật toán liên kết cục
bộ thường cố gắng sắp hàng các trình tự để có được phần giống nhau dài nhất Liên kết cục bộ phù hợp với trình tự có độ dài khác nhau
Đối với bắt cặp toàn cục, thuật toán được phát triển nhất là Wunsch [7] Đây là một phương pháp sắp xếp dựa vào quy hoạch động, để tính điểm cho quá trình liên kết Mặt khác, các thuật toán BLAST [8] cho phép tìm kiếm trình tự con (subsequences) giống như trình tự truy vấn BLAST sử dụng phương pháp heuristic vì vậy tốc độ đặc biệt nhanh khi thực hiện trên các ngân hàng gen lớn Điều này đã làm BLAST trở thành công cụ phổ biến Mặc dù với tốc độ thấp hơn thuật toán BLAST, nhưng với một độ chính xác cao hơn, nên thuật toán Smith-Waterman [9] được xem là một trong những thuật toán phổ biến nhất của việc giải quyết các vấn đề về sắp hàng trình tự cục bộ Việc cài đặt thuật toán Smith-Waterman đòi hỏi một lượng lớn các tính toánnên không thể chấp nhận cho hệ thống máy tính thông thường
Needleman-Đã có nhiều giải pháp đưa ra để giải quyết bài toán, trong đó việc xử lý song song trên môi trường phân tán với kỹ thuật truyền thông điệp MPI hoặc sử dụng công nghệ CUDA (Compute Unified Device Architecture) trên GPU đa nhân là hướng tiếp cận được nhiều tác giả quan tâm Nhóm tác giả Fa Zhang, Xiang-Zhen Qiao, Zhi-Yong Liu trong [10] trình bày phương pháp song song hoá dữ liệu với kỹ thuật chia để trị, nhóm tác giả M.Noorian, H.Pooshfam, Z.Noorian, R.Abdullah trong [11] đề xuất một thuật toán lai dựa trên các hệ thống phân tán MPI và OpenMP triển khai trên cụm máy chủ SMP Hướng tiếp cận hiện nay là dựa trên kiến trúc chia sẻ đa nhân đồ hoạ GPU có khá nhiều công trình nghiên cứu, điển hình
là các công trình được nêu trong các tài liệu [12], [13], đây có thể xem là hướng tiếp cận có nhiều triển vọng do công nghệ đồ hoạ đa nhân đang phát triển mạnh mẽ Tuy nhiên việc tập trung xử lý trên môi trường chia sẻ bộ nhớ của một máy tính với công nghệ CUDA, OpenCL hoặc các công nghệ dựa trên đa nhân đồ hoạ khác chưa giải quyết trọn vẹn vấn đề với số lượng dữ liệu trình tự lớn mà chỉ nhằm tăng tốc xử
lý cho thuật toán quy hoạch động vốn đòi hỏi nhiều tài nguyên tính toán Một nhánh
Trang 14và được ký hiệu là A (Adenine), G (Guanine), C (Cytosine), T (Thymine) Ta có bộ
ký hiệu cho các nucleotic như sau: Nuc={A, C, G, T}
DNA gồm 3 thành phần chính: bazơ nitơ dạng purine và pyrimidine (A,T,C,G), đường pentose (đường 5 carbon) và axit phosphoric (H3PO4) Ba thành phần này có tỷ lệ 1:1:1 và chúng liên kết với nhau tạo thành một nucleotide
Hình 1.2 Cấu tạo một nucleotide [1]
Cấu trúc của DNA được Watson-Crick khám phá ra Đó là chuỗi xoắn kép cong nhẹ nhàng, có cấu trúc không gian 3 chiều, gồm hai sợi song song, đối xứng
và bổ sung cho nhau (hình 1.3.) theo một qui luật nghiêm ngặt: A bắt cặp với T và
C bắt cặp với G nhờ các liên kết hydro Cấu trúc xoắn kép của Watson- Crick là chiếc chìa khóa để mở ra những kỹ thuật của sự sống
Hình 1.3 Chuỗi xoắn kép DNA [3]
Trang 15 Chuyển mã trình tự DNA sang RNA
Hiển thị cặp trình tự chính và trình tự bắt cặp
Tìm vị trí của một enzyme giới hạn trong một trình tự
Vẽ bản đồ plasmid, hỗ trợ thiết kế phân tử
Tìm kiếm các đoạn mồi (primer)
So sánh mức độ tương đồng (similarity) giữa các trình tự
Vẽ cây biểu diễn mức độ tương đồng giữa các trình tự (biểu đồ dendogram)
Tìm kiếm các trình tự, các đoạn lặp (motif), các enzyme trong cơ sở dữ liệu
Ở Việt Nam, lĩnh vực này cũng chỉ xuất hiện ở các viện nghiên cứu, trong một vài trường đại học lớn, và cũng chỉ dừng lại ở trong giới nghiên cứu về Công nghệ sinh học Hoạt động của khoa Công nghệ sinh học, trường đại học Khoa Học Tự Nhiên TP Hồ Chí Minh; Viện Công nghệ sinh học, Viện Khoa học và Công nghệ Việt Nam; Trường đại học Y Dược TP Hồ Chí Minh là những minh chứng
Phân viện Công nghệ thông tin tại TP Hồ Chí Minh, từ năm 2004 đã hợp tác với một số nhà nghiên cứu của Viện Công nghệ Sinh học; của NCBI/NLM/NIH và NIAID/NIH đã xây dựng phần mềm HiBio [4] phục vụ việc nghiên cứu Công nghệ Sinh học với các chức năng:
– Thiết kế mồi để hiển thị cặp mồi tốt nhất, các đoạn mồi xuôi, các đoạn mồi ngược, hoặc sắp xếp theo các tính chất
– Thiết kế bản đồ plasmid với các tính năng cần thiết ở các dạng khác nhau, trong đó có cả việc đề xuất những enzym cắt
– Có thể sử dụng để dự đoán cấu trúc protein bậc 2, xem cấu trúc bậc 3 của một protein nào đó
– Sử dụng để vẽ cây sinh loài theo hai dạng có gốc và không gốc
– Vấn đề tìm kiếm motif cũng được đặt ra trong HiBio
…
Ngoài phần mềm trên, Sở Khoa học và Công nghệ Tp Hồ Chí Minh cũng quản lý dự án về Xây dựng mô hình và công cụ tin học để xử lý thông tin về gene,
Trang 16máy tính là một nhiệm vụ cấp bách và cần thiết Để giải quyết khó khăn này, người
ta đã nghiên cứu tăng tốc độ tính toán bằng hai phương pháp hoặc kết hợp cả hai:
Phương pháp 1: Cải tiến công nghệ, tăng tốc độ xử lý của máy tính Công việc này đòi hỏi nhiều thời gian, công sức và tiền của, nhưng tốc
vụ cùng một lúc Lập trình song song tập trung vào việc phân chia bài toán tổng thể
ra thành các công việc con nhỏ hơn rồi định vị các công việc đó đến từng bộ xử lý
và đồng bộ các công việc để nhận được kết quả cuối cùng Hướng tiếp cận là phân tích và chia nhỏ bài toán cần thực hiện thành nhiều nhiệm vụ có thể được xử lý cùng một lúc bằng cách tận dụng khả năng xử lý tác vụ trên nhiều lõi của card đồ họa Nvidia với công nghệ CUDA
Trong vài năm gần đây, năng lực tính toán của các bộ xử lý đồ họa tăng lên đáng kể so với CPU Tính đến tháng 6/2008, dòng GPU GT200 của nVidia đã đạt ngưỡng 933 Gflops, gấp hơn 10 lần so với bộ xử lý 2 lõi Intel Xeon 3.2 GHz tại cùng thời điểm
Hình 1.5 thể hiện sự tăng tốc về năng lực tính toán của các GPU nVidia so với CPU của Intel
Trang 17Hình 1.5 Biểu đồ năng lực tính toán CPU-GPU [17]
Tuy vậy, sự vượt trội về hiệu năng này không đồng nghĩa với sự vượt trội về công nghệ GPU và CPU được phát triển theo 2 hướng khác biệt: trong khi công nghệ CPU cố gắng tăng tốc cho một nhiệm vụ đơn lẻ thì công nghệ GPU lại tìm cách tăng số lượng nhiệm vụ có thể thực hiện song hành Vì vậy, khi mà số lượng lõi tính toán trong CPU đạt đến con số 8 lõi thì số lượng lõi xử lý của GPU đã đạt đến 240 và hứa hẹn ngày càng tiếp tục được tăng lên Để trả giá cho năng lực tính toán, GPU hy sinh tính linh động của các lõi xử lý Hiện tại các lõi của GPU tại một thời điểm chỉ thực hiện được một nhiệm vụ duy nhất, do vậy chỉ thích hợp với những bài toán song song dữ liệu trong đó cùng một đoạn mã chương trình được thực thi song song cho nhiều bộ dữ liệu khác nhau
Bên cạnh việc phát triển các bộ xử lý đồ họa có năng lực tính toán lớn, các hãng sản xuất cũng quan tâm tới môi trường phát triển ứng dụng cho các bộ xử lý
đồ họa này CUDA là môi trường phát triển ứng dụng trên các GPU của nVidia, bao gồm ngôn ngữ lập trình song song, dữ liệu cùng với các công cụ biên dịch, gỡ rối và giám sát thực thi cho các ứng dụng hoạt động dựa vào công nghệ này Một số đặc điểm chính của công nghệ CUDA:
CUDA dựa trên nền tảng ngôn ngữ C, do đó nó quen thuộc với đa số nhà phát triển ứng dụng
Mã CUDA chia làm 2 phần: phần thực thi trên CPU và phần thực thi trên GPU Phần thực thi trên GPU, còn gọi là kernel, khi được gọi có
Trang 18thể thực thi song song trên hàng ngàn tiến trình riêng biệt Mỗi tiến trình có một định danh riêng để xác định nhiệm vụ của tiến trình đó
Để tránh sự phụ thuộc vào phần cứng, CUDA cho phép người lập trình tùy ý xác định số lượng tiến trình song song, tuy nhiên các tiến trình này cần được phân theo từng block với số lượng tối đa là 512 Cách chia block giúp người lập trình không cần quan tâm tới năng lực phần cứng, đồng thời giúp việc thực thi được hiệu quả ngay cả trên nhiều loại GPU khác nhau
Bộ nhớ được tổ chức phân cấp theo các lớp sau:
Bộ nhớ chính: vùng bộ nhớ dành cho phần mã CPU Chỉ có phần mã này có thể truy cập và chỉnh sửa thông tin trên đó
Bộ nhớ toàn cục GPU: vùng bộ nhớ mà tất cả các tiến trình của GPU có thể truy cập Có thể chuyển dữ liệu từ bộ nhớ chính sang bộ nhớ này thông qua một số hàm thư viện của CUDA Bộ nhớ này thông thường được dùng để lưu trữ các dữ liệu đầu vào và đầu ra cho các tiến trình song song trên GPU
Bộ nhớ chia sẻ: vùng bộ nhớ mà chỉ các tiến trình trong cùng một block mới có thể truy cập Bộ nhớ chia sẻ được tích hợp ngay trên chip xử lý nên tốc độ truy cập dữ liệu cao hơn rất nhiều so với bộ nhớ toàn cục
Bộ nhớ này được dùng để lưu trữ các dữ liệu chia sẻ tạm thời nhằm tăng tốc quá trình sử dụng bộ nhớ
Bộ nhớ cục bộ GPU: vùng bộ nhớ được cấp phát cho các biến cục bộ của từng tiến trình GPU và không thể truy cập được từ các tiến trình khác
Với khả năng song song hóa dữ liệu với cực nhiều tiến trình như vậy, công nghệ CUDA là giải pháp thích hợp nâng cao năng lực tính toán cho bài toán sắp hàng trình tự, trong đó mỗi tiến trình có thể đảm nhận việc sắp hàng 2 trình tự một trong toàn bộ chuỗi dữ liệu cần thực hiện
Trang 19 Chẳng hạn, nếu
– Giống nhau ở cùng vi trí: giá trị là +2
– Không giống nhau: giá trị là -1
– Gap: giá trị là -2
Giá trị càng cao thì sự giống nhau càng nhiều
Định nghĩa: Mức độ tương đồng (điểm đánh giá) của 2 trình tự bắt cặp S1‘
và S2‘ là đại lượng: na x match + ni x mismatch + ng x gap
Trang 20,2,
{
3}1,21,21}
,2,
{
1}1,21,10}
,2,
{
1}0,20,12}
,2,
{
0}2,20,10}
,2,
{
25 34
35 24 35
24 33
34 23 34
23 32
33 22 33
22 31
32 21 32
21 30
31 20 31
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
,2,
{
1}3,20,11{}
,2,
{
0}1,20,11}
,2,
{
0}1,22,10}
,2,
{
2}0,20,20}
,2,
{
45 44
45 34 45
34 43
44 33 44
33 42
43 32 43
32 41
42 31 42
31 40
41 30 41
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
,2,
{
0}1,22,10}
,2,
{
2}0,21,20}
,2,
{
1}0,20,12}
,2,
{
0}2,20,10}
,2,
{
45 54
55 44 55
44 53
54 43 54
43 52
53 42 53
42 51
52 41 52
41 50
51 40 51
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
,2,
{
4}0,20,22}
,2,
{
0}2,21,11}
,2,
{
1}1,21,10}
,2,
{
1}0,20,10}
,2,
{
55 64
65 54 65
54 63
64 53 64
53 62
63 52 63
52 61
62 51 62
51 60
61 50 61
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Max
M
Max M
M M
Trang 21 (i,j) →(i-1,j): đi lên
U i và “-” đƣợc ghi vào (deletion gap đƣợc sinh ra)
(i,j) →(i,j-1): đi lui
“-” và V j đƣợc ghi vào (insertion gap đƣợc sinh ra)
σ
ij
Trang 22},
1,
,
0
max{
1}2,10,10,0max{
},
1,
,
0
max{
2}0,10,20,0max{
},
1,
,
0
max{
12 03
13 02 13
11 02
12 01 12
10 01
11 00 11
H H
H H
H H
H H
H H
1}1,12,11,0max{
1,
1,
,
0
max{
1}2,11,12,0max{
},
1,
,
0
max{
1}0,12,10,0max{
},
1,
,
0
max{
22 13
23 12 23
21 12
22 11 22
20 11
21 10 21
H H
H H
H H
H H
H H
2}3,11,11,0max{
},
1,
,
0
max{
3}0,11,21,0max{
},
1,
,
0
max{
0}0,11,10,0max{
},
1,
,
0
max{
32 23
33 22 33
31 22
32 21 32
30 21
31 20 31
H H
H H
H H
H H
H H
5}2,12,23,0max{
},
1,
,
0
max{
2}2,13,10,0max{
},
1,
,
0
max{
2}0,10,20,0max{
},
1,
,
0
max{
42 33
43 32 43
41 32
42 31 42
40 31
41 30 41
H H
H H
H H
H H
H H
• Xuất phát từ Hnmax,mmax, nếu:
– Hij = Hi-1,j-1, hoặc Hij = Hi-1,j-1 + σij thì vết (i,j) → (i-1,j-1) đi theo đường chéo
– Hij = Hi,j-1 + d thì vết (i,j) → (i,j-1) đi lui
– Hij = Hi-1,j + d thì vết (i,j) → (i-1,j) đi lên
Trang 23Bảng 2.5 Tạo vết xuất phát từ H nmax,mmax
– (i,j) →(i-1,j): đi lên
U i và “-” đƣợc ghi vào (deletion gap đƣợc sinh ra)
– (i,j) →(i,j-1): đi lui
“-” và V j đƣợc ghi vào (insertion gap đƣợc sinh ra)