1. Trang chủ
  2. » Công Nghệ Thông Tin

Các phương pháp duyệt đồ thị

23 824 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các phương pháp duyệt đồ thị
Tác giả Dương Anh Đức
Người hướng dẫn Nhậ Nhập Mụn Cấ Cấu Trỳ Trỳc Dư Dữ Liệu Và Giả Giải Thuật
Trường học Trường Đại Học
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại bài luận
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 1,32 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các phương pháp duyệt đồ thị

Trang 1

Các phương pháp

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 2

Các phương pháp duyệt đồ thị

„ Duyệt theo chiều sâu(Depth-First Search)

„ Duyệt theo chiều rộng(Breadth-First Search)

Trang 2

Depth-First Search (DFS)

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 4

Khái niệm

„ DFS trên một đồ thị vô hướng cũng giống như

khám phá một mê cung với một cuộn chỉvà một

thùng sơn đỏđểđánh dấu,tránh bị lạc

„ Ta bắt đầu từđỉnh s, buộc đầu cuộn chỉ vào s

đánh dấu đỉnh này là “đã thăm” Sau đó ta

đánh dấus làđỉnh hiện hànhu

Trang 3

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 5

Khái niệm

„ Bây giờ, 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 quaytrởvều

„ Nếu đỉnh v là đỉnh mới, ta di chuyển đến v

không quên lăm cuộn chỉ của mình theo Đánh

dấu đỉnh v“đã thăm” Đặt vthành đỉnh hiện

hành vàlặp lại các bước trước

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 6

Khái niệm

„ Cuối cùng, ta có thể đi đến một điểm 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 kề với một cạnh còn chưa

được khám phá Lại tiếp tục qui 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úcDFS dừng

Trang 4

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 7

Thuật toán Depth-First Search

Algorithm DFS(v);

Input:Một đỉnh v của đồ thị

Output:Một cách gán nhãn cho các cạnh đã

“được khám phá” hoặc “backedge”

for (mọi cạnh e kề với v) do

if cạnh e chưa được khám phá then

Gọi w là đỉnh khác của e

if đỉnh w là đỉnh mới then

Gán nhãn e là “được khám phá”

Gọi đệ qui DFS(w)

else

Gán nhãn e là “backedge”

Algorithm DFS(v);

“được khám phá”hoặc“backedge”

else

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 8

Thuật toán Depth-First Search

Trang 5

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 9

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

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 10

Xác định đỉnh kề trong DFS

„ Nếu ta bắt đầu tại A và thử cạnh nối đến F, sau

đóđếnB,rồi đếnE, C,cuối cùng làGta được:

Trang 6

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 11

Xác định đỉnh kề trong DFS

„ Nếu cũng bắt đầu từA nhưng đi theo trình tự:

tập các cạnh đã thăm, backedge và các điểm đệ

qui sẽ khác trước (Hãy tựlàm vàkiểm chứng)

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 12

Thuật toán Depth-First Search

„ Bây giờ ta sẽ xét từng bước của DFS qua ví dụ

trên:

Trang 7

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 13

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 14

Thuật toán Depth-First Search

Trang 8

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 15

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 16

Thuật toán Depth-First Search

Trang 9

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 17

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 18

Thuật toán Depth-First Search

Trang 10

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 19

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 20

Thuật toán Depth-First Search

Trang 11

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 21

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 22

Thuật toán Depth-First Search

Trang 12

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 23

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 24

Thuật toán Depth-First Search

Trang 13

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 25

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 26

Thuật toán Depth-First Search

Trang 14

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 27

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 28

Thuật toán Depth-First Search

Trang 15

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 29

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 30

Thuật toán Depth-First Search

Trang 16

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 31

Thuật toán Depth-First Search

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 32

Thuật toán Depth-First Search

„ Mệnh đề: Gọi G là một đồ thị vô hướng, trên

đó ta sẽ thực hiện thao tác DFS với đỉnh bắt

đầu làs thì

1. Phép duyệt sẽ thăm tất cả các đỉnh cùng

thành phần liên thông vớis

2. Các cạnh có nhãn “đã thăm” sẽ tại ra một

cây tối đại của thành phần liên thông chứa

s

Trang 17

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 33

Thuật toán Depth-First Search

„ Chứng minh:

…Khẳng định 1 làhiển nhiên vì DSFduyệtqua

tất cảcác đỉnh kềvới đỉnh hiện hành (Có thể

chứng minh hoàn chỉnh hơn bằng phản

chứng)

