1 Lý Thuyết Đồ Thị Đại Học Khoa Học Tự Nhiên Tp HCM 227 Nguyễn Văn Cừ, Q 5 GVHD Lê Ngọc Thành E mail lnthanh@fit hcmus edu vn Updated 2013 Biểu diễn và thao tác trên đồ thị 1 Tóm tắt một số khái niệm[.]
Lý Thuyết Đồ Thị Đại Học Khoa Học Tự Nhiên Tp.HCM 227 Nguyễn Văn Cừ, Q.5 GVHD: Lê Ngọc Thành E-mail: lnthanh@fit.hcmus.edu.vn Updated 2013 Biểu diễn thao tác đồ thị Tóm tắt số khái niệm - Đồ thị thể bao gồm tập hợp đối tượng chúng có liên kết Trong toán học người ta gọi đối tượng đỉnh liên kết cạnh Đồ thị vô hướng đồ thị bao gồm cạnh khơng có hướng Đồ thị có hướng đồ thị bao gồm cạnh có thứ tự đỉnh cạnh có hướng Khuyên cạnh nối đỉnh với Cạnh song song cạnh có chung cặp điểm liên kết Đồ thị đơn đồ thị khơng có khun cạnh song song Đồ thị đủ đồ thị vô hướng, đơn đỉnh có cạnh nối chúng Đồ thị lưỡng phân đồ thị vơ hướng bao gồm tập đỉnh mà có cạnh liên kết đỉnh từ tập đến tập khơng có liên kết bên tập Đồ thị lưỡng phân đủ đồ thị lưỡng phân mà có đầy đủ cạnh nối đỉnh từ tập đến đỉnh tập Mỗi cặp có cạnh Bậc đỉnh số cạnh kề với đỉnh đồ thị vô hướng hay tổng số cạnh vào đỉnh đồ thị có hướng Đỉnh treo đỉnh có bậc Đỉnh lập đỉnh có bậc Trọng số cạnh giá trị thể chi phí hay độ lớn cạnh nối hai đỉnh đồ thị Nếu đồ thị khơng ghi trọng số, hiểu đồ thị có trọng số giá trị đơn vị Biểu diễn đồ thị Người ta thường dùng ma trận kề để biểu diễn đồ thị Một giá trị A[i,j] ma trận (dòng i cột j ma trận A) ứng với trọng số của cạnh (i, j) đồ thị Một giá trị đặc biệt thường sử dụng cho phần tử A[i, j] (thường 0) biết khơng có cạnh nối cặp đỉnh (i, j) Ví dụ: 2 3 4 2 3 4 Nhận xét: - Đường chéo đồ thị có gí trị (do đồ thị khơng có khun) - Đồ thị vơ hướng có giá trị đối xứng qua đường chéo -1- Trong số tốn ta khơng quan tâm đến trọng số đồ thị mà quan tâm có tồn cạnh (i, j) đồ thị hay không Đối với trường hợp này, ta sử dụng giá trị cho A[i, j] để tồn cạnh (i, j) Hướng dẫn cài đặt 3.1 Lưu trữ Dữ liệu thể ma trận kề thường lưu tập tin văn có cấu trúc sau: - Dịng chứa số nguyên n, cho biết số đỉnh đồ thị - n dòng tiếp theo, dòng chứa n số nguyên (hoặc số thực) ứng với phần tử ma trận kề Vd: đồ thị có hướng lưu tập tin DOTHI.TXT sau 0204 2031 0302 4120 3.2 Đọc xuất đồ thị Trong ngơn ngữ lập trình, để lưu trữ ma trận kề người ta thường sử dụng mảng hai chiều: #define MAX 100 int n; int a[MAX][MAX]; Tốt ta sử dụng struct class để cài đặt, có nhiều đồ thị, ta có g1, g2, … biến ứng với đồ thị: #define MAX 100 struct GRAPH { int n; int a[MAX][MAX]; }; Sau có cấu trúc liệu để lưu trữ, ta tiến hành đọc đồ thị từ file lên nhớ thực tác in hình console để kiểm thử void DocDoThi(GRAPH &g) { FILE* f; f = fopen("dothi.txt", "rt"); // co the truyen ten file thong qua bien cua ham if (f == NULL) { g.n = 0; return; } fscanf(f, "%d", &g.n); int i, j; for (i=0; i