CẤU TRÚC DỮ LIỆU CHO ĐỒ THỊ ppt

10 627 2
CẤU TRÚC DỮ LIỆU CHO ĐỒ THỊ ppt

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

Thông tin tài liệu

C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị  Ma trận kề: - Biểu diễn đồ thị G=(V,E) bằng ma trận kề |V| với N hàng, N cột với các giá trị 0,1 |V|= 0 Nếu không tồn tại cạnh giữa v i v j 1 Nếu tồn tại cạnh giữa v i v j - Đồ thị có thị có trọng số: Giá trị của ma trận kề gồm trọng số của các cạnh C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị Ví dụ: Biểu diễn ma trận kề cho các đồ thị sau 1 2 3 4 5 1 0 1 1 0 0 2 1 0 1 1 0 3 1 1 0 0 1 4 0 1 0 0 1 5 0 0 1 1 0 1 2 3 4 5 1 0 1 1 0 0 2 1 0 0 0 0 3 0 1 0 0 0 4 0 0 1 0 1 5 0 1 0 1 0 C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị  Danh sách kề: - Biểu diễn đồ thị G=(V,E) bằng danh sách kề |V| là một mảng 1 chiều có size N, trong đó mỗi đỉnh tương đương 1 danh sách liên kết C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị Bài tập: 1. Biểu diễn danh sách kề cho đồ thị 1 2. Biểu diễn ma trận kề cho đồ thị sau C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị Cài đặt ma trận kề: #define max 100 struct Graph { int n; int a[max][max]; }; Định dạng dữ liệu: Dữ liệu vào ma trận kề được lưu ở file: 1. Dòng đầu tiên: số đỉnh của đồ thị 2. Mỗi dòng chứa n số nguyên ứng với giá trị trong ma trận kề C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị Đọc ma trận kề từ file: void Matranke (Graph &g) { char file[128]; printf(“Tap tin nguon (Dothi.txt)”); gets(file); if (strcmp(file,””)==0) strcpy(file,”Dothi.txt”); FILE *f; f = fopen(file,”rt”); C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị if ( f==NULL) { printf(“Khong mo duoc file”); exit(0); } fscanf(f,”%d”,&g.n); for (int i=0;i<g.n;i++) for (int j =0;j<g.n;j++) fscanf (f,”%d”,&g.a[i][j]); fclose(f); } THU THU Ậ Ậ T TO T TO Á Á N DUY N DUY Ệ Ệ T T Đ Đ Ồ Ồ TH TH Ị Ị T T ổ ổ ng quan ng quan  Duyệt hay tìm kiếm trên đồ thị: ghé qua mỗi đỉnh trong đồ thị một cách có hệ thống - Duyệt đồ thị không phụ thuộc vào hướng của cạnh  Có 2 cách duyệt đồ thị: - Duyệt theo chiều sâu ( Depth-first) - Duyệt theo chiều rộng (Breadth-first) Duy Duy ệ ệ t theo chi t theo chi ề ề u sâu u sâu Duyệt theo chiều sâu: Mỗi lần duyệt một đỉnh ta duyệt đến tận cùng mỗi nhánh rồi mới chuyển sang duyệt nhánh khác. Ví dụ: A B D H C E G F 1 2 3 4 5 7 6 8 Th ứ t ự duy ệ t: A, B, D, H, E, F, G, C . d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị Bài tập: 1. Biểu diễn danh sách kề cho đồ thị 1 2. Biểu diễn ma trận kề cho đồ thị sau C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị Cài. Đồ thị có thị có trọng số: Giá trị của ma trận kề gồm trọng số của các cạnh C C ấ ấ u tr u tr ú ú c d c d ữ ữ li li ệ ệ u cho đ u cho đ ồ ồ th th ị ị Ví dụ: Biểu diễn ma trận kề cho các đồ thị. quan  Duyệt hay tìm kiếm trên đồ thị: ghé qua mỗi đỉnh trong đồ thị một cách có hệ thống - Duyệt đồ thị không phụ thuộc vào hướng của cạnh  Có 2 cách duyệt đồ thị: - Duyệt theo chiều sâu (

Ngày đăng: 08/08/2014, 05:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan