Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
420,67 KB
Nội dung
ĐẠI HỌC TÔN ĐỨC THẮNG Giáo trình thực hành Lý thuyết đồ thị BẢN THẢO 3/1/2009 Bài tập thực hành lý thuyết đồ thị Khoa CNTT-TUD, ĐH Tôn Đức Thắng MỤC LỤC Chương 1: Biểu diễn đồ thị máy tính Chương 2: Liên thông thành phần liên thông Chương 3: Cây bao trùm 12 Chương 4: Thuật toán Prim 14 Chương 5: Cây bao trùm nhỏ & Thuật toán Kruskal 16 Chương 6: Tìm đường đồ thị 18 Chương 7: Tìm đường đồ thị - Thuật toán Dijkstra 20 Chương 8: Tìm đường đồ thị - Thuật toán Floyd 22 Bài tập thực hành lý thuyết đồ thị Khoa CNTT-TUD, ĐH Tôn Đức Thắng Chương 1: Biểu diễn đồ thị máy tính I NHẮC LẠI LÝ THUYẾT MA TRẬN KỀ (ADJACENCY MATRIX) đơn đồ thị có số đỉnh Không tính tổng quát, có Giả sử thể coi đỉnh đánh số Khi đó, ta biểu diễn đồ thị cấp n Trong đó: ma trận vuông - - Đối với đa đồ thị lưu trữ số cạnh nối đỉnh đỉnh Ví dụ Các tính chất ma trận kề Cho đồ thị G = (V, E) ma trận kề tương ứng A - Nếu G đồ thị vô hướng, thì: o A ma trận đối xứng o Tổng số hàng i = Tổng số cột i = Bậc đỉnh i - Nếu G đồ thị có hướng, o Tổng số hàng i = Bậc đỉnh i o Tổng số cột i = Bậc vào đỉnh i Ưu điểm: - Đơn giản, trực quan, dễ cài đặt - Dễ kiểm tra liền kề đỉnh phép so sánh Khuyết điểm: - Chi phí lưu trữ luôn cố định - Chi phí duyệt cạnh kề đỉnh i luôn cố định Bài tập thực hành lý thuyết đồ thị Khoa CNTT-TUD, ĐH Tôn Đức Thắng DANH SÁCH CẠNH (EDGE LIST) Trong trường hợp đồ thị có n đỉnh, m cạnh, ta biểu diễn đồ thị dạng danh sách cạnh cách liệt kê tất cạnh đồ thị danh sách, phần tử danh sách cặp tương ứng với cạnh đồ thị Danh sách cài đặt mảng danh sách liên kết Đối với đa đồ thị lưu trữ số cạnh nối đỉnh đỉnh Ví dụ Cài đặt danh sách cạnh mảng: Cài đặt danh sách cạnh danh sách liên kết: Các tính chất danh sách cạnh Ưu điểm: - Tiết kiệm chi phí lưu trữ trường hợp đồ thị thưa Khuyết điểm: - Chi phí duyệt cạnh kề đỉnh i lớn trường hợp đồ thị dày DANH SÁCH KỀ (ADJACENCY LIST) Để khắc phục nhược điểm phương pháp biểu diễn đồ thị ma trận kề danh sách cạnh, người ta đề xuất phương pháp biểu diễn đồ thị danh sách kề Trong cách biểu diễn này, với đỉnh v đồ thị, ta lưu trữ tương ứng với danh sách chứa đỉnh kề với Ví dụ Bài tập thực hành lý thuyết đồ thị Khoa CNTT-TUD, ĐH Tôn Đức Thắng Danh sách kề tương ứng Hoặc: Các tính chất danh sách kề Ưu điểm: - Tiết kiệm chi phí lưu trữ - Tiết kiệm chi phí duyệt đỉnh kề cạnh kề đỉnh Khuyết điểm: II - Cài đặt phức tạp - Chi phí kiểm tra hai đỉnh có kề hay không “yếu” ma trận kề THỰC HÀNH CÀI ĐẶT MA TRẬN KỀ Định dạng liệu Dữ liệu vào ma trận kề 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 ứng với phần tử ma trận kề Bài tập thực hành lý thuyết đồ thị Khoa CNTT-TUD, ĐH Tôn Đức Thắng Tổ chức liệu Để biểu diễn ma trận, ta dùng mảng hai chiều kiểu nguyên #define MAX 100 struct GRAPH { int n; int a[MAX][MAX]; }; Đọc ma trận kề từ tập tin vào mảng void ReadGraph(GRAPH &g, char *fn) { // mở file, không mở file báo lỗi thoát FILE * f = fopen(fn, “rt”); if (f == NULL) { exit(0); } // đọc giá trị đỉnh đồ thị vào biến n fscanf(f, “%d”, &g.n); // đọc giá trị ma trận a từ file int i, j; for (i=0; i