Tải bản đầy đủ (.pdf) (64 trang)

Thuật toán ACO và ứng dụng vào tối ưu hóa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.62 MB, 64 trang )

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.
Trên tất cả, tôi xin gửi lời biết ơn tới bố mẹ, gia đình người thân. Bố mẹ đã phải
làm việc vất vả tạo cơ hội cho tôi chọn con đường đi của mình.
Một lần nữa, tôi xin chân thành cảm ơn!
Hà Nội, tháng 10 năm 2013.
Học viên
Nguyễn Thị Chi


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 10 năm 2013.
Học viên


Nguyễn Thị Chi


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 KÍ HIỆU, TỪ VIẾT TẮT .......................................................... 6
DANH MỤC CÁC BẢNG BIỂU ............................................................................... 7
DANH MỤC CÁC HÌNH VẼ .................................................................................... 8
MỞ ĐẦU .................................................................................................................... 9
CHƯƠNG I .............................................................................................................. 11
GIỚI THIỆU VỀ THUẬT TOÁN ANT COLONY OPTIMIZATION (ACO)..... 11
1.1 Lịch sử ra đời của thuật toán ACO .................................................................... 11
1.2. Thuật toán ACO .............................................................................................. 13
1.2.1 Đồ thị cấu trúc ............................................................................................ 14
1.2.2 Trình bày về thuật toán ACO cơ bản ......................................................... 15
1.2.3 Quy tắc cập nhật vết mùi ........................................................................... 16
1.2.3.1 Thuật toán AS.......................................................................................... 16
1.2.3.2 Thuật toán ACS ....................................................................................... 17
1.2.3.3 Thuật toán Max-Min................................................................................ 17
1.2.3.4 Thuật toán Max- Min trơn ....................................................................... 18
1.3. Ứ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 ........................................................................................................................ 18
1.3.1 Bài toán người chào hàng trong thực tế ...................................................... 18
1.3.2 Phát biểu bài toán người đưa hàng trên mô hình hóa đồ thị ......................... 18
1.3.3 Áp dụng thuật toán ACO giải quyết bài toán người chào hàng.................... 19
CHƯƠNG II............................................................................................................. 22

TƯƠNG TÁC TRỘI QUY VỀ BÀI TOÁN TƯƠNG TÁC GEN ........................... 22
2.1 Tương tác gen và các hiệu ứng gây ra ............................................................... 22
2.1.1 Khái niệm về tương tác gen ........................................................................ 22
2.1.2 Hệ quả của tương tác tác gen và hướng nghiên cứu .................................... 24
2.1.2.1 Hệ quả của tương tác gen......................................................................... 24


4

2.1.2.2 Hướng nghiên cứu ................................................................................... 25
2.2 Bài toán phát hiện tương tác gen ....................................................................... 26
2.2.1 Mục đích vì sao cần phát hiện tương tác gen .............................................. 26
2.2.2 Khái quát quá trình nghiên cứu tìm tương tác gen....................................... 26
2.2.3 Phát biểu bài toán tương tác gen ................................................................. 27
2.2.3.1 Phát biểu bài toán .................................................................................... 27
2.2.3.2 Mô hình hóa bài toán ............................................................................... 28
CHƯƠNG III ........................................................................................................... 29
GIẢI BÀI TOÁN TƯƠNG TÁC GEN BẰNG PHƯƠNG PHÁP ACO ................ 29
3.1 Các phương pháp tiếp cận, và ưu nhược điểm ................................................... 29
3.1.1 Thuật toán BEAM ...................................................................................... 29
3.1.2 Thuật toán SNPHarvester ........................................................................... 29
3.1.3 Ưu, nhược điểm.......................................................................................... 30
3.1.3.1 Ưu điểm .................................................................................................. 30
3.1.3.2 Nhược điểm ............................................................................................. 30
3.2 Tương quan giữa bài toán tương tác gen với bài toán người chào hàng ............. 31
3.3 Thuật toán ACO để giải quyết bài toán tương tác gen ....................................... 31
3.3.1 Trình bày thuật toán ................................................................................... 31
3.3.1.1 Thuật toán Generic ACO ......................................................................... 31
3.3.1.2 Thuật toán AntEpiSeeker ......................................................................... 34
3.3.2 Ý nghĩa các tham số ................................................................................... 37

3.3.3 Xác suất Chi-square và trị số

.......................................................... 38

3.3.3.1 Xác suất Chi-square ................................................................................. 38
3.3.3.2 Trị số

........................................................................................... 40

3.3.3.3 Vận dụng Chi-square trong bài toán......................................................... 41
CHƯƠNG IV ........................................................................................................... 44
KẾT QUẢ THỰC NGHIỆM ................................................................................... 44
4.1 Kết quả thực nghiệm ......................................................................................... 44
4.1.1 Các thông số cài đặt.................................................................................... 44
4.1.2 Các kết quả thực nghiệm của bài báo .......................................................... 45


5

4.1.3 Xử lý song song và quy tắc cập nhật mùi mới Max-Min trơn (SMMAS) .... 50
4.1.4 Phần mềm sử dụng ..................................................................................... 60
4.2 Ý nghĩa kết quả thực nghiệm ............................................................................ 60
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................................... 62
TÀI LIỆU THAM KHẢO........................................................................................ 63


6

DANH MỤC CÁC KÍ HIỆU, TỪ VIẾT TẮT
ACO


Ant colony optimization

ACS

Ant colony system

ADN

Acid deoxyribo nucleic

AMD

Age related macular

ANTS

Approximate nondeterministic tree search

AS

Ant system

ARN

Axit ribonucleic

BEAM

Bayesian epistasis association mapping


GWA

Genome wide apporoach

HGP

Human genome project

MCMC

Markov chain monte carlob

MMAS

Max min ant system

SMMAS

Smoothed max min ant system

3-LAS

Three level ant system


7

DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1 Một số thuật toán ACO ............................................................................... 19

Bảng 2.1 Minh họa đầu vào của bài toán.................................................................... 28
Bảng 2.2 Minh họa đầu ra của bài toán ...................................................................... 28
Bảng 3.1 Minh họa tương quan đồ thị ........................................................................ 31
Bảng 3.2 Tuổi và kết quả học tập của sinh viên.......................................................... 39
Bảng 3.3 Kết quả của trị số



của ví dụ ............................................................. 40

Bảng 3.4 Ví dụ đầu vào của bài toán với 2 vị trí......................................................... 41
Bảng 3.5 Các giá trị của T với mẫu cá thể .................................................................. 41
Bảng 3.6 Kết quả của trị số



của ví dụ ............................................................. 43

Bảng 4.1 So sánh tỉ lệ giảm thiểu dương tính giả ....................................................... 48
Bảng 4.2 Kết quả trước khi chưa giảm thiểu dương tính giả ....................................... 49
Bảng 4.3 Kết quả sau khi giảm thiểu dương tính giả .................................................. 49
Bảng 4.4 So sánh tỉ lệ phần trăm phát hiện trên bộ dữ liệu lớn ................................... 50
Bảng 4.5 Thời gian chạy của các thuật toán ............................................................... 50
Bảng 4.6 Kết quả thực nghiệm chung iItCountLarge = 150; iItCountSmall =300 ....... 53
Bảng 4.7 Liệt kê những bộ SNPs giống nhau iItCountLarge = 150; iItCountSmall =300 .......... 54
Bảng 4.8 Liệt kê những vị trí giống nhau iItCountLarge = 150; iItCountSmall =300 55
Bảng 4.9 Kết quả thực nghiệm chung iItCountLarge = 2500; iItCountSmall =5000 ... 57
Bảng 4.10 Liệt kê những bộ SNPs giống nhau iItCountLarge = 2500; iItCountSmall =5000 ...... 58
Bảng 4.11 Liệt kê những vị trí giống nhau iItCountLarge = 2500; iItCountSmall =5000 ............ 58



8

DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Thực nghiệm hành vi của kiến ..................................................................... 12
Hình 1.2 Thực nghiệm bổ sung .................................................................................. 13
Hình 1.3 Đặc tả thuật toán ACO ............................................................................... 16
Hình 1.4 Minh họa hình ảnh bài toán người đưa hàng ................................................ 18
Hình 1.5 Đặc tả thuật toán ACO cho bài toán TSP ..................................................... 21
Hình 2.1 Cấu trúc nhiễm sắc thể ................................................................................ 22
Hình 2.2 Minh họa gen trên nhiễm sắc thể ................................................................. 22
Hình 2.3 Một đột biến điểm xảy ra trong phân tử DNA thay thế ................................ 23
cặp nucleotide A-T bằng cặp nucleotide G-C ............................................................ 23
Hình 2.4 Đột biến gen KIT trong u mô đệm đường tiêu hóa....................................... 25
Hình 3.1 Đặc tả thuật toán SNPHarvester .................................................................. 30
Hình 3.2 Đặc tả thuật toán Generic ACO ................................................................... 30
Hình 3.3 Mô tả hoạt động của kiến ............................................................................ 33
Hình 3.4 Mô tả thuật toán AntEpiSeeker tổng quát .................................................... 36
Hình 3.5 Đặc tả thuật toán AntEpiSeeker ................................................................... 37
Hình 4.1 Mô tả INPFILE ........................................................................................... 44
Hình 4.2 Mô tả OUTFILE.......................................................................................... 45
Hình 4.3 Minh họa ý nghĩa ba mô hình 1,2,3 ............................................................. 46
Hình 4.4 Đánh giá hiệu năng giữa các thuật toán AntEpiSeeker. SNPHarvester, BEAM
và Generic ACO ........................................................................................................ 47
Hình 4.5 Minh họa OpenMP ...................................................................................... 52


9

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 nông nghiệp và lĩnh vực y-dược.
Vấn đề về sức khỏe và bệnh tật của con người là những vấn đề rất được quan tâm
và chú ý. Hiện nay có rất nhiều các căn bệnh như: Bệnh ung thư, bệnh thoái hóa điểm
vàng, bệnh tim mạch… Tất cả đều là những căn bệnh di truyền. Có nhiều các tác nhân
liên quan đến bệnh như: Tác nhân vật lý, chế độ ăn uống, tác nhân hóa học,…, nhưng
yếu tố di truyền vẫn là tác nhân chính.
Gen di truyền được công nhận rộng khắp rằng nhiều căn bệnh có thể là nguyên
nhân bởi những tác động của nhiều loại gen biến đổi, trong mỗi gen của các cá thể,
những gen đó chiếm số ít nhưng lại có tác động mạnh. Vấn đề đang được quan tâm
hiện nay là tiến hành nghiên cứu về các gen di truyền: Xác định vị trí gen trên một
bệnh chứng, gen xác định là nguyên nhân chính để dẫn đến các căn bệnh. Phần lớn
trong số những biến thể di truyền là hàng triệu các điểm tại những vị trí nucleotide
nhất định đã làm thay đổi mã di truyền do sự biến đổi của đơn nucleotide trong bộ gen.
Khi xảy ra đột biến điểm làm cho một đơn nucleotide bị biến đổi hoặc ngược lại tạo ra
một “single nucleotide polymorphism (SNP)” còn gọi là đa hình đơn nucleotide. Khi
SNPs xảy ra trong gen hoặc trong một khu vực gần một gen quy định, nó có thể có vai
trò trực tiếp đến sự xuất hiện bệnh bằng cách ảnh hưởng đến chức năng của gen. SNPs
hiện đang được Dự án quốc tế HapMap tiến hành một cách hệ thống. Các nhà khoa
học tin rằng SNP bản đồ sẽ giúp họ có nhiều gen liên quan tới các bệnh phức tạp.
Đã có nhiều thuật toán được nghiên cứu và công bố giải quyết bài toán tương tác
gen để đưa ra tập các vị trí nucleotide biến đổi (hay còn gọi là SNP) tương tác với
nhau trội được dự đoán là có khả năng cao liên quan đến căn bệnh. Dựa trên đó, các
nhà nghiên cứu có thể tìm kiếm ra vị trí các gen liên quan đến các căn bệnh cụ thể mà