…Khẳng định 2 đúng do ta chỉ đánh dấu các

cạnh đi đến một đỉnh mới nên không thể tạo

ra chu trình Như vậy DFS tạo ra một cây

Hơn nữa, DFS thăm tất cả các đỉnh thuộc

thành phần liên thông nên cây này là cây tối

đại

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 34

Độ phức tạp thuật toán

„ Hãy nhớrằng:

…DFSđược gọi đúng 1lầ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ó

Trang 18

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 35

Độ phức tạp thuật toán

„ Với nS đỉnh và mS cạnh thuộc thành phần liên

thông chứa s, một phép DFS bắt đầu tại s sẽ

chay với thời gianO(nS+ mS) nếu:

… Đồ thị được biểu diễn bằng CTDL dạng danh sách

kề

… Đặt nhãn cho một đỉnh là “đã thăm” và kiểm tra

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

Breadth-First Search (BFS )

Trang 19

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 37

Khái niệm

(BFS) duyệt qua toàn bộ các đỉnh thuộc một

thành phân liên thông của đồ thị và xác định

được một cây tối đại của nó với một số thuộc

t nh hữu ích:

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 38

Khái niệm

„ Đỉnh xuất phát s ở mức 0, và cũng như trong

DFS, được xem như một điểm mốc trong quá

trình tìm kiếm

„ Ở lượt thứ nhất, cuộn chỉ được mở ra dọc theo

chiều dài một cạnh, và tất cả các đỉnh kề với

điểm mốc (cách điểm mốc đúng một cạnh) đều

được thăm

„ Các đỉnh này được đặt ở mức 1 (các cạnh tương

ứng cũng vậy)

Trang 20

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 39

Khái niệm

„ Ở lượt thứ hai, tất cả các đỉnh mới cách mốc 2

cạnh sẽ được thăm vàđược đặt ởmức 2

„ Quitrình này tiếp tục cho đến khi tất cả các đỉnh

được thăm(được gán vào một mức nào đó)

„ Nhãn của mọi đỉnhvtương ứng với đường điqua

ít cạnh nhất(ngắn nhất)từsđếnv

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 40

Breadth-First Search

(BFS )

Trang 22

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 43

Thuật toán Breadth-First Search

Algorithm BFS(v);

Input:Một đỉnh v của đồ thị

Output:Một cách gán nhãn cho các cạnh đã “được khám phá” hoặc

if cạnh e kề với v then

Gọiw là đỉnh khác của e

if đỉnhw là đỉnh mới then

Gán nhãne là “được khám phá”

Chèn w vào Li+1

if cạnh e kề với v then

Gọiwlà đỉnh khác củae

if đỉnhwlà đỉnh mới then

Gán nhãne là“được khám phá”

Chèn w vào Li+1

else

Gán nhãne là“crossedge”

i i + 1

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 44

Các tính chất của BFS

„ Mệnh đề: Gọi G là một đồ thị vô hướng trên đó

thực hiện phép duyệt BFS bắt đầu từ đỉnh s Ta

có:

…Phép duyệt sẽ thăm tất cả các đỉnh cùng

thành phần liên thông vớis

…Các cạnh có nhãn “đã thăm” sẽ tại ra một

cây tối đại của thành phần liên thông chứa s

mà ta sẽ gọi làcâyBFS

Trang 23

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 45

Các tính chất của BFS

…Với mỗi cạnh v tại mức i, đường đi trên cây

BFS Tgiữa svqua icạnh, vàbất kỳđường

đi nào khác trên G giữa sv dài tối thiểu i

cạnh

…Nếu (u, v) là một cạnh không nằm trên cây

BFS, thìmức của uvsai lệch không quá1

Dương Anh Đức – Nhập môn Cấu trúc Dữ liệu và Giải thuật 46

Các tính chất của BFS

„ Mệnh đề: Gọi G là một đồ thị vô hướng với n

đỉnh vàmcạnh Một phép duyệt BFS trên G tốn

chiphíO(n + m) Ngoài ra, tồn tại các thuật toán

O(n + m) dựa trên nền tảng BFS để giải các bài

toán sau:

…Kiểm tra tính liên thông của G

…Xác định cây tối đạiG

…Xác định các thành phần liên thông củaG

…Xác định, với mỗi cạnh v ∈ G, số cạnh tối

thiểu cần đi từsđếnv

Ngày đăng: 22/08/2012, 11:31

TỪ KHÓA LIÊN QUAN

w