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

Bài giảng Thuật toán ứng dụng: Tarjan DFS algorithm for finding bridges and articulation points

21 9 0
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 đề Tarjan DFS algorithm for finding bridges and articulation points
Tác giả Phạm Quang Dũng
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Thuật toán ứng dụng
Thể loại Bài giảng
Định dạng
Số trang 21
Dung lượng 162,56 KB

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

Nội dung

Bài giảng Thuật toán ứng dụng: Tarjan DFS algorithm for finding bridges and articulation points. Chương này cung cấp cho học viên những nội dung về: duyệt theo chiều sâu; cây DFS; cấu trúc dữ liệu duy trì;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!

Trang 1

Tarjan DFS algorithm for finding Bridges

and Articulation Points

THUẬT TOÁN ỨNG DỤNG

1

Phạm Quang Dũng

Bộ môn KHMTdungpq@soict.hust.edu.vn

Trang 2

Duyệt theo chiều sâu

 DFS xuất phát từ một đỉnh cho phép thăm các đỉnh con cháu của nó trên cây DFS

 Cấu trúc dữ liệu duy trì

 num[v]: thời điểm đỉnh v được thăm

 low[v]: giá trị num nhỏ nhất của các đỉnh x sao cho có cạnh ngược (u,x) với u là 1 đỉnh con cháu nào đó của v

2

Trang 4

4

6 num[6] = 1, low[6] = 1

Trang 7

num[6] = 1, low[6] = 1num[1] = 2, low[[1] = 2num[3] = 3, low[3] = 3num[2] = 4, low[2] = 4

Trang 8

num[6] = 1, low[6] = 1num[1] = 2, low[[1] = 2num[3] = 3, low[3] = 3num[2] = 4, low[2] = 4num[8] = 5, low[8] = 5

Trang 9

5

num[6] = 1, low[6] = 1num[1] = 2, low[[1] = 2num[3] = 3, low[3] = 3num[2] = 4, low[2] = 4num[8] = 5, low[8] = 5num[5] = 6, low[5] = 6

Trang 10

5 9

num[6] = 1, low[6] = 1num[1] = 2, low[[1] = 2num[3] = 3, low[3] = 3num[2] = 4, low[2] = 4num[8] = 5, low[8] = 5num[5] = 6, low[5] = 6num[9] = 7, low[9] = 7

Trang 11

5 9

num[6] = 1, low[6] = 1num[1] = 2, low[[1] = 2num[3] = 3, low[3] = 3num[2] = 4, low[2] = 4num[8] = 5, low[8] = 5num[5] = 6, low[5] = 6num[9] = 7, low[9] = num[2] = 4

Trang 16

num[8] = 5, low[8] = low[5] = 4num[5] = 6, low[5] = low[9] = 4num[9] = 7, low[9] = num[2] = 4num[7] = 8, low[7] = num[8] = 5

Trang 17

num[8] = 5, low[8] = low[5] = 4num[5] = 6, low[5] = low[9] = 4num[9] = 7, low[9] = num[2] = 4num[7] = 8, low[7] = num[8] = 5

Trang 18

num[8] = 5, low[8] = low[5] = 4num[5] = 6, low[5] = low[9] = 4num[9] = 7, low[9] = num[2] = 4num[7] = 8, low[7] = num[8] = 5num[4] = 9, low[4] = 9

Trang 20

Sample code

20

void dfs(int s, int ps){

// DFS from s with ps is the parent of s in the DFS tree t++;

} } } }

Trang 21

for(int i = 0; i < bridges.size(); i++){

cout << "(" << bridges[i].first << "," << bridges[i].second << ") "; }

Ngày đăng: 22/11/2022, 22:37

TỪ KHÓA LIÊN QUAN