họ quan tâm.
Trong luận văn này, tôi sẽ trình bày khảo cứu lại của tác giả bài báo[22] về cách
giải quyết bài toán tương tác gen sử dụng thuật toán Ant Colony Optimization (ACO)
để giải quyết. Mục đích để chỉ ra thuật toán AntEpiSeeker có thể giải quyết bài toán
với những bộ dữ liệu lớn và đưa ra được kết quả tối ưu hơn so với các thuật toán trước


10

đó. Ngoài ra, trong luận văn tôi thực hiện xử lý song song hóa các tác vụ trong tính
toán của Chi-square giúp đẩy nhanh trong quá trình việc cập nhật mùi của kiến mà vẫn
đảm bảo tính đúng đắn của thuật toán, cài đặt thực nghiệm với quy tắc cập nhật mùi
mới Max-Min trơn (Smoothed Max Min Ant System – SMMAS) được Đỗ Đức Đông
đề xuất năm 2012[1].
Ngoài phần kết luận, cấu trúc nội dung của luận văn bao gồm 4 chương:
Chương 1: Trình bày tổng quan về 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 2: Trình bày sơ lược các khái niệm về sinh học, phát biểu bài toán tương
tác gen, hệ quả của tương tác gen và mục đích của việc phát hiện tương tác gen.
Chương 3: Giới thiệu một vài thuật toán giải quyết bài toán tương tác gen với
những ưu, nhược điểm. Trình bày lại thuật toán AntEpiSeeker và trình bày về hàm
kiểm định thống kê Chi-square.
Chương 4: Đưa ra kết quả mà bài báo công bố, giải thích ý nghĩa của các tham số
và ý nghĩa đánh giá các thuật toán với nhau khi nào là tốt khi nào là xấu. Chạy thực
nghiệm lại với một bộ dữ liệu mô phỏng để so sánh tốc độ của thuật toán ban đầu với
tốc độ sau khi xử lý song song hóa các tác vụ của kiến và kiểm tra khả năng tìm ra tập
các vị trí nucleotide biến đổi ở phương pháp cập nhật mùi mới.


11


CHƯƠNG I
GIỚI THIỆU VỀ THUẬT TOÁN ANT COLONY OPTIMIZATION (ACO)
1.1 Lịch sử ra đời của thuật toán ACO
1.1.1 ACO ra đời từ việc quan sát hành vi của đàn kiến trong quá trình di chuyển
tìm kiếm thức ăn
Thuật toán tối ưu hóa đàn kiến (ACO) được xem là một trong những phương
pháp hiệu quả trong vấn đề giải quyết các bài toán tối ưu tổ hợp NP-khó. Trong thực tế
và trong các hệ thống thông tin, ta thường có những bài toán thuộc dạng NP-khó chẳng
hạn như: Bài toán người chào hàng, bài toán tô màu đồ thị, định tuyến các gói tin trên
mạng Internet hay trong các tổng đài điện thoại, bài toán phân bậc hai, bài toán định
tuyến xe [6-8,15,18,20].
Thuật toán hệ kiến (Ant System -AS) ACO đầu tiên được đề xuất bởi Dorigo,
Maniezo và Colorni giải bài toán người chào hàng (Traveling Salesman ProblemTSP)[11]. Ý tưởng được tác giả lấy dựa trên việc nghiên cứu từ các hành vi của kiến
thực, sau cơ sở lý thuyết được nghiên cứu vào năm 1989[13]. Một trong những vấn đề
quan tâm là tại sao trong quá trình tìm kiếm thức ăn từ tổ tới nguồn thức ăn của các
con kiến chúng lại có khả năng tìm ra đường đi ngắn nhất để đi mặc dù chúng không
có khả năng đo độ dài đường đi. Trong quá trình nghiên cứu người ta phát hiện ra đàn
kiến tìm đường đi như thế nào. Trên đường đi, mỗi con kiến để lại một vết hóa chất
gọi là vết mùi (pheromone trail), chúng có khả năng ứ đọng, bay hơi và có thể nhận
biết bởi các con kiến khác. Bằng cách cảm nhận vết mùi, kiến có thể lần đi theo đường
mà 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 hoạt động dựa trên ảnh hưởng 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.
1.1.2 Mùi và ý nghĩa vết mùi trên đường đi trong quá trình di chuyển của kiến
Các vết mùi chính là phương tiện giao tiếp gián tiếp giữa các con kiến. Đường có
nồng độ vết mùi càng cao thì càng có nhiều khả năng được các con kiến chọn, nhờ
cách giao tiếp gián tiếp mà đàn kiến sẽ tìm được đường đi ngắn nhất từ tổ tới nguồn
thức ăn.
Deneubourg và các đồng nghiệp tiến hành thực nghiệm hành vi để lại vết mùi và

