1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng Lý thuyết đồ thị - Bài 6: Biểu diễn đồ thị trên máy tính

31 82 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 483,49 KB

Nội dung

Bài giảng Lý thuyết đồ thị - Bài 6: Biểu diễn đồ thị trên máy tính cung cấp cho người học các kiến thức: Các phương pháp biểu diễn đồ thị trên máy tính, sự đẳng cấu của đồ thị, minh họa về biểu diễn đồ thị trên máy tính,... Mời các bạn cùng tham khảo.

Bài Biểu diễn đồ thị máy tính 6.1 Các phương pháp biểu diễn đồ thị máy tính Biểu diễn đồ thị máy tính???  Tại phải biểu diễn đồ thị máy tính??? Lý thuyết đồ thị ngày ứng dụng rộng rãi  Để xây dựng ứng dụng đồ thị máy tính cần phải tìm cách biểu diễn đồ thị máy tính thích hợp  Máy tính khơng thể hiểu đồ thị dạng hình vẽ thông thường   Tiêu chuẩn để lựa chọn cách thức biểu diễn đồ thị máy tính? Cấu trúc liệu phải đơn giản, phù hợp với toán ứng dụng  Dễ biểu diễn, dễ cài đặt ứng dụng  Ma trận kề  Cho đồ thị G = , với V = {v1, v2, …, vn} Ma trận kề biểu diễn G ma trận vng A, kích thước nxn, xác định sau: Aij VD: 1, (v i , v j ) E 0, (v i , v j ) E 0 0  0 1 A= 0 1  1 0 Ma trận kề (tt) VD: A 1 1 1 1 0 0 1 0 1 0 0 0 0 Ma trận kề (tt)  Đặc điểm ma trận kề: Ma trận vuông, phần tử mang giá trị  Ma trận kề đồ thị vô hướng ma trận đối xứng   Xác định bậc dựa vào ma trận kề: Đối với đồ thị vô hướng: số lượng phần tử khác dịng (cột) bậc đỉnh tương ứng với dịng (cột)  Đối với đồ thị có hướng:   Số lượng phần tử khác dịng bán bậc đỉnh tương ứng với dịng  Số lượng phần tử khác cột bán bậc vào đỉnh tương ứng với cột Ma trận liên thuộc đỉnh – cạnh  Cho đồ thị vô hướng G = , với V = {v 1, v2, …, vn}, E = {e1, e2, …, em} Ma trận liên thuộc đỉnh – cạnh biểu diễn G ma trận A, kích thước nxm, xác định sau: Aij = 1, vi đỉnh đầu cạnh ej 0, vi không đỉnh đầu cạnh ej Ví dụ: Ma trận liên thuộc (tt)  VD: e1 e4 e3 e1 e2 e2 3 A= e7 e5 e6 1 6 e3 e4 e5 e6 e7 1 0 0 0 1  0 0 0  1 0 0 1 1  0 0 0 Ma trận liên thuộc (tt)  Cho đồ thị có hướng G = , với V = {v 1, v2, …, vn}, E = {e1, e2, …, em} Ma trận liên thuộc đỉnh – cạnh biểu diễn G ma trận A, kích thước nxm, xác định sau: Aij = −1 vi đỉnh đầu cạnh ej vi đỉnh cuối cạnh ej vi khơng đỉnh đầu, đỉnh cuối cạnh ej Ví dụ: Ma trận liên thuộc (tt)  Ví dụ: e1 e2 e3 e4 e5 A= e1 e2 e3 e4 −1 0 0 −1 0 e5 0  −1 0  −1 −1  10 Danh sách kề (tt)  Xác định bậc đỉnh dựa vào danh sách kề: Đối với đồ thị vô hướng: Số phần tử danh sách bậc đỉnh tương ứng  Đối với đồ thị có hướng:   Số phần tử danh sách bán bậc đỉnh tương ứng  Việc xác định bán bậc vào khó khăn nhiều: phải duyệt qua tất danh sách, số lần xuất đỉnh danh sách bán bậc vào đỉnh 17 6.2 Sự đẳng cấu đồ thị Đặt vấn đề  Xét hai đồ thị sau: chúng giống hay khác nhau??? 3 2 (2’) (3’) (4’) 4 (1’) 19 Sự đẳng cấu đồ thị  Cho đồ thị G = đồ thị G’ = Hai đồ thị G G’ nói đẳng cấu (đẳng hình, đồng cấu) với tồn song ánh: cho: f :V ∀u , v V , (u , v) E V' ( f (u ), f (v) ) E' (Hai đỉnh tạo thành cạnh G hai ảnh chúng tạo thành cạnh G’, ngược lại) Ký hiệu: G ≅ G' 20 Sự đẳng cấu đồ thị (tt)  VD: 21 Sự đẳng cấu đồ thị (tt)  Hãy tìm đồ thị đẳng cấu đồ thị sau: (G1) (G2) (G3) (G4) (G5) (G6) (G7) G1 ≅ G6 G3 ≅ G5 G4 ≅ G7 22 Sự đẳng cấu đồ thị (tt)  Các đồ thị sau có đẳng cấu khơng? Tại sao? g–B–2 f–D–4 i–A–1 j–E–5 h–C-3 23 6.3 Minh họa biểu diễn đồ thị máy tính Biểu diễn đồ thị ma trận kề  Định nghĩa đồ thị: Cấu trúc liệu biểu diễn đồ thị thiết kế sau: typedef struct DOTHI { int nV; // số đỉnh int nE; // số cạnh int type; // 0: vơ hướng, 1: có hướng int mtke[maxV][maxV]; // ma trận kề }; 25 Nhập đồ thị từ file   Sử dụng file text để lưu thông tin đồ thị Cấu trúc chung file text sau: DOTHI.INP Dòng chứa số thể loại đồ thị, số đỉnh số cạnh đồ thị Các dòng tiếp theo, dòng thể đỉnh đầu đỉnh cuối cạnh 12 23 14 15 24 45 25 26 Nhập đồ thị từ file (tt) int Nhap_Tu_File(char *filename, DOTHI &g) { Hàm mở tập tin có tên filename FILE *f = fopen(filename,”rt”); if (f == NULL) return 0; // Lỗi! Không mở file fscanf(f,”%d %d %d \n”,&g.type, &g.nV, &g.nE); int dd, dc; Nhập tham số type, nV, nE for (int i=1; i

Ngày đăng: 25/10/2020, 18:13

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN