Tải bản đầy đủ (.doc) (85 trang)

Thuật toán xác định cha chung gần nhất của hai nút trong cây ứng dụng phân tích đa dạng loại vi sinh vật

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.13 MB, 85 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

NINH QUANG TRUNG

THUẬT TOÁN XÁC ĐỊNH CHA CHUNG GẦN NHẤT CỦA
HAI NÚT TRONG CÂY ỨNG DỤNG PHÂN TÍCH ĐA DẠNG
LOÀI VI SINH VẬT
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên, năm 2014

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

/>

2

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

NINH QUANG TRUNG

CÁC PHƢƠNG PHÁP XÁC ĐỊNH CHA CHUNG GẦN
NHẤT CỦA HAI NÚT TRONG CÂY, ỨNG DỤNG PHÂN
TÍCH ĐA DẠNG LOÀI VI SINH VẬT


Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Ngƣời hƣớng dẫn khoa học: TS. Nguyễn Cƣờng


3

LỜI CAM ĐOAN
Tôi xin cam đoan: Luận văn này là công trình nghiên cứu thực sự
của cá nhân, đƣợc thực hiện dƣới sự hƣớng dẫn khoa học của Tiến sĩ
Nguyễn Cường. Các số liệu, những kết luận nghiên cứu đƣợc trình bày
trong luận văn này trung thực và chƣa từng đƣợc công bố dƣới bất cứ hình
thức nào.
Tôi xin chịu trách nhiệm về nghiên cứu của mình.
Học viên

Ninh Quang Trung


4

LỜI CẢM ƠN
Lời đầu tiên, tôi xin chân thành cảm ơn Tiến sĩ Nguyễn Cường
ngƣời đã trực tiếp huớng dẫn tôi hoàn thành luận văn. Với những lời
chỉ dẫn, những tài liệu, sự tận tình hƣớng dẫn và những lời động viên của
Thầy đã giúp tôi vƣợt qua nhiều khó khăn trong quá trình thực hiện
luận văn
này.

Tôi cũng xin cảm ơn quý Thầy (Cô) giảng dạy chƣơng trình cao học
“Khoa học máy tính” đã truyền dạy những kiến thức quý báu, những kiến
thức này rất hữu ích và giúp tôi nhiều khi thực hiện nghiên cứu.
Xin cảm ơn các quý Thầy (Cô) công tác tại Trƣờng Đại học Công
nghệ thông tin và truyền thông – Đại học Thái Nguyên đã tạo điều kiện cho
tôi đƣợc tham gia và hoàn thành khóa học.
Tôi xin chân thành cảm ơn.
Học viên

Ninh Quang Trung


55

MỤC LỤC
LỜI CAM ĐOAN ......................................................................................... 1
LỜI CẢM ƠN .............................................................................................. iv
MỤC LỤC ..................................................................................................... v
DANH MỤC CÁC HÌNH ẢNH ................................................................. vii
DANH MỤC CÁC BẢNG BIỂU ..............................................................viii
DANH MỤC CÁC TỪ VIẾT TẮT-THUẬT NGỮ .................................... ix MỞ
ĐẦU ....................................................................................................... 1
CHƢƠNG I: LÝ THUYẾT ĐỒ THỊ VÀ CÂY ............................................ 6
1.1 Các khái niệm cơ bản về đồ thị ........................................................... 6
1.1.1 Định nghĩa đồ thị (Graph) ............................................................ 6
1.1.2 Các khái niệm............................................................................... 6
1.1.3 Các thuật toán tìm kiếm trên đồ thị..............................................
8
1.1.4 Độ phức tạp tính toán của BFS và DFS ..................................... 15
1.2 Các khái niệm cơ bản về cây đồ thị .................................................. 15

1.2.1Định nghĩa và các tính chất cơ bản: ............................................ 15
1.2.2 Một số khái niệm........................................................................ 16
CHƢƠNG II: CÁC PHƢƠNG PHÁP XÁC ĐỊNH CHA CHUNG GẦN NHẤT CỦA
HAI NÚT TRONG CÂY....................................................... 17
2.1 Giới thiệu bài toán LCA.................................................................... 17
2.2 Mối quan hệ giữa LCA và RMQ ...................................................... 19
2.3 Các phƣơng pháp tiếp cận ................................................................. 42
2.3.1 Bài toán hà tiện ......................................................................... 43
2.3.2 Một số phƣơng pháp giải bài toán LCA ................................... 45
2.4 Lựa chọn phƣơng án cài đặt thuật toán cho bài toán LCA ............. 515
CHƢƠNG III: KẾT QUẢ CÀI ĐẶT VÀ ĐÁNH GIÁ .............................. 54
3.1 Cây phân loài và ứng dụng bài toán phân tích đa dạng loài vi sinh


66

vật
548

..............................................................................................................


77

3.2 Cài đặt phần mềm............................................................................. 59
3.3 Đánh giá chất lƣợng dữ liệu trình tự ................................................ 63
3.4 Lắp ráp trình tự................................................................................. 65
3.5 Dự đoán gen ..................................................................................... 66
3.6 Phân tích đa dạng loài vi sinh .......................................................... 67
KẾT LUẬN ................................................................................................. 70

TÀI LIỆU THAM KHẢO........................................................................... 67


viii
7

DANH MỤC CÁC HÌNH ẢNH
Hình 1.1: Ví dụ về mô hình đồ thị ................................................................ 6
Hình 1.2: Ví dụ về phân loại đồ thị.............................................................. 7
Hình 1.3 Ví dụ về thuật toán tìm kiếm DFS ................................................. 9
Hình 1.4 Xác định đỉnh kề trong thuật toán DFS ....................................... 11
Hình 1.5 Đƣờng đi bắt đầu từ A và kết thúc tại G ...................................... 12
Hình 1.6 Bắt đầu từ A nhƣng đi theo trình tự tập các cạnh đã thăm ..........
12
Hình 1.7 Duyệt các đỉnh trong cây ............................................................. 13
Hình 1.8 Ví dụ thuật toán tm kiếm theo chiều sâu .................................... 14
Hình 1.9 Cây đồ thị ..................................................................................... 16
Hình 2.1 Vị trí của các phần tử trong bài toán RQM.................................. 19
Hình 2.2 Ví dụ về bài toán RQM ................................................................ 21
Hình 2.3: Cấu trúc cây phân đoạn ............................................................... 23
Hình 2.4 Hình cây của thuật toán LCA....................................................... 29
Hình 2.5 Phân chia đoạn trong bài toán LCA ............................................. 30
Hình 2.6 Chuyển từ bài toán LCA về bài toán RQM ................................. 35
Hình 2.8 Ví dụ đƣa vài toán từ RQM về bài toán LCA .............................. 37
Hình 2.9 Cây tiến hóa.................................................................................. 43
Hình 3.1 Quy trình phân tích và xử lý dữ liệu ............................................ 55
Hình 3.2 Chất lƣợng tính theo vị trí trình tự ............................................... 59
Hình 3.3 Chất lƣợng theo từng đoạn trình tự ..............................................
60
Hình 3.4 Cây phân loài................................................................................ 63

Hình 3.5 Biểu đồ thể hiện sự đa dạng sinh vật trong mẫu dữ liệu..............
63
Hình 3.6 Số lƣợng các đoạn ORF có liên quan đến các quy trình chyển hóa
..................................................................................................................... 65


viii
8

DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1 Bảng lập lịch duyệt các đỉnh trong cây ....................................... 14
Bảng 3.1 Kết quả lắp ráp trình tự ................................................................ 61
Bảng 3.2 Tổng quan kết quả dự đoán gen...................................................
61
Bảng 3.4 Đa dạng loài đã đƣợc đinh tên theo từng cấp độ khác nhau........
64
Bảng 3.5 Kết quả phân loại theo cơ sở dữ liệu KEGG ............................... 64