đi theo vết mùi của kiến từ tổ tới nguồn thức ăn và ngược lại (1989) [13]. Thí nghiệm
này là cơ sở lý thuyết và cũng tạo ra ý tưởng về thuật toán ACO mà Dorigo đưa ra sau
này. Xem minh họa trong hình 1.1 [10], dựa vào hình ta có thể phân ra làm hai cuộc
thực nghiệm.


12

Thực nghiệm thứ nhất, ban đầu (xem hình 1.1.A) việc tìm kiếm thức ăn của các
con kiến kết nối giữa tổ và nguồn thức ăn là một đường thẳng, sau quá trình quan sát
thấy các con kiến thực hiện đi trên một đường thẳng nối từ nguồn tới tổ. Điều đó cũng
cho thấy ý nghĩa căn bản cho các con kiến để hình thành và duy trì đi trên một đường
là có một vết mùi. Trên đường đi mỗi con kiến sẽ để lại một vết mùi cho mình. Mỗi
một con kiến sẽ lựa chọn cho mình đường đi với vết mùi nhiều hơn. Để làm rõ hơn
vấn đề ta tiến hành tiếp một cuộc thực nghiệm.
Thực nghiệm thứ hai, trên con đường ban đầu bất ngờ xuất hiện một vật trở ngại
làm gián đoạn con đường (xem hình 1.1.B). Con đường ban đầu có thể hình dung
giống như một cây cầu thẳng nối giữa tổ và nguồn thức ăn (thực nghiệm thứ nhất), đến
thực nghiệm thứ hai con đường có vật làm trở ngại có thể hình dung được thay bằng
cuộc thực nghiệm trên cây cầu đôi với hai nhánh có độ dài khác nhau. Các con kiến
không thể thực hiện đi theo con đường ban đầu mà phải thực hiện rẽ trái hoặc phải
(xem hình 1.1.C). Ban đầu, không có vết mùi nào trên hai nhánh, do đó kiến sẽ lựa
chọn nhánh bất kỳ để đi, việc lựa chọn hai nhánh đi là như nhau. Nhưng sau quá trình
quan sát, nhánh ngắn đã có nhiều kiến đi hơn, sau một khoảng thời gian nhất định hầu
như tất cả các con kiến chuyển sang đi theo nhánh ngắn (xem hình 1.1.D). Điều đó cho
thấy rằng, nhánh có nhiều kiến lựa chọn sẽ có nồng độ mùi lớn hơn nồng độ mùi của
các nhánh còn lại. Cuối cùng, hầu như tất cả các kiến sẽ tập trung đi trên một nhánh.
Điều này chứng minh bầy kiến đã sử dụng phương thức thăm dò, tìm đường mới.

Hình 1.1 Thực nghiệm hành vi của kiến

(A) Các con kiến đi theo một đường. (B) Xuất hiện hai nhánh có độ dài khác
nhau. (C) Vết mùi xuất hiện nhiều hơn trên nhánh ngắn. (D) Tất cả kiến chọn con
đường ngắn.
Một điểm quan tâm, khi ta thực hiện thêm thực nghiệm bổ sung [8]. Ở thực
nghiệm trên, quan sát hành vi của kiến trên hai nhánh đường. Trong phần thực nghiệm
này ban đầu kiến chỉ đi trên một đường nhánh dài nối từ tổ tới nguồn thức ăn, quá
trình tìm kiếm đang hội tụ (xem hình 1.2), sau 30 phút mới thêm một đường nhánh


13

ngắn khác nối từ tổ tới nguồn thức ăn. Trong trường hợp này kiến chỉ thực hiện đi trên
nhánh dài. Điều này có thể lý giải là nồng độ vết mùi trên nhánh dài cao hơn nhánh
ngắn, do lượng vết mùi bay hơi chậm, vì thế đa số các con kiến vẫn chọn nhánh có
nồng độ vết mùi cao hơn. Sự bay hơi của vết mùi có lợi cho thăm dò các con đường
mới, việc bay hơi chậm làm cho kiến quên đi con đường tối ưu cục bộ đã tìm thấy
trước để khám phá ra đường đi mới.

Hình 1.2 Thực nghiệm bổ sung
Thực hiện mô phỏng hành vi của kiến thực thông qua mô hình kiến nhân tạo.
Kiến nhân tạo có bộ nhớ riêng, có khả năng ghi nhớ các đỉnh trong hành trình và tính
được đường đi kiến chọn. Ngoài ra, kiến có thể trao đổi thông tin với nhau, thực hiện
tính toán cần thiết, cập nhật mùi…
Sử dụng mô hình kiến nhân tạo, Dorigo (1991) [11] đã xây dựng thuật toán Hệ
kiến (AS), đây là thuật toán ACO đầu tiên giải bài toán người chào hàng. Đến nay có
nhiều biến thể được đề xuất, hệ đàn kiến ACS (Ant Cology System) [8,9], hệ kiến MaxMin (Max-Min Ant System- MMAS) [19], một đề xuất mới gần đây đã cải tiến thuật
toán Max-Min là Max-Min trơn (Smoothed Max-Min Ant System- SMMAS) và phương
pháp 3-LAS (Three level Ant System)[1].
1.2. Thuật toán ACO
Khi áp dụng ACO cho các bài toán cụ thể, có ba yếu tố quyết định hiệu quả của

thuật toán:
- Xây dựng đồ thi cấu trúc thích hợp.
- Chọn thông tin heuristic: Thông tin heuristic tốt sẽ làm tăng hiệu quả của thuật
toán. Tuy nhiên có nhiều bài toán không có thông tin này thì có thể đánh giá
chúng như nhau.
- Chọn quy tắc cập nhật mùi: Quy tắc cập nhật mùi thể hiện chiến lược học của
thuật toán. Hai yếu tố đầu: Đồ thị cấu trúc và thông tin heuristic phụ thuộc vào
bài toán cụ thể, còn quy tắc cập nhật mùi là yếu tố phổ dụng và thường dùng
làm tên để phân biệt cho các thuật toán ACO.


