Thông tin tài liệu
Chương BIỂU DIỄN ĐỒ THỊ Representations of Graphs Biểu diễn đồ thị • Có nhiều cách biểu diễn Việc lựa chọn cách biểu diễn phụ thuộc vào toán cụ thể cần xét, thuật toán cụ thể cần cài đặt • Có hai vấn đề cần quan tâm lựa chọn cách biểu diễn: – Bộ nhớ mà cách biểu diễn địi hỏi – Thời gian cần thiết để trả lời truy vấn thường xuyên đồ thị trình xử lý đồ thị: • Chẳng hạn: – Có cạnh nối hai đỉnh u, v ? – Liệt kê đỉnh kề đỉnh v ? Ma trận kề (Adjacency Matrix) • |V| |V| ma trận A • Các đỉnh đánh số từ đến |V| theo thứ tự • A xác định bởi: • n = |V|; m = |E| Ma trận kề đồ thị vô hướng (u,v) E A[u,v] = trái lại 1 0 1 0 1 1 0 1 0 0 0 0 Ma trận kề đồ thị có hướng (u,v) E A[u,v] = trái lại 1 0 0 0 0 1 0 0 0 0 0 0 0 0 Tính chất ma trận kề – Gọi A ma trận kề đồ thị vơ hướng: • A ma trận đối xứng: A = AT (aij = aji) • deg(v) = Tổng phần tử dịng v A • Nếu ký hiệu Ak = (a(k)[u,v]) a(k)[u,v] số lượng đường từ u đến v qua không k-1 đỉnh trung gian – Khái niệm ma trận kề mở rộng để biểu diễn đa đồ thị vô hướng: auv – số lượng cạnh nối hai đỉnh u v Phân tích chi phí • Bộ nhớ (Space) – |V|2 bits – (|V|2 + |V|)/2 (nếu đồ thị vơ hướng, khó cài đặt) – Các thơng tin bổ sung, chẳng hạn chi phí cạnh, cần cất giữ dạng ma trận Một cách làm khác cất giữ trỏ đến thông tin • Thời gian trả lời truy vấn – Hai đỉnh i j có kề nhau? O(1) – Bổ sung loại bỏ cạnh O(1) – Bổ sung đỉnh: tăng kích thước ma trận – Liệt kê đỉnh kề v O(|V|) (ngay v đỉnh cô lập) Ma trận liên thuộc đỉnh cạnh • Xét G = (V, E), (V = {1, 2, , n}, E = {e1, e2, , em}), đồ thị có hướng, ma trận liên thuộc đỉnh cạnh A = (aij: i = 1, 2, , n; j = 1, 2, , m), có • Ma trận liên thuộc đỉnh cạnh cách biểu diễn hay số đơng tốn có liên quan đến đồ thị Ma trận liên thuộc đỉnh cạnh Ma trận trọng số • Trong đồ thị thay biểu diễn ma trận kề ta biểu diễn ma trận trọng số: • C = c[i, j], i, j = 1, 2, , n, • Trong khơng có cạnh đồ thị thay biểu diễn 0, +, - 10 Danh sách kề • Danh sách kề (Adjacency Lists): Với đỉnh v cất giữ danh sách đỉnh kề – Là mảng Ke gồm |V| danh sách – Mỗi đỉnh có danh sách – Với u V, Ke[u] bao gồm tất đỉnh kề u • Ví dụ: Đồ thị vơ hướng Đồ thị có hướng u v w v u w w u v x z y v z x t y a b b e c b c d e b f f 11 Danh sách kề đồ thị vô hướng Với v V, Ke(v) = danh sách đỉnh u: (v, u) E a B C A F D E b Danh sách đỉnh kề A B D B A C C B D E D A C E E C D F Bộ nhớ = a |V| + b |E| 12 Danh sách kề đồ thị có hướng Với v V, Ke(v) = { u: (v, u) E } a B C A F D E b A B B C C D D E D E E F Bộ nhớ = a |V| + b |E| 13 Yêu cầu nhớ • Tổng cộng nhớ: (|V|+|E|) • Thường nhỏ nhiều so với |V|2, đồ thị thưa (sparse graph) • Đồ thị thưa đồ thị mà |E| = k |V| với k < 10 • Chú ý: – Phần lớn đồ thị thực tế ứng dụng đồ thị thưa! – Cách biểu diễn sử dụng nhiều ứng dụng 14 Biểu diễn đồ thị • Thời gian trả lời truy vấn: – Thêm cạnh O(1) – Xoá cạnh Duyệt qua danh sách kề đầu mút – Thêm đỉnh Phụ thuộc vào cài đặt – Liệt kê đỉnh kề v: O() (tốt ma trận kề) – Hai đỉnh i, j có kề nhau? • Tìm kiếm danh sách: (degree(i)) Đánh giá tình tồi O(|V|) => khơng hiệu (tồi ma trận kề) 15
Ngày đăng: 30/08/2023, 14:22
Xem thêm: Bài giảng lý thuyết đồ thị chương 2 biểu diễn đồ thị