99

DANH MỤC CÁC TỪ VIẾT TẮT-THUẬT NGỮ
Cụm từ viết tắt Cụm từ chi tiết
ASCII

American Standard Code for Informaton Interchange

BFS

Breadth First Search


Bp

Basepair

DFS

Depth – First – Search

DNA

Deoxyribo Nucleic Acid E

Edges
G

Graph

GA

Genome Analyzer

HGP

Human Genome Project LCA

Lowest Common Ancestor MEGAN
MetaGenomeANalyzer MGA
MetaGeneAnnotator
NCBI


National Center for Biotechnology Information

NGS

Next Genration Sequencing

PCR

Polymerase chain reaction

RMQ

Range-Minimum Query


10
10

MỞ ĐẦU
Lý thuyết đồ thị là ngành khoa học xuất hiện từ rất lâu nhƣng lại có
nhiều ứng dụng hiện đại. Những ý tƣởng cơ bản của nó đƣợc đƣa ra từ
thế kỷ thứ 18 bởi nhà toán học Thụy Sĩ Leonhard Euler. Ông đã dùng đồ thị
để giải quyết bài toán cây cầu Konigsberg nổi tiếng. Từ đó lý thuyết đồ
thị ngày càng khẳng định đƣợc vị trí quan trọng của mình trong việc áp
dụng để giải quyết bài toán thực tế nhờ vào việc tìm ra ngày càng nhiều
của các định lý, công thức và thuật toán.
Đặc biệt trong những năm trở lại đây, cùng với sự ra đời của máy
tính điện tử và sựphát triển nhanh chóng của Tin học, Lý thuyết đồ thị
càng đƣợc quan tâm đến nhiều hơn. Đặc biệtlà các thuật toán trên đồ

thị đã có nhiều ứng dụng trong nhiều lĩnh vực khác nhau nhƣ: Mạng máy
tính, Lý thuyết mã, Tối ƣu hoá, Kinh tế học, tm đƣờng đi ngắn nhất, bài
toán luồng cực đại, bài toán vận chuyển, bài toán luồng tổng quát và bài
toán xác định cha chung gần nhất của hai nút trong câycũng là một ứng
dụng trong lý thuyết đồ thị. Hiện nay, lý thuyết đồ thị là một trong những
kiến thức cơ sở của bộ môn khoa học máy tính.
Trong phạm vi một đề tài không thể nói kỹ và nói hết những vấn đề
của lý thuyết đồ thị. Luận văn này trình bày lý thuyết đồ thị dƣới góc độ
khảo sát những thuật toán cơ bản nhất có thể cài đặt đƣợc trên máy
tính một số ứng dụng của nó.
Trong khuôn khổ luận văn học viên ứng dụng lý thuyết đồ thị để giải
bài toán xác định cha chung gần nhất của hai nút trong cây nhằm mục đích
phân tích đa dạng loài vi sinh sử dụng công nghệ đọc trình tự thế hệ
mới.
Ngày nay thông tin về trình tự gen rất hữu ích trong những
nghiên cứu về sinh học phân tử và trong nhiều lĩnh vực ứng dụng nhƣ


11
11

chuẩn đoán, sinh học pháp y, hệ thống sinh học…Quá trình đọc trình tự
hay giải trình tự


22

gen (DNA sequencing) là việc xác định thứ tự các nucleotide gắn kết với
nhau dọc theo chiều dài của gen (DNA) và trình tự gắn kết nhau của các
nucleotide đƣợc gọi là trình tự gen.

Từ những năm đầu của thập niên 70 của thế kỷ trƣớc, các nhà
khoa học đã thu đƣợc thành công đầu tiên về trình tự gen bằng phƣơng
pháp thủ công. Cho đến năm 1990, dự án giải mã toàn bộ hệ genome
ngƣời (HGP) đã đƣợc khởi động nhằm tm hiểu cơ sở di truyền bệnh, kết
quả của dự án là một hệ genngƣời với độ chính xác cao. Ngày nay, các
công ty thƣơng mại đã cho ra đời các thế hệ máy đọc trình tự dựa trên
nhiều công nghệ mới. Các kỹ thuật đọc trình tự gen đã trở nên đơn giản
và nhanh chóng hơn nhiều nhờ sự ứng dụng huỳnh quang phân tích tự
động [36]. Tuy nhiên tại thời điểm đó, đọc trình tự DNA gặp phải vấn đề là
các thiết bị chi phí quá đắt đỏ và mất thời gian để đọc nguyên vẹn hệ gen.
Chúng chỉ phù hợp cho kiểm tra các gen riêng lẻ, một số xét nghiệm phân
tử, di truyền dƣợc học, bệnh về máu và vi sinh.
Với mong muốn hiểu chi tiết về gen, các nhà nghiên cứu luôn
mong muốn giải trình tự hoàn chỉnh các DNA hoặc gen của nhiều loài
trong cuộc sống. Thiết bị đọc trình tự thế hệ mới (Next Genraton
Sequencing - NGS) là một bƣớc tiến vƣợt bậc về công nghệ đọc trình tự.
Từ khả năng đọc trình tự đoạn ngắn 1500bp (Sanger) hay 100 bp
(pyrosequencing), thiết bị đọc trình tự thế hệ mới cho phép đọc đƣợc
từ
8Gb đến 600Gb, có nghĩa là cho phép đọc trình tự nguyên bộ gen với số
lần rất lớn từ 10 cho đến 500 lần. Vì thế, đọc trình tự thế hệ mới
còn đƣợc gọi là đọc trình tự bộ gen (whole genome sequencing). Đọc
trình tự thế hệ mới là công cụ mạnh nhất để phát hiện tác nhân gây
bệnh, vì với khả năng đọc hàng trăm ngàn đoạn DNA có trong mẫu
thử công nghệ này dễ dàng phát hiện bất cứ một trình tự nucleic


33

acid của bất cứ tác nhân gì có mặt trong mẫu thử lấy từ vật chủ hay

bệnh nhân.


44

Với các thiết bị đọc trình tự thế hệ mới, các phân tử DNA sẽ
đƣợc cắt nhỏ bằng các enzyme đặc thù tạo lên các phân đoạn có độ dài từ
50 cho đến 200 cặp trình tự (basepair - bp). Các phân đoạn ngắn này sẽ
đƣợc đƣa vào thiết bị khuếch đại lên hàng trăm lần rồi tiến hành đọc trình
tự bởi thiết bị đọc trình tự thế hệ mới. Do đó, dữ liệu thu đƣợc là một tập
với số lƣợng lớn, có thể lên tới hàng trăm triệu các đoạn trình tự ngắn có
độ dài từ 50bp cho đến 200bp. Để có thể tiến hành các phân tích dữ liệu
nhƣ dự đoán gen, chú giải gen, tìm đột biến SNP…
Sự ra đời của thiết bị đọc trình tự gen thế hệ mới đã đánh dấu một
bƣớc tiến vƣợt bậc trong nghiên cứu phân tử, y sinh, pháp y, nhân
chủng học với hàng loạt các dự án giải mã toàn bộ hệ gen động thực vật
nhƣ ngƣời, chó, khỉ, gà, khoai tây, lúa… Cùng với các quy trình chuẩn
đoán bệnh hƣớng tới cá nhân cụ thể (personalized treament). Bên cạnh
đó, các thiết bị đọc trình tự gen thế hệ mới cũng bắt đầu đƣợc áp dụng
vào nghiên cứu tính đa dạng loài và phân tích chức năng của các hệ vi sinh
vật có trong môi trƣờng nhƣ trong ruột ngƣời bị bệnh [5], hệ vi sinh trong
dạ dày bò [8], ruột gà [7], trong môi trƣờng đất [7]… Phân tích tính đa dạng
loài và chức năng của hệ vi sinh vật từ dữ liệu trình tự là một trong những
đề tài nóng hiện nay trên thế giới.
Nhận thấy tính thiết thực của vấn đề và với sự định hƣớng của giáo
viên hƣớng dẫn, tôi chọn đề tài “Các phương pháp xác định cha chung
gần nhất của hai nút trong cây, ứng dụng trong phân tích đa dạng loài
vi sinh vật”. Đề tài này sẽ xây dựng quy tnh phân tích dữ liệu trình tự hệ
gen vi sinh vật và chƣơng trình đánh giá mức độ đa dạng loài.



