Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
231,91 KB
Nội dung
CHƯƠNG 2 BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH Tơn Quang Toại Khoa CNTT, Đại học Ngoại ngữ ‐ Tin học TP.HCM Nội dung Biểu diễn đồ thị Ma trận kề, ma trận số Biểu diễn đồ thị Danh sách kề Biểu diễn đồ thị Danh sách cạnh BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ, MA TRẬN TRỌNG SỐ Ma trận kề Đồ thị G=(V, E) có n đỉnh ( ) và m cạnh. Ma trận kề (adjacency matrix) của G là mảng 2 chiều , trong cho biết G chứa cạnh (i,j) hay không 𝑣 𝑖, 𝑗 𝑛ế𝑢 𝑐ạ𝑛ℎ 𝑖, 𝑗 ∈ 𝐸 𝑛ế𝑢 𝑐ạ𝑛ℎ 𝑖, 𝑗 ∉ 𝐸 Ma trận kề Ví dụ: Graph vơ hướng 0 v = 5 Ma trận kề Ví dụ: Graph có hướng 0 v = 3 Ma trận kề Cấu trúc liệu int[,] v; int n; Cấu trúc file dữ liệu của ma trận kề Graph.INP Số đỉnh Ma trận kề 1 0 1 1 1 0 0 0 1 1 1 0 1 Ma trận kề Một số tính chất ma trận kề Ma trận kề đồ thị vô hướng ma trận đối xứng: Ngược lại, ma trận đối xứng (0,1) bậc n sẽ tương ứng với đồ thị vô hướng n đỉnh Nếu đồ thị vô hướng: Số lượng số 1 trên dòng thứ i = Số lượng số 1 trên cột thứ i = deg(i) Nếu đồ thị có hướng: • Số lượng số 1 trên dòng i = tổng bậc đỉnh i = deg+(i) • Số lượng số 1 trên cột i = tổng bậc vào đỉnh i = deg ‐(i) Ma trận kề Một số thao tác cấu trúc Graph Kiểm tra có 1 cạnh nối đỉnh u đến đỉnh v khơng Xét đỉnh kề với đỉnh u cho trước Thêm 1 cạnh nối đỉnh u đến đỉnh v nếu chưa có cạnh Xóa cạnh nối đỉnh u đến đỉnh v nếu có cạnh Xóa cạnh nối đỉnh u đến đỉnh v nếu có cạnh cho phép phục hồi lại sau Xóa cạnh kề với đỉnh u và xóa đỉnh u Ma trận trọng số Đồ thị có trọng số: Mỗi cạnh e=(u,v) của đồ thị gán với con số w(u, v) gọi trọng số cạnh e. Trong trường hợp đồ thị có trọng số, thay dùng ma trận kề, chúng ta biểu diễn đồ thị ma trận trọng số sau 𝑣 𝑖, 𝑗 𝑤 𝑖, 𝑗 𝑛ế𝑢 𝑐ạ𝑛ℎ 𝑖, 𝑗 ∈ 𝐸 𝑛ế𝑢 𝑐ạ𝑛ℎ 𝑖, 𝑗 ∉ 𝐸 SortedDictionary SortedDictionary: SortedDictionary mảng tổng quát gồm cặp key‐value Key của mảng thông thường: 0, 1, 2, …, n‐1 Key của dictionary là kiểu Thời gian truy cập phần tử SortedDictionary d = new SortedDictionary(); d["a"] = 4; d["b"] = 8; d["c"] = 2; foreach (KeyValuePair x in d) Console.Write(x.Value); SortedDictionary Properties Count Values Keys Methods Add() Remove() ContainsValue(), ContainsKey() BIỂU DIỄN ĐỒ THỊ BẰNG DANH SÁCH KỀ Danh sách kề Trong biểu diễn danh sách kề (Adjacency list) của đồ thị G = (V,E), mỗi đỉnh v của đồ thị chúng ta lưu trữ danh sách các đỉnh kề với v. Nếu đồ thị khơng có trọng số LinkedList[] v; Danh sách kề LinkedList[] v = new LinkedList[4]; v[0] = new LinkedList(); v[0].AddLast(1); v[0].AddLast(2); v[1] = new LinkedList(); v[1].AddLast(0); v[1].AddLast(2); v[1].AddLast(3); v[2] = new LinkedList(); v[2].AddLast(0); v[2].AddLast(1); v[2].AddLast(3); v[3] = new LinkedList(); v[3].AddLast(1); v[3].AddLast(2); Danh sách kề Nếu đồ thị có trọng số LinkedList[] v; Danh sách kề LinkedList[] v = new LinkedList[4]; v[0] = new LinkedList(); v[0].AddLast(new Tuple(1, 7)); v[0].AddLast(new Tuple(2, 4)); v[1] = new LinkedList(); v[1].AddLast(new Tuple(0, 7)); v[1].AddLast(new Tuple(2, 8)); v[1].AddLast(new Tuple(3, 5)); v[2] = new LinkedList(); v[2].AddLast(new Tuple(0, 4)); v[2].AddLast(new Tuple(1, 8)); v[2].AddLast(new Tuple(3, 1)); v[3] = new LinkedList(); v[3].AddLast(new Tuple(1, 5)); v[3].AddLast(new Tuple(2, 1)); Danh sách kề Cấu trúc file dữ liệu của danh sách kề Graph.INP 0 Số đỉnh 2 4 Danh sách các đỉnh kề của các đỉnh 0, 1, …, 4 BIỂU DIỄN ĐỒ THỊ BẰNG DANH SÁCH CẠNH Danh sách cạnh Danh sách cạnh (edge list): chứa tất cả các cạnh của đồ thị theo một trật tự Danh sách cạnh rất tiện dụng khi thuật tốn: Xử lý tất cả các cạnh của đồ thị Khơng cần tìm các cạnh của một đỉnh LinkedList e Danh sách cạnh e.AddLast(new e.AddLast(new e.AddLast(new e.AddLast(new e.AddLast(new e.AddLast(new e.AddLast(new Tuple(4, 1)); 2)); 3)); 1)); 4)); 4)); 1)); Danh sách cạnh Cấu trúc file dữ liệu của danh sách cạnh Graph.INP Số đỉnh 0 1 3 2 4 5 Số cạnh Danh sách cạnh Danh sách cạnh Nếu đồ thị có trọng số LinkedList e; Chọn cách biểu diễn đồ thị trên máy tính Chọn lựa cách biểu diễn đồ thị: Phụ thuộc vào Thuật toán xử lý đồ thị Số lượng đỉnh Chú ý: Có thể kết hợp số cách biểu diễn với Có thể chọn cấu trúc liệu khác để biểu diễn đồ thị Tóm tắt chương Có 3 cách thơng thường để biểu diễn đồ thị Ma trận kề, Ma trận trọng số Danh sách kề Danh sách cạnh