ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
LÊ THỊ HÀO
BÀI TOÁN CẤU TRÚC CHUỖI NGUỒN
(Founder Sequences Reconstruction Problem)
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
HÀ NỘI, 2015
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
LÊ THỊ HÀO
BÀI TOÁN CẤU TRÚC CHUỖI NGUỒN
(Founder Sequences Reconstruction Problem)
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. Đỗ Đức Đông
PGS.TS. Hoàng Xuân Huấn
HÀ NỘI, 2015
1
LỜI CẢM ƠN
Trước hết, tôi xin gửi lời biết ơn sâu sắc đến hai người thầy TS. Đỗ Đức Đông và
thầy PGS.TS. Hoàng Xuân Huấn, hai thầy đã dành rất nhiều thời gian và tâm huyết
hướng dẫn nghiên cứu và giúp tôi hoàn thành tốt luận văn tốt nghiệp này. Thầy đã mở
ra cho tôi những vấn đề khoa học rất lý thú, định hướng nghiên cứu các lĩnh vực hết
sức thiết thực và vô cùng bổ ích, đồng thời tạo điều kiện thuận lợi tốt nhất cho tôi học
tập và nghiên cứu.
Tôi cũng xin được bày tỏ lòng biết ơn tới các thầy cô trường Đại học Công nghệ
đã tham gia giảng dạy và chia sẻ những kinh nghiệm quý báu cho tập thể và cá nhân
tôi nói riêng. Tôi xin cảm ơn tới các thầy và các anh chị đã thường xuyên giúp đỡ, trao
đổi, góp ý về những vấn đề khoa học liên quan tới luận văn.
Cuối cùng tôi cũng bày tỏ lòng biết ơn về sự giúp đỡ của các anh, chị đồng
nghiệp trong Bộ môn Tin học trường Đại học Công Đoàn, cơ quan nơi tôi công tác đã
tạo điệu kiện tốt nhất cho tôi về thời gian cũng như động viên tôi hoàn thành bài luận
văn.
Một lần nữa, tôi xin chân thành cảm ơn!
Hà Nội, tháng 7 năm 2015.
Học viên
Lê Thị Hào
2
LỜI CAM ĐOAN
Những kiến thức trình bày trong luận văn là do tôi tìm hiểu, nghiên cứu và trình
bày lại theo cách hiểu. Trong quá trình làm luận văn tôi có tham khảo các tài liệu có
liên quan và đã ghi rõ nguồn tài liệu tham khảo đó. Tôi xin cam đoan đây là công trình
nghiên cứu của tôi và không sao chép của bất kỳ ai.
Hà Nội, tháng 7 năm 2015.
Học viên
Lê Thị Hào
3
MỤC LỤC
LỜI CẢM ƠN ................................................................................................................ 1
LỜI CAM ĐOAN .......................................................................................................... 2
MỤC LỤC ...................................................................................................................... 3
DANH MỤC CÁC BẢNG BIỂU .................................................................................. 6
DANH MỤC CÁC HÌNH VẼ ....................................................................................... 7
MỞ ĐẦU ......................................................................................................................... 8
CHƢƠNG I. BÀI TOÁN CẤU TRÚC CHUỖI NGUỒN ........................................ 10
1.1.
Một số khái niệm trong sinh học ................................................................. 10
1.1.1. Một số khái niệm về di truyền ............................................................................. 10
1.1.2. Quá trình đột biến DNA ...................................................................................... 11
1.1.3. Khái quát về các Haplotype được tạo từ các tái tổ hợp ...................................... 13
1.2.
Phát biểu bài toán cấu trúc chuỗi nguồn .................................................... 15
1.3.
Mô hình bài toán ........................................................................................... 15
1.3.1. Bài toán 1: tìm số điểm ngắt nhỏ nhất ................................................................ 15
1.3.2. Bài toán 2: tìm chuỗi nguồn ................................................................................ 16
1.4.
Các phƣơng pháp tiếp cận để giải bài toán cấu trúc chuỗi nguồn ........... 17
1.4.1. Phương pháp giải bài toán tìm ra số điểm ngắt nhỏ nhất ................................... 18
1.4.2. Phương pháp giải bài toán tìm số chuỗi nguồn .................................................. 18
CHƢƠNG II. GIỚI THIỆU VỀ THUẬT TOÁN ANT COLONY
OPTIMIZATION (ACO) ............................................................................................ 21
2.1.
Giới thiệu về thuật toán ACO ...................................................................... 21
2.2.
Mô hình mô phỏng của thuật toán .............................................................. 21
2.2.1. Kiến tự nhiên ........................................................................................................ 21
2.2.2. Kiến nhân tạo ....................................................................................................... 23
2.3.
Trình bày giải thuật ...................................................................................... 23
2.3.1. Đồ thị cấu trúc ...................................................................................................... 24
2.3.2. Trình bày về thuật toán ACO cơ bản .................................................................. 25
4
2.3.3. Thông tin Heuristic .............................................................................................. 27
2.3.4. Quy tắc cập nhật vết mùi ..................................................................................... 27
2.3.4.1.
Thuật toán AS .............................................................................................. 27
2.3.4.2.
Thuật toán ACS ........................................................................................... 27
2.3.4.3.
Thuật toán Max-Min .................................................................................... 28
2.3.4.4.
Thuật toán Max- Min trơn ........................................................................... 28
2.4. Ứng dụng thuật toán ACO trong việc giải quyết bài toán Ngƣời chào
hàng Sale Man .......................................................................................................... 29
2.4.1. Bài toán người chào hàng trong thực tế .............................................................. 29
2.4.2. Phát biểu bài toán người đưa hàng trên mô hình hóa đồ thị .............................. 29
2.4.3. Áp dụng thuật toán ACO giải quyết bài toán người chào hàng ......................... 29
CHƢƠNG III. THUẬT TOÁN MỚI ......................................................................... 32
3.1.
Thuật toán tối ƣu đàn kiến ACO................................................................. 32
3.2.
Xây dựng đồ thị cấu trúc.............................................................................. 32
3.3.
Xây dựng lời giải tuần tự ............................................................................. 33
3.4.
Thông tin heuristic ........................................................................................ 34
3.5.
Cập nhật mùi ................................................................................................. 34
3.5.1. Thuật toán Max – Min ......................................................................................... 35
3.5.2. Thuật toán Max – Min trơn ................................................................................. 36
3.5.3. So sánh giữa hai cách cập nhật mùi .................................................................... 36
3.6. Mô tả thuật toán tối ƣu đàn kiến ACO tổng quát giải bài toán cấu trúc
chuỗi nguồn .............................................................................................................. 37
3.7.
Số lƣợng kiến ................................................................................................. 41
3.8.
Tham số bay hơi ............................................................................................ 41
CHƢƠNG IV. KẾT QUẢ THỰC NGHIỆM ............................................................ 42
4.1.
Mô tả thực nghiệm ........................................................................................ 42
4.1.1. Các thông số cài đặt ............................................................................................. 42
4.1.2. Kết quả thực nghiệm ............................................................................................ 42
4.2.
So sánh các kết quả thực nghiệm ................................................................ 43
4.2.1. So sánh kết quả với RecBlock ............................................................................. 43
4.2.2. So sánh kết quả với hai thuật toán cập nhật mùi khác nhau .............................. 48
5
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ................................................................. 51
TÀI LIỆU THAM KHẢO........................................................................................... 52
DANH MỤC CÁC KÍ HIỆU, TỪ VIẾT TẮT
STT
Từ viết tắt
Từ hoặc cụm từ
Ant Colony Optimization
1
ACO
2
AS
3
ACS
4
DNA
Axit Deoxyribo Nucleic
5
NST
Nhiễm sắc thể
6
MMAS
7
SMMAS
8
3-LAS
9
TSP
10
TƯTH
(Tối ưu hóa đàn kiến)
Ant System
(Hệ kiến AS)
Ant Colony System
(Hệ kiến ACS)
Max-Min Ant System
(Hệ kiến MMAS)
Smooth-Max Min Ant System
(Hệ kiến MMAS trơn)
Three level ant system
(Hệ kiến đa mức 3-LAS)
Travelling Salesman Problem
(Bài toán người chào hàng)
Tối ưu tổ hợp
6
DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1. Tập HAP tương đương với haplotype C ....................................................... 14
Bảng 2.1 Một số thuật toán ACO .................................................................................. 30
Bảng 4.1 So sánh thực nghiệm với RecBlock trên bộ dữ liệu Random ........................ 44
Bảng 4.2 So sánh thực nghiệm với RecBlock trên bộ dữ liệu evo ............................... 45
Bảng 4.3 So sánh thực nghiệm với RecBlock trên bộ dữ liệu ms ................................ 47
Bảng 4.4. Kết quả thực nghiệm so sánh hai phương pháp MMAS và SMMAS với bộ
dữ liệu rnd_30_60 .......................................................................................................... 49
Bảng 4.5. Kết quả thực nghiệm so sánh ba phương pháp ACS, MMAS và SMMAS với
bộ dữ liệu evo_50_250 .................................................................................................. 49
Bảng 4.6. Kết quả thực nghiệm so sánh ba phương pháp ACS, MMAS và SMMAS với
bộ dữ liệu ms_50_250 ................................................................................................... 50
7
DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Cấu trúc nhiễm sắc thể ................................................................................... 10
Hình 1.2 Minh họa gen trên nhiễn sắc thể ..................................................................... 10
Hình 1.3 Một đột biến điểm xảy ra trong phân tử DNA thay thế cặp nucleotide A-T
bằng cặp nucleotide G-C .............................................................................................. 11
Hình 1.4. Minh họa quá trình tiến hóa của các loài từ một tổ tiên chung ..................... 12
Hình 1.5. Quá trình đột biến giữa hai trình tự DNA ..................................................... 12
Hình 1.6. Ví dụ về bộ gen tái tổ hợp được tạo từ chuỗi nguồn .................................... 16
Hình 1.7. Minh họa đầu vào của bài toán ..................................................................... 17
Hình 1.8. Minh họa đầu ra của bài toán ........................................................................ 17
Hình 1.9. Đặc tả thuật toán Recblock ............................................................................ 19
Hình 2.1. Một ví dụ về hoạt động của bầy kiến trong thực tế ....................................... 22
Hình 2.2. Một ví dụ về đàn kiến nhân tạo ..................................................................... 23
Hình 2.3 Đồ thị cấu trúc tổng quát cho bài toán cực trị hàm
.................... 25
Hình 2.4 Đặc tả thuật toán ACO .................................................................................. 26
Hình 2.5 Minh họa hình ảnh bài toán người đưa hàng .................................................. 29
Hình 2.6 Đặc tả thuật toán ACO cho bài toán TSP ....................................................... 31
Hình 3.1. Đồ thị xây dựng thuật toán ACO đối với bài toán cấu trúc chuỗi nguồn ...... 33
Hình 3.2 Lựa chọn đỉnh tiếp theo .................................................................................. 34
Hình 3.3 Đặc tả thuật toán ACO. ................................................................................. 38
Hình 3.4. Đồ thị cấu trúc cho bộ dữ liệu với n= 5, m= 7 .............................................. 39
Hình 3.5. Mô tả hành trình của một con kiến ................................................................ 40
Hình 3.6. Lời giải của một con kiến .............................................................................. 40
Hình 3.7. Phân tích điểm ngắt cho lời giải của một con kiến........................................ 41
Hình 4.1 Mô tả INPFILE với bộ dữ liệu rnd_30_90 ..................................................... 42
Hình 4.2 Mô tả OUTFILE tìm ra k =5 trên bộ dữ liệu rnd_30_90 ............................... 43
Hình 4.3 Mô tả OUTFILE tìm ra điểm ngắt trong bộ dữ liệu rnd_30_90..................... 43
8
MỞ ĐẦU
Tin sinh học là một lĩnh vực khoa học liên ngành, trong đó sinh học phân tử và
tin học đóng vai trò chủ đạo. Sinh học làm môi trường dữ liệu cơ sở, trên đó xây dựng
và hoàn thiện các chương trình xử lý dữ liệu ứng dụng làm công cụ hỗ trợ hiệu quả
cho việc nghiên cứu, thu nhận và sản xuất ra các sản phẩm sinh học mong muốn khác
nhau phục vụ đời sống con người…Về cơ bản, tin sinh học tập trung vào nghiên cứu
và áp dụng các phương pháp cũng như các kĩ thuật trong tin học để giải quyết các bài
toán trong sinh học phân tử. Tin sinh học có tính ứng dụng cao trong cuộc sống, đặc
biệt trong lĩnh vực y-dược và trong lĩnh lực di truyền.
Di truyền là hiện tượng chuyển những tính trạng của cha mẹ cho con cái thông
qua gen của bố mẹ. Trong sinh học, di truyền chuyển những đặc trưng sinh học từ một
sinh vật cha mẹ đến con cái và nó đồng nghĩa với di chuyển, gen thừa nhận mang
thông tin sinh học.
Chính vì vậy mà ngày nay khi xã hội càng ngày càng phát triển, con người càng
có nhu cầu tìm hiểu về nguồn gốc của mình và tổ tiên xa xưa của chúng ta. Bài toán
cấu trúc chuỗi nguồn là một bài toán cho các thông tin ở dạng một chuỗi của các
nhiễm sắc thể hiện tại, và tìm ra được các thông tin về nhiễm sắc thể của tổ tiên. Đó là
một bài toán lớn trong sinh học, hiện nay đang được rất nhiều người quan tâm và
nghiên cứu.
Đã có nhiều thuật toán nghiên cứu và công bố giải quyết bài toán cấu trúc chuỗi
nguồn để tìm ra được các thông tin di truyền.
Trong luận văn này, tôi trình bày khảo cứu lại các phương pháp giải quyết bài
toán cấu trúc chuỗi nguồn. Tôi khảo cứu và cài đặt lại thuật toán RecBlock được
Andrea Roli and Christian Blum đề xuất năm 2009 là một thuật toán được coi là hoàn
chỉnh nhất đến thời điểm hiện tại để giải bài toán cấu trúc chuỗi nguồn. Sử dụng ý
tưởng xây dựng lời giải của RecBlock, trong luận văn chúng tôi đã đề xuất một thuật
toán mới đó là thuật toán tối ưu đàn kiến Ant colony optimization (ACO) để giải quyết
bài toán cấu trúc chuỗi nguồn mục đích để tìm ra được chuỗi nhiễm sắc thể của tổ tiên
dựa trên số lần lai ghép là ít nhất. Đây là thuật toán mới và lần đầu tiên được đưa vào
để giải bài toán cấu trúc chuỗi nguồn. Và trong thực nghiệm đã chỉ ra được thuật toán
ACO tối ưu hơn rất nhiều so với thuật toán RecBlock. Luận văn còn cài đặt với các
thuật toán cập nhật mùi khác nhau trong thuật toán ACO và kết quả trả về vẫn là tối ưu
hơn thuật toán trước.
Ngoài phần kết luận, cấu trúc nội dung của luận văn bao gồm:
9
Chương 1: Trình bày sơ lược các khái niệm sinh học, phát biểu bài toán cấu trúc
chuỗi nguồn. Giới thiệu một vài thuật toán giải quyết bài toán, trình bày lại thuật toán
RecBlock.
Chương 2: Giới thiệu thuật toán Ant colony optimization (ACO) và một vài thuật
toán cập nhật mùi khác nhau trong ACO. Ví dụ về bài toán người chào hàng giải quyết
bằng thuật toán ACO.
Chương 3: Đề xuất thuật toán mới, đó là thuật toán Ant colony optimization
(ACO) để giải quyết bài toán cấu trúc chuỗi nguồn. Đưa ba quy tắc cập nhật mùi khác
nhau đó là ACS, MMAS, SMMAS để giải quyết bài toán.
Chương 4: Đưa ra kết quả thực nghiệm của luận văn, so sánh kết quả của thuật
toán ACO với các quy tắc cập nhật mùi khác nhau, so sánh kết quả của thuật toán
ACO với thuật toán RecBlock.
10
CHƢƠNG I. BÀI TOÁN CẤU TRÚC CHUỖI NGUỒN
1.1.
Một số khái niệm trong sinh học
1.1.1. Một số khái niệm về di truyền
Nhiễm sắc thể: Là một cấu trúc trong tế bào chứa hai loại thông tin gồm chuỗi
DNA và Protein. Trong đó chuỗi DNA mang thông tin di truyền xác định chức năng
và đặc điểm của sinh vật, Protein quyết định đến chức năng và quá trình phát triển của
sinh vật. Tập hợp tất các nhiễm sắc thể của một sinh vật được gọi là hệ gen của sinh
vật đó.
Hình 1.1 Cấu trúc nhiễm sắc thể
Chuỗi DNA (Deoxyribonucleic Acid): Là một chuỗi cấu trúc xoắn kép gồm hai
sợi liên kết, bắt cặp với nhau (A-T, G-C). Trên mỗi một sợi được biểu diễn bởi một
xâu kí tự chứa 4 loại kí tự: A,T,G,C (tên viết tắt của 4 loại nucleotide). Ví dụ, xâu kí tự
“CAGTTGACGGCGAACCGTGCGAGCAGACGGTCGTT“ là một chuỗi DNA.
Gen: Là một đoạn DNA mang thông tin hướng dẫn tổng hợp protein và có một vị
trí nhất định trên nhiễm sắc thể. Gen chịu trách nhiệm về những đặc điểm di truyền.
Hình 1.2 Minh họa gen trên nhiễn sắc thể
Alen: Các dạng khác nhau của một gen (không cùng xảy ra) nằm tại cùng một vị
trí xác định trên một nhiễm sắc thể cụ thể.
Locus: Vị trí riêng biệt của một đoạn DNA mang thông tin (hay còn gọi là gen)
trên nhiễm sắc thể. Nhiều locus được gọi là loci.
11
SNP: Được viết tắt của “single nucleotide polymorphism” được gọi là đa hình
đơn nucleotide (đọc là sờ-níp ), là những biến thể trình tự DNA xảy ra khi một đơn
nucleotide (A, T, C, hoặc G) trong trình tự bộ gen bị thay đổi. Được minh họa bằng
hình ảnh 1.3:
Hình 1.3 Một đột biến điểm xảy ra trong phân tử DNA thay thế cặp nucleotide AT bằng cặp nucleotide G-C
Di truyền: là hiện tượng chuyển những tính trạng của cha mẹ cho con cái thông
qua gen của bố mẹ. Trong sinh học, di truyền chuyển những đặc trưng sinh học từ một
sinh vật cha mẹ đến con cái và nó đồng nghĩa với di chuyển gen, gen thừa nhận mang
thông tin sinh học (hay thông tin di truyền).
Thông tin di truyền: là các thông tin được mã hóa trong các bộ nucleotide, được
di truyền từ thế hệ này sang thế hệ khác ở cấp độ phân tử thông qua các hoạt động
nhân đôi DNA.
Phép lai tạo: là quá trình hình thành nhiễm sắc thể (NST) mới trên cơ sở NST
cha mẹ bằng cách ghép một hay nhiều đoạn gen của hai hay nhiều NST cha mẹ với
nhau.
1.1.2. Quá trình đột biến DNA
Theo thuyết tiến hóa của Darwin thì các loài sinh vật đều tiến hóa từ một tổ tiên
chung [4]. Hệ gien của các sinh vật bị biến đổi theo thời gian trong quá trình tiến hóa
dưới tác động của nhiều yếu tố khác nhau và có thể dẫn đến việc tạo ra các loài sinh
vật mới.
12
Hình 1.4. Minh họa quá trình tiến hóa của các loài từ một tổ tiên chung
Hai trình tự tương đồng:
Hai trình tự DNA của hai sinh vật khác nhau gọi là tương đồng nếu như chúng
cùng tiến hóa từ một trình tự DNA tổ tiên chung.
Quá trình đột biến của các trình tự DNA: Trong quá trình tiến hóa, các nucleotit trên
trình tự DNA có thể bị đột biến. Ba phép đột biến là: đột biến thay thế, đột biến mất,
đột biến thêm
Hình 1.5. Quá trình đột biến giữa hai trình tự DNA
Hình 1.5 minh họa quá trình đột biến của hai trình tự X = “AGGTGGT” và Y =
“ACGGTGG” từ một trình tự DNA tổ tiên chung XY = “ACGGTGGT”.
Các phép đột biến trên trình tự DNA trong quá trình tiến hóa sẽ làm cho hệ gien
của các loài sinh vật khác nhau cả về nội dung cũng như độ dài. Các cá thể của cùng
13
một loài (ví dụ hai người) cũng có hệ gien khác nhau. Tuy nhiên, sự khác biệt giữa hệ
gien của hai người vào khoảng 0.1%. Chính sự khác biệt 0.1% này tạo ra sự khác biệt
giữa hai người khác nhau.
Đột biến giữa hai trình tự prôtêin: Các đột biến nuclêotít trên các trình tự DNA
trong quá trình tiến hóa sẽ dẫn đến các đột biến trên các trình tự axít amin mà chúng
mã hóa. Các đột biến giữa hai trình tự prôtêin cũng có thể xuất hiện trong quá trình
tổng hợp prôtêin từ các trình tự DNA. Ví dụ hai trình tự DNA X =
“CCTGAGCCAATATTGATGAA” và Y = “CCGGAGCCAACTATTGTT" sẽ mã
hóa hai prôtêin tương ứng X = “PEPTIDE” và Y = “PEPTV”.
1.1.3. Khái quát về các Haplotype đƣợc tạo từ các tái tổ hợp
Một haplotype của n vị trí là một chuỗi các nucleotide kích thước m. Nó mô hình
một đoạn nhiễm sắc thể với sự đa hình do sự thay thế nucleotide, được gọi là đa hình
đơn nucleotide (SNP). SNPs trong một quần thể chỉ có hai nucleotide được quan sát
thấy ở mỗi vị trí: các alen của tổ tiên và alen mới.
Sự đa dạng của một Haplotype đại diện giống như một chuỗi các vị trí đa hình
đơn trong trình tự DNA [12]. Trong quá trình tái tổ hợp các vị trí tăng lên theo cấp số
nhân. Để tìm ra nguyên nhân của việc tái tổ hợp được so sánh với các vị trí đa hình và
là vô cùng khó. Tuy nhiên trong bộ gen của người mỗi Haplotype đều đa dạng và có
những Haplotype chiếm ưu thế dùng để đại diện cho việc tìm ra những Haplotype tổ
tiên. Khoảng cách giữa các thế hệ có thể giảm vì có thể tiến hành thực hiện xây dựng.
Một sự tái tổ hợp giữa hai haplotype X và Y có thể được mô hình hóa như một
hoạt động phá vỡ và trao đổi các phần đối diện của X và Y. Tức là nó là hoạt động của
dạng: X5X3, Y5Y3 X5Y3, Y5X3 với X = X5X3, Y = Y5Y3 (biểu thị 5 và 3 là các
phân đoạn của X và Y và X5, Y5 cũng như Y3, X3 có độ dài là giống nhau.
Trong mô hình của con người, chỉ có một trong các haplotype kết quả được
truyền đi. Vì vậy, một sự tái tổ hợp có thể được biểu diễn như X, Y Z, Z là 1 tái tổ
hợp.
Cho C = {C1, C2, …, Ch} là một tập các Haplotype chung và R là một tái tổ hợp
mới. Vấn đề là phải tìm một lộ trình tái tổ hợp tối thiểu (tối thiểu của chuỗi
recombinations) tạo ra từ một tập hợp con CR của C. Một tái tổ hợp X, Y Z trong 1
lộ trình như sau: X and/or Y trong CR hoặc được tạo từ tái tổ hợp trước đó của các
phần tử CR.
R là alen với C nếu và chỉ nếu, cho vị trí bất kỳ i trong R, có tồn tại một
haplotype Ck của C như vậy mà R[i] = Ck[i]. Ở đây, cho bất kỳ haplotype X, X[i] biểu
thị phần tử i của X. Ví dụ, các haplotype:
R = C A C T T G A A C G Alen với C = {C1, C2, C3, C4, C5}:
14
C1 = A C G T C T G A T T
C2 = C A G A T G G A C G
C3 = C C G A T G G C C G
C4 = A A C T T T G A C T
C5 = A C C T C G A A T G
Nếu R không alen với C, R có thể không được tạo từ tái tổ hợp của C. các vị trí
không alen yêu cầu một đột biến mới. Ngược lại, được hiểu là R alen với C và R được
tạo bằng các vị trí của tái tổ hợp C.
Như vậy chúng ta thu được một tập các Hapotype như bảng (1.1). Mỗi haplotype
là một xâu độ dài m của các ký tự {0, 1}. Ký tự 0 biểu thị mã hóa alen dạng tự nhiên
và ký tự 1 biểu thị alen dạng biến dị.
Bảng 1.1. Tập HAP tƣơng đƣơng với haplotype C
Hk
pos
1
2
3
4
5
6
7
8
9
10
HAP1
0
0
0
1
0
0
0
1
0
0
HAP2
1
1
0
0
1
1
0
1
1
1
HAP2
1
0
0
0
1
1
0
0
1
1
HAP4
0
1
1
1
1
0
0
1
1
0
HAP5
0
0
1
1
0
1
1
1
0
1
Khái niệm về điểm ngắt:
Ngoài tế bào, các nhiễm sắc thể kết hợp trong các tế bào của con người. Có một
NST từ bố, và một trong những NST khác từ phía của người mẹ. Nhưng thế hệ của
NST trong quá trình chuyển giao không phải là tĩnh. Trong quá trình hình thành trứng
và tinh trùng, NST tái tổ hợp đó là sự tích tụ của các mảnh vỡ NST với nhau và trao
đổi. Hai mảnh vỡ liên tiếp nhau không cùng một NST thì được gọi là điểm ngắt.
Sau nhiều thế hệ, thông qua các sự kiện tái tổ hợp lặp đi lặp lại, các mảnh vỡ
nhiễm sắc thể ban đầu của tổ tiên đã bị phá vỡ. Một số mảnh vỡ nhiễm sắc thể của tổ
tiên trong các chuỗi DNA của nhiều thế hệ con cháu xuất hiện. Những phần này là
haplotype, nhà di truyền học có thể sử dụng nó để tìm kiếm bệnh hoặc gen liên quan
đến đặc điểm quan trọng về mặt y khoa khác.
15
1.2.
Phát biểu bài toán cấu trúc chuỗi nguồn
Trong nghiên cứu về sự tiến hóa, việc xây dựng lại cấu trúc chuỗi nguồn có một
ý nghĩa lớn với lĩnh vực sinh học. Mục tiêu của bài toán là tìm ra chuỗi gen di truyền
thích hợp được thiết lập để đạt được chuỗi di truyền của cá thể. Việc thiết lập các
chuỗi gen này được xem là mô hình của bài toán cấu trúc chuỗi nguồn, trong đó phải
tìm ra bộ chuỗi gen mà mỗi cá thể của nó đều đạt được từ việc tái tạo chuỗi gen và
giảm thiểu số lượng lai ghép. Bài toán mang tên bài toán cấu trúc chuỗi nguồn. Tìm ra
lời giải của bài toán này có thể giúp phần hiểu rõ thêm về nguồn gốc đặc điểm kiểu
gen cụ thể.
Bài toán được phát biểu như sau:
Cho tập C gồm n tái tổ hợp C={C1,….,Cn}; mỗi tái tổ hợp Ci là một chuỗi chiều
dài m trên chữ cái đã cho, nghĩa là Ci c i1 ci 2 cim với cij , = {0,1} và một số
k cố định. Yêu cầu của bài toán là tìm ra tập F gồm k chuỗi nguồn F= {F1,…, Fk} mỗi
chuỗi nguồn Fi có chuỗi chiều dài m trên chữ cái : Fi f i1 f i 2 f im với f ij j
sao cho mỗi tái tổ hợp được thiết lập từ chuỗi nguồn với số điểm ngắt là nhỏ nhất.
Ký hiệu 0 và 1 thể hiện mã alen ở dạng đồng hợp tử, ký tự 0 biểu thị mã hóa
Alen dạng tự nhiên và ký tự 1 biểu thị alen dạng biến dị (bảng 1.1).
Lời giải F là một lời giải tiềm năng nếu tập tái tổ hợp C có thể được thiết lập từ
F. Đây là trường hợp khi mỗi C i C có thể được phân tích thành chuỗi các đoạn pi ≤
m (nghĩa là các chuỗi) Fri1 Fri2… Frip, như vậy mỗi đoạn Frij xuất hiện ở cùng vị trí
trong ít nhật một tập nguồn. Bằng cách trên, việc phân tích liên quan đến lời giải tiềm
năng được gọi là giảm xuống nếu hai đoạn liên tiếp không xuất hiện trong cùng một
tập nguồn. Mục tiêu tối ưu hóa trong bài toán nhằm tìm ra một lời giải hợp lý F*, với
số tập nguồn cố định đã cho kj, tối thiếu hóa số điểm ngắt.
1.3.
Mô hình bài toán
Để giải quyết bài toán cấu trúc chuỗi nguồn chúng ta tập trung vào hai bài toán
đó là “bài toán tìm số điểm ngắt nhỏ nhất” (1) và “bài toán tìm ra k chuỗi nguồn sao
cho tổng số điểm ngắt nhỏ nhất”(2). Bài toán (1) sẽ dùng để tính chi phí cho bài toán
(2).
1.3.1. Bài toán 1: tìm số điểm ngắt nhỏ nhất
Bài toán cho các tập n tái tổ hợp và cho k chuỗi nguồn, mong muốn xây dựng các
tập tái tổ hợp từ các chuỗi nguồn sao cho số lai ghép là nhỏ nhất.
Input
Cho tập C gồm n tái tổ hợp C={C1,…,Cn}. Mỗi tái tổ hợp Ci có chiều dài m
trên chữ cái , nghĩa là Ci c i1 ci 2 cim với cij , = {0,1}
16
Cho tập F gồm k chuỗi nguồn F= {F1,…, Fk}. Mỗi chuỗi nguồn Fi có chiều dài
m trên chữ cái : Fi f i1 f i 2 f im với f ij , = {0,1}
Output
Tìm ra số điểm ngắt là nhỏ nhất.
Ví dụ 1:
Bộ gen tái tổ hợp C
Chuỗi nguồn F
01001000
01101110 (a)
00111000
10010011 (b)
10011100
10111000 (c)
Phân rã (Decomposition)
10111010
01101110
10110011
Hình 1.6. Ví dụ về bộ gen tái tổ hợp đƣợc tạo từ chuỗi nguồn
Trong ví dụ trên, phía bên trái tập C được trình bày dưới dạng ma trận. Giả định số
lượng chuỗi nguồn cố định là 3, lời giải hợp lý đối với ma trận của 3 chuỗi nguồn được
trình bày ở phần giữa. Ký hiệu chuỗi nguồn đầu tiên là a, chuỗi nguồn thứ hai là b và
chuỗi nguồn thứ ba là c, việc phân tích ma trận gen tái tổ hợp thành từng đoạn lấy từ
chuỗi nguồn được trình bày ở phía bên phải. Điểm ngắt được đánh dấu bằng gạch
thẳng đứng. Đây là sự phân tích với 8 điểm ngắt, là giá trị nhỏ nhất đối với ví dụ này.
1.3.2. Bài toán 2: tìm chuỗi nguồn
Bài toán cho các tập tái tổ hợp và cho một số cố định k. Yêu cầu tìm ra được
đúng k chuỗi nguồn sao cho các tập tái tổ hợp được thiết lập từ chuỗi nguồn có số lai
ghép là nhỏ nhất.
Input
Cho tập C gồm n tái tổ hợp C={C1,…,Cn}. Mỗi tái tổ hợp Ci có chiều dài m
trên chữ cái , nghĩa là Ci c i1 ci 2 cim với cij , = {0,1}
Một số k là cố định.
17
Ví dụ: Đầu vào của bài toán được biểu diễn dưới dạng ma trận như sau:
Hình 1.7. Minh họa đầu vào của bài toán
Output
Tìm giải pháp hợp lý F* đưa ra k chuỗi nguồn mà có số điểm ngắt là nhỏ nhất.
Đầu ra của bài toán được biểu diễn dưới dạng sau:
Hình 1.8. Minh họa đầu ra của bài toán
1.4.
Các phƣơng pháp tiếp cận để giải bài toán cấu trúc chuỗi nguồn
Như ở trên đã phân tích bài toán cấu trúc chuỗi nguồn được chia làm hai bài toán
nhỏ. Bài toán thứ nhất là tìm ra số điểm ngắt nhỏ nhất, bài toán thứ hai là tìm ra số
chuỗi nguồn sao cho số tái tổ hợp con được tạo ra từ các chuỗi nguồn là nhỏ nhất. Bài
toán 1 dùng để làm hàm mục tiêu cho bài toán 2. Bài toán 2 là bài toán chính để giải
quyết bài toán cấu trúc chuỗi nguồn.
18
1.4.1. Phƣơng pháp giải bài toán tìm ra số điểm ngắt nhỏ nhất
Bài toán được phát biểu trong mục 1.3.1. Với bài toán này sử dụng thuật toán
tham lam để giải quyết bài toán.
Bước 1: Lấy hàng đầu tiên C1 trong tập tái tổ hợp C đi so sánh với tất cả các
hàng của chuỗi nguồn F => tìm xem tái tổ hợp C1 được phân tích từ chuỗi nguồn nào
là dài nhất thì tiến hành chọn chuỗi nguồn đó. Nếu tồn tại chuỗi nguồn trùng với tái tổ
hợp C1 => chuyển sang bước 3
Ví dụ:
Bộ gen tái tổ hợp C
Chuỗi nguồn F
01001000
01101110 (a)
00111000
10010011 (b)
10011100
10111000 (c)
Phân rã (Decomposition)
10111010
01101110
10110011
Trong ví dụ trên lấy tái tổ hợp C1 đi so sánh với 3 chuỗi nguồn a, b, c => Tìm ra
được chuỗi nguồn a phân tích tái tổ hợp C1 thành độ dài nhất là 2 => xác định 1 điểm
ngắt.
Bước 2: Xét các vị trí còn lại trong C1: tiến hành xét với vị trí còn lại từ các
chuỗi nguồn còn lại (trừ chuỗi nguồn vừa chọn) và lặp lại bước 1. Cứ tiếp tục cho đến
khi hết độ dài m.
Ví dụ:
+) Xét từ vị trí thứ 3 trong C1, xét trong 2 chuỗi nguồn còn lại là b và c => Chọn
chuỗi nguồn b với độ dài là 1.
+) Từ vị trí thứ 4 lại tiến hành xét với 2 chuỗi a và c=> chọn ra được chuỗi a với
độ dài bằng 2.
…
Bước 3: Các hàng tiếp theo C2, C3, … làm tương tự như bước 1 và bước 2.
1.4.2. Phƣơng pháp giải bài toán tìm số chuỗi nguồn
Đây là bài toán chính của bài toán cấu trúc chuỗi nguồn. Đã có rất nhiều phương
pháp đưa ra để giải quyết bài toán. Một thuật toán dựa trên phương pháp quy hoạch
động lần đầu tiên được đề xuất bởi Ukkonen [9]. Tuy nhiên, phương pháp này không
hiệu quả khi số chuỗi nguồn và độ dài của tái tổ hợp lớn. Một thuật toán quy hoạch
động khác được Rastas và Ukkonen đưa ra [17]. Lyngso và Song [18] đã đưa ra thuật
19
toán branch-and-bound (thuật toán cận và nhánh). Mặc dù đầy triển vọng nhưng
phương pháp này chỉ được đánh giá trong mức chuỗi nguồn và tập các tái tổ hợp nhỏ.
Bài toán cấu trúc chuỗi nguồn được nghiên cứu rộng rãi và nó liên quan đến
nhiều vấn đề khác. El-Mabrouk và Labuda [15] đã tập trung vào vấn đề tái cấu trúc dễ
điều khiển và đơn giản hơn nhiều: đưa ra bộ gen chuỗi nguồn và gen tái tổ hợp. Họ
muốn tìm kiếm một chất phân hủy tối thiểu cho gen tái tổ hợp. Một ma trận gen tái tổ
hợp được đưa ra, việc phân chia các điểm liên tục gọi là khối, được xác định theo một
số quy tắc và mỗi gen tái tổ hợp được chia phù hợp vào các chuỗi con haplotype. Mục
đích là để phân chia, với mỗi khối một màu sắc khác nhau đối với các chuỗi con
haplotype riêng biệt trong một khối, như là tổng số màu sắc thay đổi giữa hai chuỗi
con haplotype liền kề trong cùng một gen tái tổ hợp là tối thiểu. Vấn đề màu sắc của
mỗi khối có thể được mã hóa thành một phiên bản của bài toán kết hợp phân chia có
điều chỉnh. Trong phần này luận văn trình bày lại thuật toán RecBlock.
Tƣ tƣởng thuật toán
Thuật toán RecBlock được Roli và Christian Blum để xuất vào tháng 10 năm
2009 [8].
RecBlock coi lời giải F như một ma trận với k hàng và m cột. Bắt đầu từ một ma
trận trống, từng bước xây dựng để làm đầy các cột bên cạnh. Ban đầu xây dựng cho
cột đầu tiên, bước tiếp theo xây dựng cho cột thứ hai sao cho ít điểm ngắt nhất đến
thời điểm đó, thực hiện cho tới khi xây dựng đủ m cột.
Thuật toán
Thuật toán Recblock
1. Input: Cho tập C gồm n các tái tổ hợp có độ dài m
k: số lượng chuỗi nguồn
2. Ma trận F: k hàng, m cột
3. nbp = 0 (nbp: điểm ngắt)
4. For i = 1, …, m do
5. Xây dựng từng cột cho ma trận F sao cho điểm ngắt nhỏ nhất
nbp = nbp + add
6. end for
7. output: Lời giải F với tổng số điểm ngắt nbp
Hình 1.9. Đặc tả thuật toán Recblock
Xây dựng lời giải
20
Coi lời giải F như một ma trận F[k * m], hàng i đại diện cho chuỗi nguồn i, i = 1,
…, k
Tập các tái tổ hợp C là 1 ma trận C[n * m].
Khởi tạo F là một ma trận , từng bước xây dựng để làm đầy các cột trống bên
cạnh, bắt đầu từ cột đầu tiên.
Bước 1: Xây dựng cột đầu tiên của ma trận F
- Gọi p là số các phần từ 0 trong cột đầu tiên của ma trận F
- Sử dụng hai bộ đếm n0: đếm số phần tử 0 và n1: đếm số phần tử 1 trong cột đầu
tiên.
- Ban đầu khởi tạo n0 = 1 và n1 = 1 để đảm bảo có ít nhật một phần tử 0 và một
phần tử 1 trong cột đầu tiên.
- Sau k – 2 lần rút ra một số ngẫu nhiên q[0,1] nếu q p tăng n0 lên một giá trị và
ngược lại. Như vậy cột đầu tiên được tạo bao gồm n0 phần tử 0 và n1 phần tử 1.
- Đối với mỗi hàng i của ma trận C đặt biến cpi lưu trữ vị trí các điểm dừng cuối
cùng. Ban đầu khởi tạo cpi = 0 vì chưa có điểm dừng tồn tại cụ thể hơn cpi = 0 (i = 1,
2, …, m). Hơn nữa đặt biến repi lưu trữ các chỉ số của tập nguồn đại diện cho dòng i
của cột C sau điểm ngắt cpi cuối cùng.
Bước 2: Xây dựng cho các cột còn lại
- Giả sử cột cần điền là cột j, các vị trí của cột j được điền kế tiếp nhau bắt đầu từ
hàng 1. Đối với vị trí fij đếm n0, n1 của hàng i trong ma trận C và kết hợp với phần tử
n0, n1 của hàng i-1 trong ma trận F.
- Trong trường hợp no > n1 thiết lập fij = 0. Trường hợp no < n1 thiết lập fij = 1.
Ngược lại no = n1 chọn fij đồng nhất một cách ngẫu nhiên.
- Cứ tiếp tục như vậy cho đến khi xây dựng xong hết các cột của ma trận F. Đối
với thuật toán RecBlock đi đến cột nào tìm ra được số điểm ngắt và xây dựng được cột
tiếp theo của ma trận F, nên thuật toán RecBlock chỉ cần chạy một lần là cho ra kết
quả.
21
CHƢƠNG II. GIỚI THIỆU VỀ THUẬT TOÁN ANT COLONY
OPTIMIZATION (ACO)
2.1.
Giới thiệu về thuật toán ACO
Bài toán tối ưu hóa tổ hợp (Combinatorial Optimization Problems) là bài toán
hấp dẫn và thú vị phần lớn chúng đều dễ để hình dung nhưng khó tìm ra lời giải. Nhiều
bài toán tối ưu hóa tổ hợp là các bài toán NP – khó và chúng không thể giải được trong
thời gian đa thức. Trên thực tế người ta thường giải quyết các bài toán này bằng các
phương pháp xấp xỉ, chúng có nghiệm gần tối ưu và thời gian chạy khá ngắn. Các
thuật toán thuộc loại này thường được gọi là các thuật toán heuristic, chúng được sử
dụng để giải quyết các bài toán cụ thể. Mở rộng của chúng là các bài toán
metaheuristic có thể giải quyết được cả một lớp các bài toán rộng lớn. Phương pháp
tối ưu hóa đàn kiến (Ant Colony Optimization – ACO) là một phương pháp theo
hướng tiếp cận như thế.
ACO là một mô hình để thiết kế các thuật toán metaheuristic cho việc giải quyết
bài toán tối ưu hóa tổ hợp
ACO – phương pháp tối ưu hóa đàn kiến [1] mô phỏng hành vi của bầy kiến
trong tự nhiên nhằm tìm kiếm đường đi ngắn nhất giữa tổ kiến và nguốn thức ăn dựa
trên mật độ mùi (Pheromone) mà các con kiến để lại trên đường đi. Thuật toán này lần
đầu tiên được ứng dụng giải bài toán phân loại các trạm làm việc vào năm 1991. Sau
đó, rất nhiều các biến thể của thuật toán dựa trên các nguyên lý cơ bản của nó được
giới thiệu. Đặc điểm chủ yếu của thuật toán ACO là sự kết hợp của các thông tin về
cấu trúc của lời giải triển vọng với thông tin về cấu trúc của các lời giải tốt trước đó.
Hiệu quả nổi trội của thuật toán ACO đã được thể hiện khi so sánh với một số
thuật toán nổi tiếng khác như thuật toán di truyền (GA), Tabu-Search, Local Search,
… Người ta đã áp dụng rất thành công các thuật toán kiến trong một số các bài toán tối
ưu thường gặp như: bài toán người chào hàng, bài toán người đưa thư, bài toán gán,
bài toán tô màu đồ thị, bài toán lập lịch, …
2.2. Mô hình mô phỏng của thuật toán
2.2.1. Kiến tự nhiên
Trên đường đi, mỗi con kiến để lại một chất hóa học gọi là vết mùi (pheromone)
dùng để đánh dấu đường đi. Bằng cách cảm nhận vết mùi, kiến có thể lần theo đường
đi đến nguồn thức ăn được các con kiến khác khám phá theo phương thức chọn ngẫu
nhiên có định hướng theo nồng độ vết mùi. Kiến chịu ảnh hưởng của các vết mùi của
các con kiến khác chính là ý tưởng thiết kế thuật toán ACO.
22
Hình 2.1. Một ví dụ về hoạt động của bầy kiến trong thực tế
Ví dụ trên là hành trình của bầy kiến. Trong (hình a) cho thấy bầy kiến đi từ tổ E
đến nơi chứa thức ăn A và ngược lại. Một cản trở xuất hiện trên đường tại vị trí B hoặc
D, bầy kiến phải quyết định rẽ phải hoặc rẽ trái (hình b). Sự lựa chọn sẽ bị tác động
lớn khi xuất hiện mùi hương thu hút của các con khác để lại trên đường đi.
Nếu mùi hương thu hút từ bên phía phải càng lớn sẽ tạo cho bầy kiến một động
lực mạnh mẽ hơn và do đó xác suất rẽ phải sẽ lớn hơn. Con kiến đầu đàn đến điểm B
(hoặc D) sẽ có xác suất rẽ phải như rẽ trái (vì không có mùi hương thu hút trước đó
trên cả hai tuyến). Bởi vì tuyến B – C – D ngắn hơn B – H – D, con kiến đầu đàn sau
đó sẽ đến điểm D trước khi con kiến đầu đàn đi theo tuyến B – H – D (hình c).
Kết quả là một con kiến đi từ E đến D sẽ tìm thấy mùi hương thu hút trên tuyến
D – C – B và làm cho một nửa con kiến còn lại quyết định đi theo hướng D – C – B –
A và do đó bầy kiến đã đi qua D – C – B. Do vậy số các con kiến đi theo tuyến D – C
– B theo đơn vị thời gian sẽ càng nhiều hơn so với số các con kiến đi theo tuyến B –
H – D.
Nếu mùi hương thu hút trên tuyến đi ngắn hơn lớn hơn sẽ thúc đẩy việc di
chuyển nhanh hơn so với tuyến dài hơn, do đó xác suất chọn tuyến ngắn hơn là lớn
hơn.
23
2.2.2. Kiến nhân tạo
Từ thực nghiệm trên cho thấy đàn kiến tự nhiên có thể sử dụng luật di chuyển
theo xác suất, dựa trên thông tin địa phương để tìm được đường đi ngắn nhất giữa hai
địa điểm. Vết mùi của đàn kiến cho phép liên tưởng tới cách học tăng cường
(reinforcement learning) trong bài toán chọn tác động tối ưu [1], gợi mở mô hình mô
phỏng cho bài toán tìm đường đi ngắn nhất giữa hai nút (tương ứng là tổ và nguồn
thức ăn) trên đồ thị.
Do sử dụng mô hình bầy kiến nhân tạo như là một phương pháp tối ưu, nên hệ
thống sẽ có một vài điểm khác so với cơ chế hoạt động của bầy kiến trong thực tế.
Bầy kiến nhân tạo có một vài bộ nhớ/ ký ức nhất định.
Chúng không hoàn toàn mù, tức cũng có một vài tri thức nhất định trong
việc quan sát, đánh giá các thay đổi của môi trường.
Chúng sẽ sống trong môi trường mà miền thời gian là rời rạc.
Hình 2.2. Một ví dụ về đàn kiến nhân tạo
Một ý tưởng được đưa ra là nếu tại một điểm đó, một con kiến chọn một đường
đi từ tập các đường đi khác nhau, nó sẽ lựa chọn đường đi có khả năng đạt tới đích cao
nhất. Hơn nữa đường đi đó cũng có nghĩa là đường đi ngắn nhất.
2.3.
Trình bày giải thuật
Khi áp dụng ACO cho các bài toán cụ thể, có bốn yếu tố quyết định hiệu quả của thuật
toán:
- Xây dựng đồ thị cấu trúc thích hợp: Tùy thuộc vào đặc thù của bài toán
- Xây dựng lời giải tuần tự: Tùy thuộc vào đặc thù của bài toán