55

Nội dung chính của luận văn đƣợc chia làm 3 chƣơng.
- Chƣơng I: Lý thuyết đồ thị và cây: Trình bày các khái niệm cơ bản
nhất về lý thuyết đồ thị và cây ứng dụng trong việc giải quyết một số bài
toán trong lý thuyết đồ thị .
- Chƣơng II: Các phƣơng pháp xác định cha chung gần nhất của hai
nút trong cây: Trình bày mối liên hệ giữa các bài toán xác định hai nút
trong cây và các phƣơng pháp giải bài toán.
- Chƣơng III: Kết quả cài đặt và đánh giá: Trình bày quy trình và
các yêu cầu cần thiết của các chƣơng trình đƣợc sử dụng thí nghiệm.
1. Đối tượng và phạm vi nghiên cứu:
- Nghiên cứu lý thuyết đồ thị và cây.
- Nghiên cứu các thuật toán xác định cha chung gần nhất của hai nút
trong cây ứng dụng trong phân tích đa dạng loài vi sinh sử dụng công nghệ
đọc trình tự thế hệ mới.
- Nghiên cứu quy trình phân tích dữ liệu trình tự hệ gen vi sinh vật
và đánh giá đa dạng loài..
2. Hướng nghiên cứu của đề tài
1. Nghiên cứu về lý thuyết đồ thị.
2. Nghiên cứu thuật toán xác định cha chung gần nhất của hai nút
trong cây Lowest Common Ancestor (LCA) ứng dụng trong phân tích
đa dạng loài vi sinh sử dụng công nghệ đọc trình tự thế hệ mới.
3. Nghiên cứu phƣơng pháp phân tích dữ liệu trình tự hệ gen vi sinh vật
và đánh giá đa dạng loài.


66


3. Phương pháp nghiên cứu
- Nghiên cứu các nội dung về lý thuyết đồ thị.
- Nghiên cứu lý thuyết thuật toán xác định cha chung gần nhất của hai
nút trong cây Lowest Common Ancestor (LCA) ứng dụng trong phân tích
đa dạng loài vi sinh sử dụng công nghệ đọc trình tự thế hệ mới..
- Thiết kế, đặc tả, xây dựng chƣơng trình xử lý, phân tích dữ liệu trình
tự và đánh giá đa dạng loài.
4. Ý nghĩa khoa học của đề tài
Đề tài nghiên cứu thuật toán xác định cha chung gần nhất của hai
nút trong cây Lowest Common Ancestor (LCA) ứng dụng trong phân tích đa
dạng loài vi sinh sử dụng công nghệ đọc trình tự thế hệ mới. Cung cấp
công cụ đánh giá đa dạng loài vi sinh vật giúp cho các nhà sinh học tiến
hành các nghiên cứu đánh giá sự đa dạng loại vi sinh vật có trong môi
trƣờng sống nhƣ đất, nƣớc,... cũng nhƣ trong các mẫu bệnh phẩm của
bệnh nhân nhƣ ruột ngƣời, màng nhầy, …


77

CHƢƠNG I: LÝ THUYẾT ĐỒ THỊ VÀ CÂY
1.1 Các khái niệm cơ bản về đồ thị
1.1.1 Định nghĩa đồ thị (Graph)
Là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó. Đƣợc
mô tả hình thức:G = (V, E)
V gọi là tập các đỉnh (Vertices) và E gọi là tập các cạnh (Edges). Có
thể coi E là tập các cặp (u, v)với u và v là hai đỉnh của V. Một số hình ảnh
của đồ thị:

