Applied Algorithms - Chapter 6.1 (HUST) Thầy Phạm Quang Dũng

LI
lienhejb
0 lượt tải
21
0
Applied Algorithms - (HUST) GV.Phạm Quang Dũng

Nội dung tài liệu

Trang 1

goupee.vn goupee.com THUẬT TOÁN ỨNG DỤNG Tarjan DFS algorithm for finding Bridges and Articulation Points cuu duong than cong . com Phạm Quang Dũng Bộ môn KHMT dungpq@soict.hust.edu.vn 1 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 2

goupee.vn goupee.com Duyệt theo chiều sâu  Cây DFS  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 cuu duong than cong . com 2 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 3

goupee.vn goupee.com DFS(6) 6 1 4 3 2 8 5 cuu duong than cong . com 9 7 3 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 4

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 cuu duong than cong . com 4 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 5

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 cuu duong than cong . com 5 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 6

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 3 cuu duong than cong . com 6 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 7

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 3 2 cuu duong than cong . com 7 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 8

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = 5 3 2 8 cuu duong than cong . com 8 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 9

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = 5 3 num[5] = 6, low[5] = 6 2 8 5 cuu duong than cong . com 9 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 10

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = 5 3 num[5] = 6, low[5] = 6 num[9] = 7, low[9] = 7 2 8 5 cuu duong than cong . com 9 10 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 11

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = 5 3 num[5] = 6, low[5] = 6 num[9] = 7, low[9] = num[2] = 4 2 8 5 cuu duong than cong . com 9 11 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 12

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = 5 3 num[5] = 6, low[5] = 6 num[9] = 7, low[9] = num[2] = 4 2 num[7] = 8, low[7] = 8 8 5 cuu duong than cong . com 9 7 12 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 13

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = 5 3 num[5] = 6, low[5] = 6 num[9] = 7, low[9] = num[2] = 4 2 num[7] = 8, low[7] = num[8] = 5 8 5 cuu duong than cong . com 9 7 13 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 14

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = 5 3 num[5] = 6, low[5] = low[9] = 4 num[9] = 7, low[9] = num[2] = 4 2 num[7] = 8, low[7] = num[8] = 5 8 5 cuu duong than cong . com 9 7 14 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 15

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = 3 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = low[5] = 4 3 num[5] = 6, low[5] = low[9] = 4 num[9] = 7, low[9] = num[2] = 4 2 num[7] = 8, low[7] = num[8] = 5 8 5 cuu duong than cong . com 9 7 15 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 16

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = 2 1 num[3] = 3, low[3] = num[6] = 1 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = low[5] = 4 3 num[5] = 6, low[5] = low[9] = 4 num[9] = 7, low[9] = num[2] = 4 2 num[7] = 8, low[7] = num[8] = 5 8 5 cuu duong than cong . com 9 7 16 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 17

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = low[3] = 1 1 num[3] = 3, low[3] = num[6] = 1 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = low[5] = 4 3 num[5] = 6, low[5] = low[9] = 4 num[9] = 7, low[9] = num[2] = 4 2 num[7] = 8, low[7] = num[8] = 5 8 5 cuu duong than cong . com 9 7 17 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 18

goupee.vn goupee.com DFS(6) 6 num[6] = 1, low[6] = 1 num[1] = 2, low[[1] = low[3] = 1 1 num[3] = 3, low[3] = num[6] = 1 4 num[2] = 4, low[2] = 4 num[8] = 5, low[8] = low[5] = 4 3 num[5] = 6, low[5] = low[9] = 4 num[9] = 7, low[9] = num[2] = 4 2 num[7] = 8, low[7] = num[8] = 5 num[4] = 9, low[4] = 9 8 5 cuu duong than cong . com 9 7 18 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 19

goupee.vn goupee.com Sample code #include <bits/stdc++.h> using namespace std; const int N = 10000; int n,m; vector<int> A[N]; bool visited[N]; int num[N]; int low[N]; int t; vector<pair<int,int> > bridges; void input(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i = 1; i <= m; i++){ int u,v; cin >> u >> v;cuu duong than cong . com A[u].push_back(v); A[v].push_back(u); } } 19 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 20

goupee.vn goupee.com Sample code void dfs(int s, int ps){ // DFS from s with ps is the parent of s in the DFS tree t++; num[s] = t; low[s] = num[s]; visited[s] = true; for(int i = 0;i < A[s].size(); i++){ int v = A[s][i]; if(v == ps) continue; if(visited[v]){ low[s] = min(low[s],num[v]); }else{ dfs(v,s); low[s] = min(low[s],low[v]); if(low[v] > num[s]){ // discover a bridge (s,v)cuu duong than cong . com bridges.push_back(make_pair(s,v)); } } } } 20 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Hiển thị 20 trang đầu. Tải tài liệu để xem đầy đủ.

Bình luận (0)

Đăng nhập để tham gia bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!