14

1.2.1 Đồ thị cấu trúc
Bài toán tối ưu tổ hợp tổng quát
Cho một tập hữu hạn C gồm n thành phần: C
sao cho mỗi phương
án s trong S đều biểu diễn được nhờ liên kết các thành phần bên trong được lấy từ tập
hữu hạn C. Cho hàm số f thoả mãn f: S
R. Cần tìm điểm s =
S
sao cho hàm mục tiêu
đạt giá trị lớn nhất đối với bài toán cực đại và đạt giá
trị nhỏ nhất đối với bài toán cực tiểu. Điểm s được gọi là phương án khả thi hay
phương án chấp nhận được.
Xét với bài toán cực đại, điểm s* được gọi là phương án tối ưu toàn cục nếu s*
S và
với
S. Ngược lại,
với bài toán cực tiểu.

Đồ thị cấu trúc
Mỗi bài toán tối ưu tổ hợp tổng quát ứng với một bộ ba
trong đó S là
tập hữu hạn các trạng thái (lời giải tiềm năng hay phương án), f là hàm mục tiêu xác
định trên S, còn Ω là tập các ràng buộc. Các tập C, S, Ω có đặc tính như sau[1,tr.3132]:
1) Ký hiệu X là tập các vectơ trong C độ dài không quá h: X =
. Khi đó, mỗi phương án s trong S được xác định bởi ít
nhất một vectơ trong X (như ở điểm 2).
2) Tồn tại tập con X* của X và ánh xạ từ X* lên S sao cho
không rỗng
*
với
S, trong đó tập X có thể được xây dựng từ tập con C0 của C nhờ mở
rộng tuần tự (điểm 3 dưới đây).
3) Từ C0 ta mở rộng tuần tự thành X* như sau:
i) Ta xem x0 =

là mở rộng được với

.

ii) Giả sử
là mở rộng được và chưa thuộc vào X*. Từ tập
ràng buộc Ω, xác định tập con
của C, sao cho
thì
là mở rộng được.
iii) Áp dụng thủ tục từ các phần tử
phần tử của X*.


cho phép ta xây dựng được mọi

Ta gọi đồ thị
là đồ thị cấu trúc của bài toán tối ưu tổ hợp, trong
đó V là tập đỉnh, E là tập cạnh, H là vectơ các trọng số heuristic của cạnh và là vectơ
biểu thị các thông tin học tăng cường
. Từ các cạnh ta xây dựng tập X* nhờ mở
rộng tập
theo thủ tục tuần tự. Nếu không có thông tin heuristics thì ta xem H có các
thành phần như nhau và bằng 1.


15