Sơ đồ giao thông


Mạng máy tính

Hình 1.1: Ví dụ về mô hình đồ thị
1.1.2 Các khái niệm
Nhƣ trên định nghĩa đồ thị G = (V, E) là một cấu trúc rời rạc, tức là
các tập V và E hoặc là tập hữu hạn, hoặc là tập đếm đƣợc, có nghĩa là ta có
thể đánh số thứ tự 1, 2, 3... cho các phần tử của tậpV và E. Hơn nữa, đứng
trên phƣơng diện ngƣời lập trình cho máy tính thì ta chỉ quan tâm
đến cácđồ thị hữu hạn (V và E là tập hữu hạn) mà thôi, chính vì vậy từ đây
về sau, nếu không chú thích gì thêm thì khi nói tới đồ thị, ta hiểu rằng
đó là đồ thị hữu hạn.
Có thể phân loại đồ thị theo đặc tính và số lƣợng của tập các cạnh E:
Chođồ thị G = (V, E). Ta có một số khái niệm sau:
- Đơn đồ thị: G đƣợc gọi là đơn đồ thị nếu giữa hai đỉnh u, v của V có


88

nhiều nhấtlà 1 cạnh trong E nối từ u tới v.
- Đa đồ thị: G đƣợc gọi là đa đồ thị nếu giữa hai đỉnh u, v của V có thể
có nhiều hơn 1 cạnh trong E nối từ u tới v.
- Đồ thị vô hƣớng: G đƣợc gọi là đồ thị vô hƣớng nếu các cạnh trong
E là không định hƣớng, tức là cạnh nối hai đỉnh u, v bất kỳ cũng là cạnh
nối hai đỉnh v, u. Hay nói cách khác, tập E gồm các cặp (u, v) không tính
thứ tự (u, v) (v, u)
- Đồ thị có hƣớng: G đƣợc gọi là đồ thị có hƣớng nếu các cạnh trong
E là có định hƣớng, có thể có cạnh nối từ đỉnh u tới đỉnh v nhƣng chƣa
chắc đã có cạnh nốitừ đỉnh v tới đỉnh u. Hay nói cách khác, tập E gồm
các cặp (u, v) có tính thứ tự:(u, v) ≠ (v, u). Trong đồ thị có hƣớng, các
cạnh đƣợc gọi là các cung. Đồ thị vôhƣớng cũng có thể coi là đồ thị có

hƣớng nếu nhƣ ta coi cạnh nối hai đỉnh u, vbất kỳ tƣơng đƣơng với hai
cung (u, v) và (v, u).
Ví dụ:
3
1

2

5
4

Vô hƣớng

Có hƣớng

Vô hƣớng

Có hƣớng

Vô hƣớng
Đa đồ thị
Hình 1.2: Ví dụ về phân loại đồ thị
Đối với đồ thị vô hƣớng G = (V, E). Xét một cạnh e

E, nếu e=(u,v)

thìta nói hai đỉnh u và v là kề nhau (adjacent) và cạnh e này liên thuộc
(incident)với đỉnh u và đỉnh v.
Với một đỉnh v trong đồ thị, ta định nghĩa bậc (degree) của v,
ký hiệu deg(v) là số cạnh liên thuộc với v. Dễ thấy rằng trên đơn đồ thị thì



99

số cạnh liên thuộc với v cũng là số đỉnh kề với v.
Đối với đồ thị có hƣớng G = (V, E). Xét một cung e

E, nếu e=(u,v)

