Microsoft PowerPoint Chương 7 Pa Compatibility Mode LOGO CHƯƠNG 7 CÁC THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ ĐỒ THỊ Euler VÀ ĐỒ THỊ Hamilton CÁC THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ ĐỒ THỊ Euler VÀ ĐỒ THỊ Hamilton 1 Các thuật toán duyệt đồ thị Duyệt đồ thị Graph Searching hoặc Graph Traversal Duyệt qua mỗi đỉnh và mỗi cạnh của đồ thị Ứng dụng Cần để khảo sát các tính chất của đồ thị Là thành phần cơ bản của nhiều thuật toán trên đồ thị Hai thuật toán duyệt cơ bản Tìm kiếm theo chiều rộng (Bre.
Trang 1CHƯƠNG 7
CÁC THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ
ĐỒ THỊ Euler VÀ ĐỒ THỊ Hamilton
CÁC THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ
ĐỒ THỊ Euler VÀ ĐỒ THỊ Hamilton
Trang 2Các thuật toán duyệt đồ thị
Duyệt đồ thị: Graph Searching hoặc Graph Traversal
Duyệt qua mỗi đỉnh và mỗi cạnh của đồ thị
Ứng dụng:
Cần để khảo sát các tính chất của đồ thị
Là thành phần cơ bản của nhiều thuật toán trên đồ thị
Hai thuật toán duyệt cơ bản:
Tìm kiếm theo chiều rộng (Breadth First Search – BFS)
Tìm kiếm theo chiều sâu (Depth First Search –
Trang 3Ý tưởng chung của các thuật toán duyệt
Trong quá trình thực hiện thuật toán, mỗi đỉnh ở một trong ba trạng thái:
Chưa thăm, thể hiện bởi màu trắng
Đã thăm (nhưng chưa duyệt xong), thể hiện bởi màu xám
Đã duyệt xong, thể hiện bởi màu đen
Trạng thái của đỉnh sẽ biến đổi theo qui tắc sau:
Thoạt đầu mỗi đỉnh đều có màu trắng (chưa thăm - not visited).
Đỉnh đã được thăm sẽ chuyển thành màu xám (trở thành
đã thăm nhưng chưa duyệt xong - visited).
Khi tất cả các đỉnh kề của một đỉnh v là đã được thăm,
Trang 47.1 Tìm kiếm theo chiều sâu
Depth-first Search (DFS)
đồ thị Sau đó chọn u là một đỉnh tuỳ ý kề với s
và lặp lại quá trình đối với u.
đỉnh w là chưa được thăm thì ta sẽ thăm đỉnh này (nó sẽ trở thành đã thăm nhưng chưa duyệt xong)
và bắt đầu từ nó ta sẽ tiếp tục quá trình tìm kiếm.
Trang 57.1 Tìm kiếm theo chiều sâu
Depth-first Search (DFS)
Nếu như không còn đỉnh nào kề với v là chưa thăm thì ta sẽ nói rằng đỉnh này là đã duyệt xong và quay trở lại tiếp tục tìm kiếm
từ đỉnh mà trước đó ta đến được đỉnh v (nếu
Trang 6Mô tả DFS
Input: Đồ thị G = (V, E) cho bởi danh sách kề
Output:
2 mốc thời gian cho mỗi đỉnh
• d[v] = thời điểm bắt đầu thăm (v chuyển từ trắng sang xám)
• f [v] = thời điểm kết thúc thăm (v chuyển từ xám sang đen)
[v] : đỉnh đi trước v – tức là đỉnh mà từ đó ta đến thăm v.
Sử dụng biến color để ghi nhận trạng thái của các
Trang 7cb
Trang 9b
Trang 11b
Trang 12dc
b
Trang 13b
Trang 14c
Trang 15b
Trang 16h
f
de
Trang 18f
g
Trang 19f
Trang 22h
Trang 24Đỉnh bắt đầu duyệt Các đỉnh đã duyệt Các đỉnh chưa duyệt
Trang 25Duyệt đồ thị trên theo thuật toán DFS
và BFS
c
e b
f
Trang 26• Các cạnh này tạo thành một rừng gọi là rừng tìm kiếm DFS.
• Các đỉnh được thăm khi thực hiện DFS(v) và các cạnh của cây tạo thành cây được gọi là cây DFS(v)
Trang 27Cây DFS(g)
fb
Trang 28 Cạnh ngược (Back edge): đi từ con cháu(descendent) đến tổ tiên (ancestor)
• Đi vào đỉnh xám (đi từ đỉnh xám đến đỉnh xám)
Trang 30 Cạnh ngược (Back edge): đi từ con cháu(descendent) đến tổ tiên (ancestor)
Cạnh tới (Forward edge): đi từ tổ tiên đến concháu
• Không là cạnh của cây
Trang 31b
Trang 32 Cạnh ngược (Back edge) : đi từ con cháu (descendent) đến tổ tiên (ancestor)
Cạnh tới (Forward edge) : đi từ tổ tiên đến con cháu
Cạnh vòng (Cross edge) : cạnh nối hai đỉnh không
có quan hệ họ hàng
• Không là cạnh của cây, và giống như cạnh vòng cũng
Trang 33b
Trang 34 Back edge: đi từ con cháu đến tổ tiên
Forward edge: đi từ tổ tiên đến con cháu
Cross edge: giữa hai đỉnh không có họ hàng
quan trọng; nhiều thuật toán khôngđòi hỏi phân biệt cạnh tới và cạnh
Trang 367.2 Tìm kiếm theo chiều rộng Breadth-first Search
Input: Đồ thị G = (V, E), vô hướng hoặc có hướng.
Output:
d[v] = khoảng cách (độ dài của đường đi ngắn nhất)
từ s (là đỉnh xuất phát tìm kiếm) đến v, với mọi vV d[v] = nếu v không đạt tới được từ s.
[v] = u đỉnh đi trước v trong đường đi từ s (là đỉnh xuất phát tìm kiếm) đến v có độ dài d[v].
Xây dựng cây BFS với gốc tại s chứa tất cả các đỉnh đạt tới được từ s.
Trang 48Bài tập
Trang 497.3 Tìm kiếm đường đi và kiểm tra tính liên thông
Trang 50Bài toán về tính liên thông
Bài toán: Cho đồ thị vô hướng G =(V,E) Hỏi đồ thị gồm bao nhiêu thànhphần liên thông, và từng thành phầnliên thông gồm các đỉnh nào?
trình chính sẽ sinh ra một thành phần liênthông
Trang 51Bài toán về tính liên thông
Bài toán: Cho đồ thị vô hướng G =(V,E) Hỏi đồ thị gồm bao nhiêu thànhphần liên thông, và từng thành phầnliên thông gồm các đỉnh nào?
trình chính sẽ sinh ra một thành phần liênthông
Trang 52DFS giải bài toán liên thông
Trang 53Tìm đường đi
Input: Đồ thị G = (V,E) xác định bởi danh sách
Trang 54Thuật toỏn kiểm tra tớnh liờn thụng mạnh
Chọn v V là một đỉnh tuỳ ý
Thực hiện DFS(v) trên G Nếu tồn tại đỉnh u khôngđược thăm thì G không liên thông mạnh và thuậttoán kết thúc Trái lại thực hiện tiếp
Thực hiện DFS(v) trên GT = (V, ET), với ET thu được
từ E bởi việc đảo ngợc hớng các cung Nếu tồn tại
đỉnh u không được thăm thì G không liên thôngmạnh, nếu trái lại G là liên thông mạnh
Trang 55e b
e b
f
Trang 56BÀI THẢO LUẬN 3
Trang 57chu trình Euler.
Trang 597.4 Đồ thị Euler
Điều kiện cần và đủ
thông G là đồ thị Euler Mọi đỉnh của Gđều có bậc chẵn
Nếu G có hai đỉnh bậc lẻ còn mọi đỉnh khácđều có bậc chẵn thì G có đường đi Euler
ii Cho G là đồ thị có hướng liên thông G là đồ
thị Euler G cân bằng
Trang 60Đường đi Euler-Đường đi Hamilton
tuân theo qui tắc sau: Mỗi khi đi quamột cạnh nào đó thì xoá nó đi, sau đóxoá đỉnh cô lập nếu có
không còn cách đi nào khác
Thuật toán Fleury để tìm chu trình Euler.
Trang 61Đường đi Euler-Đường đi Hamilton
e f
g h
abcfdcefghbga
Trang 627.5 Đồ thị Hamilton
Định nghĩa.
các đỉnh của đồ thị mỗi đỉnh đúng một lần
trình bắt đầu từ một đỉnh đi qua tất cả cácđỉnh còn lại mỗi đỉnh một lần rồi quay vềđỉnh xuất phát
trình Hamilton
Trang 63Qui tắc để xây dựng một chu trìnhHamilton H hoặc chỉ ra đồ thị vô hướngkhông là Hamilton
phải ở trong H
trình có chiều dài <n) nào được tạothành trong quá trình xây dựng H
Trang 64Qui tắc 3 Khi chu trình Hamilton mà tađang xây dựng đi qua đỉnh i thì xoá tất
cả các cạnh kề với I mà ta chưa dùng(vìkhông được dùng đến nữa)
Điều này lại có thể cho ta một số đỉnh bậc
2 và ta lại dùng qui tắc 1
treo nào được tạo nên sau khi áp dụngqui tắc 3