Tín hiệu liên thông của đồ thị
Tính liên thông đồ thị Tính liên thông đồ thị Tính liên thông đồ thị Tính song liên thông Đỉnh khớp Cầu Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Nhắc lại số khái niệm Tính liên thông Đồ thị liên thông: cặp đỉnh nối với đường ng ng Đồ thị liên thông Đồ thị không liên thông Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua Tính liên thông Thành phần liên thông: đồ thị liên thông tối nh đại G Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua Quan hệ tương đương Một quan hệ tập hợp S tập R cặp có thứ tự phần tử S định nghóa thuộc tính Ví dụ: S ={ 1, 2, 3, } R ={ (i,j) ∈ S ´ S cho i < j } ={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)} Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua Quan hệ tương đương Một quan hệ tương đương quan hệ với thuộc tính sau: Tính phản xạ: (x,x) ∈ R, ∀ x ∈ S (reflexive) Tính đối xứng:(x,y) ∈ R ⇒ (y,x) ∈ R ng (symmetric) Tính bắc cầu :(x,y), (y,z) ∈ R⇒ (x,z) ∈ R (transitive) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua Quan hệ tương đương Quan hệ C tập đỉnh đồ thị: (u,v) Ỵ C Û u v thuộc thành phần ng nh liên thông quan hệ tương đương Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua DFS đồ thị không liên thông DFS đồ thị không liên thông Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 10 DFS đồ thị không liên thông Sau thực DFS(1): k val[k] 0 Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 11 DFS đồ thị không liên thông Hàm đệ qui DFS thăm tất đỉnh thuộc thành phần liên thông nh Cần thêm vào vòng lặp for để thăm tất ng đỉnh đồ thị: for k = to N if (val[k] = 0) then dfs(k) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua 12 DFS đồ thị không liên thông Cách biểu diễn thành phần liên thông: ch nh Dùng mảng Comp[1 N] để biểu diển: ng ng Comp[k] = i đỉnh k ∈ thành phần liên nh thông i Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 13 DFS đồ thị không liên thông Sau thực hiệän DFS(1): thự hie DFS(1): k val[k] val[k] 1 Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 14 Thuật toán DFS xác định thành phần liên thông nh Algorithm DFS(v, id) Algorithm DFS(v, id) Input: Một đỉnh v đồ thị, Input: Một đỉnh v đồ thị, số id tplt số id tplt Output: Gán nhãn id cho tất Output: Gán nhãn id cho tất đỉnh tplt đỉnh tplt Comp[v] =id; Comp[v] =id; for (mọi đỉnh k kề với v) for (mọi đỉnh k kề với v) if Comp[k]= then if Comp[k]= then Gọi đệ qui DFS(k, id); Gọi đệ qui DFS(k, id); Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 15 Thuật toán DFS xác định thành phần liên thông nh Algorithm ThanhPhanLT Input: Đồ thị G Output: Mảng Comp cho biết tplt Mả biế cá id = 0; for k = to N Comp[k] = 0; for k = to N if (Comp[k] = 0) then id++; DFS(k, id); Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 16 Tính song liên thông Các đỉnh khớp Đỉnh khớp (cutvertex) đỉnh huỷ khỏi đồ thị làm tăng số thành phần liên nh thông đồ thị Nếu G liên thông, w đỉnh khớp G sau huỷ w, G không liên thông Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 18 Các đỉnh khớp Ví dụ, ORD DEN đỉnh khớp, MSD Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 19 Các đỉnh khớp Nếu sân bay DEN (Denver) bị đóng cửa, ng tuyến bay nối miền đông miền tây USA bị gián đoạn, sân bay ORD (Chicago) bị đóng ng cửa, ta từ Providence (PVD) đến Denver Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 20 10 Đồ thị song liên thông Đồ thị song liên thông (biconnected Graph) đồ thị liên thông không chứa đỉnh khớp Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 21 Đồ thị song liên thông Nếu mở thêm hai tuyến bay LGA-ATL DFW-LAX, mạng lưới trở thành đồ thị song ng nh liên thông Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua 22 11 Đồ thị song liên thông Một số tính chất đồ thị song liên thông: Có hai đường khác hai ng đỉnh Giữa hai đỉnh bất kỳ, tồn chu trình sơ cấp qua chúng ng Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 23 Đồ thị song liên thông Ta qui ước, đồ thị K2 đồ thị song liên thông, không thoả hai tính chất Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 24 12 Thành phần song liên thông nh Thành phần song liên thông: đồ thị song liên nh thông tối đại G Mấu chốt việc xác định tính song liên thông thành phần song liên thông tìm nh cách xác định đỉnh khớp ch Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 25 Thành phần song liên thông nh Các thành phần song liên thông đồ thị nh cạnh chung đỉnh nh thuộc nhiều thành phần song liên thông (ví dụ nh DEN, ORD) Những đỉnh loại đỉnh khớp Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 26 13 Thuật toán tìm đỉnh khớp Thuật toán Brute-Force (vét cạn) Huỷ đỉnh khỏi đồ thị, xác định tính liên thông Thử cho tất đỉnh đồ thị ta có kết mong muốn Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 28 14 Thuật toán Brute-Force (vét cạn) Algorithm Brute-Force {tìm đỉnh khớùp} Algorithm BruteBrute-Force {tìm đỉnh khơ p} đỉnh khớ Input: Đồ thị liên thông G Input: Đồ thị liên thông G Output: Danh sách L đỉnh khớp Output: Danh sá sách L cá đỉnh khớ đỉnh khớp L = ∅; L = ∅; for (mọi đỉnh k G) mọ đỉnh for (mọi đỉnh k củ G) Huỷ k khỏi G; Huỷ k khỏ G; Huỷ khỏi Kiểm tra tính liên thông G; í Kiể tra ttính liên thông củ G; Kiểm Nếu G không liên thông L = L +[k]; Nế G không liên thông L = L +[k]; Nếu Đặt k vào lại G; Đặt k lạ G; vào lại Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 29 Thuật toán Brute-Force (vét cạn) Độ phức tạp thuật toán: Cần n lần kiểm tra tính liên thông Mỗi lần kiểm tra tốn chi phí O(n + m) Như vậy, tổng chi phí O(n2 + nm) ng Chi phí khoảng O(n3), cao ng Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 30 15 Thuật toán đánh số DFS nh (DFS numbering) Nhắc lại duyệt DFS, cạnh ng nh đồ thị chia làm hai loại: cạnh thuộc nh DFS backedge (u,v) cạnh thuộc DFS val [u] < val [v] nh (u,v) laø backedge val[u] > val[v] Ta xác định đỉnh khớp thông qua cách ch đánh số DFS hai thuộc tính … nh Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 31 Thuật toán đánh số DFS nh (DFS numbering) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 32 16 Thuật toán đánh số DFS nh (DFS numbering) Thuộc tính (gốc): gốc (root) DFS đỉnh khớp có nhiều cạnh nh từ Trong trình duyệt, ta phải quay lại gốc để đến nút lại đồ thị Khi đứng Root, ta ng đến khác cách băng ng ch qua gốc Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 33 Thuật toán đánh số DFS nh (DFS numbering) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 34 17 Thuật toán đánh số DFS nh (DFS numbering) Thuộc tính (phức hợp): đỉnh v gốc DFS đỉnh khớp có đỉnh w cho backedge nối w với “tổ tiên” v Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 35 Thuật toán đánh số DFS nh (DFS numbering) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 36 18 Thuật toán đánh số DFS nh (DFS numbering) Một số định nghóa: Low(v): đỉnh đánh số với số nhỏ nh đến từ v cách dùng ng ch ng đường có hướng (tạo ng ng trình duyệt DFS) mà có tối đa cạnh backedge nh Min(v) = val(low(v)) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 37 Thuật toán đánh số DFS nh (DFS numbering) Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 38 19 Thuật toán DFS tìm đỉnh khớp Algorithm DFS {tìm đỉnh khớùp} Algorithm DFS {tìm đỉnh khơ p} đỉnh khớ Input: Đồ thị liên thông G Input: Đồ thị liên thông G Output: Danh sách L đỉnh khớp Output: Danh sá sách L cá đỉnh khớ đỉnh khớp L = ∅; L = ∅; Thực hiệän DFS đồ thị G Thự c hie n DFS đồ thị G Thự hiệ Kiểåm tra nếáu root củûa DFS cóù nhấátt Kie m tra ne u root cu a DFS co nha Kiể nế củ có nhấ ((thoả mãn thuộäc tính 1) L = L +[root] thoảû mãn thuo c ttính 1) L = L +[ root] thoa thuộ í +[root] Vớùi i i đỉnh v, kiểåm tra nếáu cóù cạïnh (v, w) Vơ mỗ đỉnh v, kie m tra ne u co ca nh (v, w) Vớ đỉnh kiể nế có cạnh củûa DFS thoảû Min(w) ≥ val[v]thì L = L +[v] cu a DFS thoa Min(w) ≥ val[v]thì L = L +[ củ thoả val[v]thì +[v] Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 39 Thuật toán DFS tìm đỉnh khớp Để xác định Min(v) ta có quan hệ sau: Min(v) = val(low(v)) số nhỏ giá trị Val[v] số nhỏ số Min(w) với (v, w) cạnh nh số nhỏ số Val[z] với (v, z) backedge Như vậy, ta xác đinh Min(v) thuật ng toán đệ qui Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 40 20 Tìm thành phần nh song liên thông Tìm thành phần nh song liên thông DFS thăm đỉnh cạnh thành nh nh phần song liên thông cách liên tiếp ch Sử dụng stack để lưu vết của• thành phần ng nh song liên thông duyệt Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 42 21 Tìm thành phần nh song liên thông Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dư lie va Gia thua 43 Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ liệäu vàø Giảûi thuậät Nha Ca tru Dö lie va Gia thua 44 22 ...Nhắc lại số khái niệm Tính liên thông Đồ thị liên thông: cặp đỉnh nối với đường ng ng Đồ thị liên thông Đồ thị không liên thông Dương Anh Đức – Nhậäp môn Cấáu trúùc Dữ... thua 16 Tính song liên thông Các đỉnh khớp Đỉnh khớp (cutvertex) đỉnh huỷ khỏi đồ thị làm tăng số thành phần liên nh thông đồ thị Nếu G liên thông, w đỉnh khớp G sau huỷ w, G không liên thông Dương... thua 24 12 Thành phần song liên thông nh Thành phần song liên thông: đồ thị song liên nh thông tối đại G Mấu chốt việc xác định tính song liên thông thành phần song liên thông tìm nh cách xác định