thìta nói u nối tới v và v nối từ u, cung e là đi ra khỏi đỉnh u và đi vào đỉnh
v.Đỉnh u khi đó đƣợc gọi là đỉnh đầu, đỉnh v đƣợc gọi là đỉnh cuối của cung
e.
Với mỗi đỉnh v trong đồ thị có hƣớng, ta định nghĩa: Bán bậc ra của
v kýhiệu deg+(v) là số cung đi ra khỏi nó; bán bậc vào ký hiệu deg-(v) là số
cung đi vàođỉnh đó.
- Đƣờng đi: Một đƣờng đi độ dài k từ đỉnh u đến đỉnh v là dãy
(u=x0, x1,..., xk = v) thoả mãn (xi, xi+1)

E (là 1 cạnh của đồ thị) với i:

(0 ≤ i ≤ k).Đỉnhu gọi là đỉnh xuất phát, v gọi là đỉnh kết thúc của đƣờng
đi. Đƣờng đi không cócạnh nào đi qua hơn 1 lần gọi là đƣờng đi đơn.
- Chu trình: Đƣờng đi có đỉnh xuất phát trùng với đỉnh kết thúc gọi
là chu trình. Tƣơng tự ta có khái niệm chu trình đơn.
1.1.3 Các thuật toán tìm kiếm trên đồ thị
a. Thuật toán tìm kiếm theo chiều sâu DFS (Depth – First – Search)
Là một thuật toán duyệt hoặc tm kiếm trên một cây hoặc một đồ
thị. Thuật toán khởi đầu tại gốc (hoặc chọn một đỉnh nào đó coi nhƣ gốc)
và phát triển xa nhất có thể theo mỗi nhánh.
Thông thƣờng, DFS là một dạng tìm kiếm thông tin không đầy

đủ mà quá trình tìm kiếm đƣợc phát triển tới đỉnh con đầu tiên của nút
đang tm kiếm cho tới khi gặp đƣợc đỉnh cần tm hoặc tới một nút không
có con. Khi đó giải thuật quay lui về đỉnh vừa mới tìm kiếm ở bƣớc trƣớc.
Trong dạng không đệ quy, tất cả các đỉnh chờ đƣợc phát triển đƣợc bổ
sung vào một ngăn xếp Last In First Ount (LIFO).


10
10

Ví dụ:

Hình 1.3 Ví dụ về thuật toán tìm kiếm DFS
Tìm kiếm ƣu tên chiều sâu bắt đầu thăm đỉnh A, đi theo cạnh trái,
tếp tục tm kiếm xong ở cây con trái mới chuyển sang tìm kiếm ở cây con
phải. Thứ tự thăm viếng các đỉnh là: A, B, D, F, E, C, G.
Quá trình viếng thăm các đỉnh diễn ra nhƣ sau: Sau khi thăm đỉnh A, vì
B chƣa đƣợc thăm nên theo cạnh AB ta thăm B, tếp tục theo cạnh BD tới
viếng thăm D. Từ D không thể tiếp tục đi xa hơn, ta quay lại B. Từ B, theo
BF đến thăm F, từ F đến thăm E. Từ E vì A đã viếng thăm nên ta quay lại
F, rồi quay lại B. Tại B vì tất cả các khả năng từ B đã xem xét nên ta quay lại
A. Từ A, quá trình tiếp tục với các đỉnh C và G.
Kết quả của thuật toán:
- Duyệt các đỉnh:Có thể dùng giải thuật này để tạo một danh sách
tuyến tính các đỉnh của một đồ thị (hoặc cây). Có ba cách hiện thực
phƣơng pháp này:
 Duyệt tiền thứ tự (preordering): Tạo ra một danh sách mà
trong
đó các đỉnh xuất hiện theo đúng trật tự nó đƣợc thăm đến khi chạy
thuật toán. Đây chính là biểu diễn tự nhiên của quá trình thực hiện giải

thuật tìm kiếm theo chiều sâu. Một biểu thức ở dạng tiền thứ tự đƣợc
gọi là ký pháp tiền tố.


11
11

 Duyệt hậu thứ tự (postordering): Tạo ra một danh sách mà trong