1.2.2 Trình bày về thuật toán ACO cơ bản
Tiến hành sử dụng m con kiến để xây dựng lời giải trên đồ thị cấu trúc. Quá trình
tìm kiếm lời giải trên đồ thị kết thúc theo số bước lặp hoặc giới hạn thời gian chạy.
Xây dựng lời giải
Lời giải trên đồ thị cấu trúc
như sau: Khởi tạo với m con kiến, tại
mỗi lần lặp, kiến sẽ chọn ngẫu nhiên một đỉnh để làm khởi tạo ban đầu x0 =
với
. Sau đó các con kiến sẽ đi xây dựng lời giải theo thủ tục bước ngẫu nhiên.
Theo như trình bày ở trên điểm 3 phần iii mục 1.2.1 . Từ đỉnh
ta tiến hành mở
*
rộng các đỉnh cho đến khi thuộc vào X , nghĩa là tìm được lời giải chấp nhận được.
Giả sử con kiến đang ở đỉnh
và có một đỉnh
(

để mở rộng (hay có thể hiểu con kiến từ đỉnh i sẽ lựa chọn đỉnh j) được
chọn với xác suất như sau:

(1.1)
Trong đó :
,

: Giá trị thông tin mùi và thông tin heuristic.

: Hai tham số quyết định sự ảnh hưởng tương quan giữa thông tin mùi và thông
tin heuristic. Nếu
không có học tăng cường. Nếu
chỉ có thông tin học
tăng cường biểu thị qua vết mùi được sử dụng, không có thông tin heurisric.
: Đỉnh lân cận của đỉnh i mà kiến có thể đi đến.
Cập nhật mùi
Dựa trên lời giải tìm được, đàn kiến sẽ thực hiện cập nhật mùi theo cách học tăng
cường.
(1.2)
Trong đó:
: hệ số bay hơi (tỷ lệ lượng mùi bị bay hơi), là hằng số thuộc khoảng (0,1).
: lượng mùi do kiến để lại
Các bước thực hiện của thuật toán ACO được mô tả trong hình 1.3:


16

ProcedureThuật toán ACO;
Begin
Khởi tạo tham số, ma trận mùi, khởi tạo m con kiến;

Repeat
For

=1 to m do
Kiến

xây dựng lời giải;

Cập nhật mùi;
Cập nhật lời giải tốt nhất;
Until (điều kiện kết thúc);
Đưa ra lời giải tốt nhất;
End ;
Hình 1.3 Đặc tả thuật toán ACO
1.2.3 Quy tắc cập nhật vết mùi
Quy tắc cập nhật mùi thể hiện chiến lược học của thuật toán, với mỗi một quy tắc
cập nhật mùi khác nhau thì tương ứng là các thuật toán khác nhau. Dưới đây sẽ giới
thiệu một vài quy tắc cập nhật mùi khác nhau theo thứ tự thời gian xuất hiện.
1.2.3.1 Thuật toán AS
Đây là thuật toán ACO đầu tiên được Dorigo đề xuất năm 1991[8,11]. Vết mùi
khởi tạo:

với m là số lượng kiến,

độ dài lời giải tìm được của thuật

toán heuristic .
Ban đầu tất cả các cạnh sẽ bị mất đi một lượng mùi do bay hơi:
(1.3)
Sau đó những cạnh nào có kiến đi qua sẽ được cộng thêm một lượng mùi mà kiến

để lại:
(1.4)

Trong đó:

(1.5)
Trong đó:

là độ dài hành trình

do kiến

xây dựng.


17

1.2.3.2 Thuật toán ACS
Thuật toán ACS do Dorigo và Gambardella đề xuất năm 1997[9]. Trong thuật
toán ACS gồm có hai quy tắc cập nhật mùi.
Cập nhật mùi toàn cục
(1.6)
Trong đó:
(1.7)
Cập nhật mùi cục bộ
(1.8)
Trong đó:




=

, n là số thành phố,

là độ dài hành

trình theo thuật toán tham ăn. Thuật toán ACS chỉ có duy nhất một kiến tìm được lời
giải
được phép để lại mùi sau mỗi lần lặp.
1.2.3.3 Thuật toán Max-Min
Thuật toán Max- Min được kí hiệu là MMAS được Stutzle và Hoos đề xuất năm
2000[19], với hàm cập nhật vết mùi như sau:
(1.9)
Trong đó:

, với

Vết mùi bị giới hạn trong đoạn

:

(1.10)
Trong MMAS việc sử dụng

ảnh hướng tới hướng tìm kiếm và không
xảy ra đồng thời mà thay phiên nhau. Khi luôn cập nhật bằng
thì việc tìm kiếm
định hướng xảy ra nhanh chóng. Khi cập nhật bằng
thì việc tìm kiếm định hướng
giảm do số lượng cạnh được cập nhật mùi nhiều.

Giới hạn vết mùi
Trong thuật toán MMAS sử dụng giới hạn trên
và giới hạn dưới
đối
với vết mùi trên tất cả các cạnh nhằm mục đích cho thuật toán tránh khỏit tình trạng
tắc nghẽn. Giới hạn của vết mùi sẽ ảnh hướng tới giới hạn xác suất
trong việc lựa
chọn đỉnh đi tiếp theo và bị giới hạn trong khoảng

.


18

1.2.3.4 Thuật toán Max- Min trơn
Thuật toán Max-Min trơn kí hiệu là SMMAS được Đỗ Đức Đông đề xuất năm
2012[1].

Với:
(1.11)
Chọn
. Trong đó kí hiệu
là lời giải tốt nhất các kiến tìm được cho
tới lần lặp thứ t. Nếu kí hiệu
hiểu là lời giải tốt nhất trong bước lặp thứ t. Nếu
không tốt hơn
ta có
, lúc này sẽ quan tâm tới lời giải
gần đúng
.

1.3. Ứ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
1.3.1 Bài toán người chào hàng trong thực tế
Bài toán người chào hàng hay còn gọi là bài toán TSP là một bài toán khá nổi
tiếng trong lĩnh vực tối ưu tổ hợp. Bài toán có nội dung như sau: “ Một người đi chào
hàng tại n thành phố. Người chào hàng muốn tìm một hành trình ngắn nhất, bắt đầu
xuất phát từ một thành phố và đi sang các thành phố khác để chào hàng, sau đó lại
quay trở lại thành phố xuất phát sao cho mỗi thành phố chỉ đi qua đúng một lần và
khoảng cách giữa các thành phố đã được biết trước”.
Input: Tập C gồm n thành phố :
(thành phố nối với thành phố ).
Output: min

và độ dài nối hai thành phố

(với điều kiện mỗi đỉnh đi qua đúng một lần).

1.3.2 Phát biểu bài toán người đưa hàng trên mô hình hóa đồ thị

Hình 1.4 Minh họa hình ảnh bài toán người đưa hàng


19

Bài toán TSP có thể được mô hình hóa như một đồ thị đầy đủ có trọng số
, trong đó là các tập đỉnh của đồ thị, với mỗi đỉnh tương ứng là một thành
phố trong . Kí hiệu là các cạnh nối các thành phố tương ứng, khoảng cách giữa hai
thành phố là độ dài cạnh . Đây là vấn đề cực tiểu hóa với điểm đầu và điểm cuối là
cùng một đỉnh sau khi đi qua hết tất cả các thành phố đúng một lần. Bài toán TSP
chính là bài toán tìm chu trình Hamilton có độ dài ngắn nhất trên đồ thị đầy đủ có

trọng số.
1.3.3 Áp dụng thuật toán ACO giải quyết bài toán người chào hàng
Bài toán TSP được nêu ra trong thế kỉ thứ XIX bởi nhà toán học Ireland William
Roman Hamilton và nhà toán học Anh Thomas Kirkman. Bài toán TSP là một trong
những bài toán nghiên cứu sâu nhất trong tối ưu hóa. Bài toán thường được dùng làm
thước đo cho nhiều phương pháp tối ưu hóa. Mặc dù bài toán rất khó giải trong trường
hợp tổng quát, có nhiều phương pháp đã được tìm ra để giải quyết cho những trường
hợp dữ liệu lớn. Bảng 1.1 đưa ra một vài thuật toán ACO có khả năng trong việc giải
quyết bài toán TSP và một số bài toán khác. Các thuật toán được sắp xếp theo thứ tự
thời gian phát triển.

Năm

Bảng 1.1 Một số thuật toán ACO
Thuật toán ACO
Tác giả

1991

Ant System (AS)

Dorigo, Maniezzo,&Colorni

1992

Elitist AS

Dorigo, Maniezzo,& Colorni

1995


Ant-Q

Gambardella&Dorigo

1996

Ant Colony System

Dorigo & Gambardella

1996

Max-Min Ant System

Stützle & Hoos

1997

Rank-based Ant System

Bullnheimer, Hartl & Strauss

1999

ANTS

Maniezzo

2000


Best-Worst Ant System

Cordon, Viana, Herrera & Moreno

2001

Hyper-cube Ant System

Blum, Roli & Dorigo

2010

AntEpiSeeker

Wang, Liu, Robbins & Rekaya


20

Đồ thị cấu trúc
Thuật toán ACO có thể áp dụng trực tiếp cho bài toán TSP với đồ thị cấu trúc
, trong đó:
 V: Tập các đỉnh tương ứng với tập các thành phố.
 E: Tập các cạnh nối các thành phố tương ứng.
 H: Thông tin heuristic trên cạnh
, kí hiệu là
đảo cạnh:



và là độ dài của nghịch

.

: Vết mùi được gán trên các cạnh, là vectơ biểu thị các thông tin học tăng
cường,
dùng để chỉ thông tin học tăng cường phục vụ mở rộng tuần tự lời
giải từ đến .

Trong trường hợp này tập là các chu trình Hamilton trên , là độ dài của chu
trình, Ω là ràng buộc đòi hỏi chu trình là chu trình Hamilton (qua tất cả các đỉnh, mỗi
đỉnh đúng một lần).
Giải quyết bài toán
Thuật toán ACO phân biệt bởi quy tắc cập nhật mùi như đã nêu ở mục 1.2.3 về
các quy tắc cập nhật mùi khác nhau sẽ cho ra các phương pháp giải quyết khác nhau.
Ban đầu tiến hành xây dựng lời giải cho mỗi con kiến. Đối với thuật toán AS và
MMAS trong giải quyết bài toán TSP xây dựng lời giải cho việc lựa chọn đỉnh đi tiếp
theo được xác định theo công thức (1.1) mục 1.2.2.
trong công thức (1.1) là các
đỉnh lân cận mà kiến có thể đi đến từ đỉnh . Đối với thuật toán ACS, kiến sẽ lựa
chọn di chuyển đến đỉnh tiếp theo, theo quy tắc:
(1.12)
Trong đó là một biến ngẫu nhiên, phân bố đều trong [0,1],
tham số cho trước và J là một biến ngẫu nhiên lựa chọn theo công thức (1.1).

là một

Sau khi xây dựng xong lời giải cho mỗi thuật toán, tiến hành cập nhật mùi được
trình bày trong phần mục 1.2.3. Cuối cùng đưa ra lời giải tốt nhất.
Từ thuật toán ACO tổng quát ta có thuật toán ACO cho bài toán TSP được mô tả

trong hình 1.5:


21

Procedure Thuật toán ACOTSP;
Dữ liệu vào:
 Đồ thị
 Ma trận trọng số

với

 Số lượng kiến m
Kết quả ra: Là một chu trình với tổng độ dài ngắn nhất.
Begin
Khởi tạo các tham số, ma trận mùi, m con kiến;
Repeat
For

to m do
Kiến

xây dựng lời giải (lựa chọn đỉnh đi tiếp theo);

Cập nhật mùi (cập nhật mùi trên mỗi cạnh);
Cập nhật lời giải tốt nhất (cập nhật những chu trình với tổng độ dài ngắn
nhất và thỏa mãn điều kiện của bài toán);
Until (điều kiện kết thúc);
Đưa ra lời giải tốt nhất (chu trình với tổng độ dài ngắn nhất);
End

Hình 1.5 Đặc tả thuật toán ACO cho bài toán TSP


22

CHƯƠNG II
TƯƠNG TÁC TRỘI QUY VỀ BÀI TOÁN TƯƠNG TÁC GEN
2.1 Tương tác gen và các hiệu ứng gây ra
2.1.1 Khái niệm về tương tác gen
Một số khái niệm 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 2.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 2.2 Minh họa gen trên nhiễn sắc thể


23

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.
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 2.3:

Hình 2.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
Tương tác gen: Sự tác động qua lại giữa các gen trong quá trình hình thành kiểu
hình. Tương tác gen gồm có hai kiểu: Tương tác giữa các gen alen và tương tác giữa
các gen không alen (thường được gọi tắt là tương tác gen)[2].
Tương tác giữa các gen alen là tương tác giữa trạng thái khác nhau của cùng một
gen tồn tại trên một vị trí nhất định của cặp nhiễm sắc thể tương đồng.
Ví dụ 1: Lai giữa hai giống hoa (màu sắc hoa)
Quy ước: A- màu đỏ, a- màu trắng (A là trội hoàn toàn so với a)
Ptc: Hoa đỏ (AA) x Hoa trắng (aa)
F1:
Hoa hồng (Aa)
Tương tác giữa các gen không alen là tương tác giữa các trạng thái khác nhau
của cặp gen, mỗi gen nằm trên các vị trí khác nhau, có thể nằm trên cùng một nhiễm
sắc thể hoặc trên các cặp nhiễm sắc thể tương đồng khác nhau. Trong luận văn về sau
khi nói tới tương tác gen, sẽ hiểu tương tác giữa các gen không alen.
Ví dụ 2: Ví dụ: Lai giữa hai giống hoa (màu sắc hoa)
Quy ước: A-B-: Màu đỏ; A- bb-, aaB-, aabb: Màu trắng
Ptc: Hoa đỏ (AABB) x Hoa trắng (aabb)
F1:
Hoa hồng (AaBb)



24

Nhìn vào ví dụ một và ví dụ hai thấy có sự khác nhau. Trong ví dụ một, có Ahay a- quy ước màu hoa đỏ và màu hoa trắng. Trong ví dụ hai, quy ước màu hoa đỏ lại
là của hai alen: A-B-, trong đó alen A và alen B ở hai vị trí khác nhau và được gọi là
không alen.
2.1.2 Hệ quả của tương tác tác gen và hướng nghiên cứu
2.1.2.1 Hệ quả của tương tác gen
Môi trường và thực phẩm là hai yếu tố phổ biến gây bệnh cho con người. Tuy
nhiên gen là nguyên nhân chính để gây ra các căn bệnh. Có thể nói, yếu tố di truyền
đóng vai trò rất lớn. Các căn bệnh phổ biến như: Ung thư, tim mạch, bệnh tai nhĩ, bệnh
tiểu đường, bệnh thoái hóa điểm vàng hay mù màu…. Đều liên quan tới gen di truyền.
Các bệnh xảy ra khi có sự thay đổi trong các gen chịu trách nhiệm cho sự tăng
trưởng và sửa chữa các tế bào. Những thay đổi này là kết quả của sự tương tác giữa
các yếu tố di truyền và các tác nhân bên ngoài như: Tác nhân vật lý (tia phóng xạ: Tia
X, ..), tác nhân hóa học (thuốc trừ sâu, thuốc diệt cỏ,…), tác nhân sinh học như virus
có trong cơ thể hoặc môi trường bên ngoài cơ thể, chế độ ăn uống và lối sống…Sự
biến đổi cấu trúc phân tử của gen có thể dẫn đến biến đổi cấu trúc của loại protein mà
nó mã hóa, cuối cùng có thể dẫn đến biến đổi ở kiểu hình.
Các đột biến gen biểu hiện ra kiểu hình ở từng cá thể riêng lẻ, không tương ứng
với điều kiện sống, thường là đột biến lặn là có hại cho bản thân vì chúng đã phá vỡ sự
thống nhất hài hòa trong kiểu gen đã qua chọn lọc tự nhiên và duy trì lâu đời trong
điều kiện tự nhiên, gây ra những rối loạn trong quá trình tổng hợp protein.
Đa số đột biến gen tạo ra các gen lặn là có hại, một số trung tính, một số có lợi.
Những gen lặn chỉ biểu hiện ra kiểu hình khi ở thể đồng hợp và trong điều kiện môi
trường thích hợp. Qua giao phối, nếu một cặp tổ hợp gen thích hợp một đột biến vốn là
có hại có thể trở thành có lợi . Đột biến gen gây ra những thay đổi trong nucleotide dẫn
đến biến đổi m ARN và quá trình tổng hợp protein nên thường gây ra hậu quả có hại,
làm giảm khả năng sống của sinh vật.
Chẳng hạn như bệnh u mô đệm đường tiêu hóa. Đột biến gen KIT trong u mô

đệm đường tiêu hóa, đột biến mất 6 nucleotide từ vị trí 1669 tới 1674 trong cADN
(c.1669_1674del) hoặc đột biến mất 2 amino acid trong proterin (từ Tryptophan 557
tới Lysine 558 (p.W557_K558del).


25

Hình 2.4 Đột biến gen KIT trong u mô đệm đường tiêu hóa
Tương tác gen gồm có các tương tác như: Tương tác át chế gen [2,3,5], tương tác
cộng gộp và tương tác bổ trợ [2]…
2.1.2.2 Hướng nghiên cứu
Di truyền học là một môn khoa học nghiên cứu về tính di truyền và biến dị của
sinh vật. Tính di truyền được biểu hiện ở sự giống nhau giữa con cái với cha mẹ. Tính
biến dị biểu hiện sự sai khác giữa cha mẹ và con cái cũng như giữa các con cái với
nhau.
Mặc dù, quá trình xác định bản đồ gen dựa trên phương pháp di truyền Mendel
đã có những bước tiến lớn, tuy nhiên những gen cơ bản tiềm ẩn gây lên các căn bệnh
phức tạp vẫn chưa được biết đến. Gen của loài người có những biến thể di truyền khác
nhau và điểm đó làm nên sự khác nhau giữa người này với người kia. Dự án gen người
đã chỉ ra rằng bộ gen của hai người bất kì giống nhau 99,9%. Giờ thì các nhà khoa học
đã hoàn tất một bản đồ chi tiết hơn (còn gọi là HapMap), chỉ ra các biến thể gen để
giải thích 0,1% khác biệt. Phần lớn trong số những biến thể đó là hàng triệu các điểm
đa hình tại những vị trí nucleotide nhất định đã làm thay đổi mã di truyền. Những điểm
khác biệt đó được gọi là những đa hình đơn nucleotide (single nucleotide
polymorphisms, SNPs) hiện đang được Dự án quốc tế HapMap tiến hành thống kê một
cách hệ thống. Các nhà khoa học tin rằng SNP bản đồ sẽ giúp họ có nhiều gen liên
quan với các bệnh phức tạp như: Ung thư, bệnh tiểu đường, bệnh mạch máu, và một số
hình thức bệnh tâm thần.
Một vài nhóm làm việc để tìm SNPs và cuối cùng tạo ra SNP bản đồ hệ gen của
con người. Trong số đó là Mỹ Human Genome Project (HGP) và một dự án song song

cũng được thực hiện bởi một công ty tư nhân tên là Celera Genomics. Gần đây có
những nghiên cứu xác định tương tác át chế trong các căn bệnh phức tạp như bệnh ung
thư, bệnh tiểu đường, bệnh tai nhĩ[4,17,21].
Từ việc tìm, khám phá tương tác gen để từ đó tìm ra được các gen là nguyên
nhân gây lên các căn bệnh. Dựa vào đó các nhà nghiên cứu tìm ra các hướng để điều


×