đó
các đỉnh xuất hiện theo thứ tự của lần duyệt đến sau cùng khi thực hiện
giải


12
12

thuật. Một lần duyệt hậu thứ tự một cây biểu thức sẽ cho ra một ký
pháp hậu tố.
 Duyệt đảo hậu thứ tự (reverse postordering): Kết quả của cách
duyệt
này là sự đảo ngƣợc lại thứ tự trong kết quả duyệt hậu thứ tự. Thông
thƣờng, khi duyệt cây, cách này cho ra cùng kết quả với duyệt tiền thứ
tự, nhƣng xét tổng quát, khi duyệt một đồ thị, tền thứ tự và đảo hậu thứ
tự cho ra kết quả khác nhau. Với các đồ thị có hƣớng và không có
vòng, cách duyệt đảo hậu thứ tự cho ra một trât tự tô-pô của đồ thị đó.
Thuật toán tìm kiếm theo chiều sâu của đồ thị vô hướng:
- Ý tƣởng thuật toán:DFS trênđồ thị vô hƣớng cũng giống nhƣ khám
phá mê cung với một cuộn chỉ và một thùng sơn đỏ để đánh dấu, tránh bị
lạc. Trong đó mỗi đỉnh s trong đồ thị tƣợng trƣng cho một cửa trong mê
cung.

Ta bắt đầu từ đỉnh s, buộc đầu cuộn chỉ vào s và đánh đấu
đỉnh này này "đã thăm". Sau đó ta đánh dấu s là đỉnh hiện hành u.
 Bây giờ, nếu ta đi theo cạnh (u,v) bất kỳ.
 Nếu cạnh (u,v) dẫn chúng ta đến đỉnh "đã thăm" v, ta quay trở về u.
 Nếu đỉnh v là đỉnh mới, ta di chuyển đến v và lăn cuộn chỉ
theo.
Đánh dấuv là "đã thăm". Đặt v thành đỉnh hiện hành và lặp lại các bƣớc.
 Cuối cùng, ta có thể đi đến một đỉnh mà tại đó tất cả các cạnh
kề
với nó đều dẫn chúng ta đến các đỉnh "đã thăm". Khi đó, ta sẽ quay lui
bằng cách cuộn ngƣợc cuộn chỉ và quay lại cho đến khi trở lại
một đỉnh với một đỉnh còn chƣa đƣợc khám phá. Lại tiếp tục quy trình
khám phá nhƣ trên.
 Khi chúng ta trở về s và không còn cạnh nào kề với nó chƣa bị khám
phá là lúc DFS dừng.
- Độ phức tạp của thuật toán:


13
13

 DFS đƣợc gọi đúng 1 lần ứng với mỗi đỉnh.
 Mỗi cạnh đƣợc xem xét đúng 2 lần, mỗi lần từ một đỉnh kề với nó.


14
14

 Với ns đỉnh và ms cạnh thuộc thành phần liên thông chứa s,
một

phépDFS bắt đầu tại s sẽ chạy với thời gian O(ns + ms) nếu:
 Đồ thị đƣợc biểu diễn bằng cấu trúc dữ liệu dạng danh sách kề.
 Đặt nhãn cho một đỉnh là "đã thăm" và kiểm tra xem một đỉnh
"đã
thăm chƣa tốn chi phí O(degree).
 Bằng cách đặt nhãn cho các đỉnh là "đã thăm", ta có thể xem xét
một cách hệ thống các cạnh kề với đỉnh hiện hành nên ta sẽ không xem
xét một
cạnh quá 1 lần.
- Xác định đỉnh kề trong DFS
 Kết quả của DFS phụ thuộc vào cách ta chọn đỉnh kế tiếp

Hình 1.4 Xác định đỉnh kề trong thuật toán DFS
 Nếu ta bắt đầu tại A và thử cạnh nối đến F, sau đó đến B,
rồi đến E, C, cuối cùng là G ta đƣợc:


×