Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
423,24 KB
Nội dung
Chương 2: Biểu diễn đồ thị Nội dung I Các cách biểu diễn đồ thị II Sự đẳng cấu đồ thị III Hướng dẫn cài đặt Chương – Biểu diễn đồ thị Lý thuyết đồ thị I Các cách biểu diễn đồ thị Các cách biểu diễn đồ thị Ma trận kề Danh sách cạnh Ma trận trọng số Danh sách cung Chương – Biểu diễn đồ thị Danh sách kề Ma trận liên thuộc Lý thuyết đồ thị I.1 Ma trận kề (đơn đồ thị vô hướng) Định nghĩa Đơn đồ thị G = (V,E) với tập đỉnh V = {0,…,n-1}, tập cạnh E = {e0,e1,…em-1} Ta gọi ma trận kề G A = {ai,j , i,j = 0,…,n-1}, với: ai, j ⎧ , if ( i , j ) ∉ E = ⎨ ⎩ 1, if ( i , j ) ∈ E Chương – Biểu diễn đồ thị 0 1 1 1 1 0 0 0 1 0 I.1 Ma trận kề (đơn đồ thị có hướng) Định nghĩa Giống đơn đồ thị có hướng E tập cung ai, j ⎧ , if ( i , j ) ∉ E = ⎨ ⎩ 1, if ( i , j ) ∈ E Chương – Biểu diễn đồ thị 0 0 0 1 0 0 0 0 0 I.1 Ma trận kề (Đa đồ thị) Định nghĩa E tập cạnh/cung Ai,j số cạnh nối đỉnh i đỉnh j Chương – Biểu diễn đồ thị 0 1 1 1 1 0 0 1 1 1 0 1 I.1 Ma trận kề (Đa đồ thị) Một số tính chất ma trận kề Ma trận kề đồ thị vô hướng đối xứng a[i,j] = a[j,i] Ngược lại, ma trận đối xứng (0,1), có đường chéo 0, bậc n tương ứng với đơn đồ thị vô hướng n đỉnh Nếu đồ thị vơ hướng: Tổng dịng thứ i = Tổng cột thứ i = deg(i) Nếu đồ thị có hướng: Tổng dịng i = deg+(i), Tổng cột i = deg -(i) Ưu điểm hạn chế ma trận kề? Chương – Biểu diễn đồ thị I.2 Ma trận trọng số (đơn đồ thị) Định nghĩa Đơn đồ thị G = (V,E) với tập đỉnh V = {0,…,n-1}, tập cạnh E = {e0,e1,…em-1} Ta gọi ma trận kề trọng số G • A = {ai,j , i,j = 0,…,n-1}, với: a i, j ⎧ b , if ( i , j ) ∉ E = ⎨ ⎩ c k , if ( i , j ) ∈ E Ck giá trị quy định trước (0, -1, ∞, -∞, ) Chương – Biểu diễn đồ thị 0 3 0 0 5 0 I.3 Danh sách cạnh Đối với đồ thị thưa n đỉnh, m cạnh (m < 6n) người ta thường dùng cách biểu diễn danh sách cạnh để tiết kiệm không gian lưu trữ Lưu cạnh e=(u, v) đồ thị danh sách Danh sách cài đặt mảng chiều danh sách liên kết Chương – Biểu diễn đồ thị Cạnh Đầu Đầu 0 1 4 I.3 Danh sách cạnh Cài đặt mảng chiều Cạnh Đầu Đầu 0 1 4 typde struct tagNode { Cài đặt danh sách liên kết int diemdau1, diemdau2; } Canh; Chương – Biểu diễn đồ thị 10 I.4 Danh sách kề Tương ứng với đỉnh v đồ thị, ta có tương ứng danh sách để lưu đỉnh kề với Danh sách: mảng chiều, danh sách liên kết Đỉnh V Các cạnh kề 1, 2, 0, 2, 0, 1, 3 2, 4, 0, 1, 3, 5 3, Cài đặt mảng: Ke[] = {1, 2, 4, 0, 2, 4, 0, 1, 3, 2, 4, 5, 0, 1, 3, 5, 3, } ViTri[] = {0, 3, 6, 9, 12, 16} Chương – Biểu diễn đồ thị 12 I.4 Danh sách kề Cài đặt danh sách kề liên kết Chương – Biểu diễn đồ thị 13 Đỉnh V Các cạnh kề 1, 2, 0, 2, 0, 1, 3 2, 4, 0, 1, 3, 5 3, I.4 Danh sách kề Thuật toán xây dựng danh sách kề liên kết # include # include const maxV = 99; typedef struct Node { int v; struct Node*next; }node; int j, x, y, m, n, v ; node *p, *ke[maxV]; Chương – Biểu diễn đồ thị 14 I.4 Danh sách kề Thuật toán xây dựng danh sách kề liên kết int main(int argc, char* argv[]) { coutm>>n; for(j=0;jnext = ke[x]; ke[x]=p; } } Chương – Biểu diễn đồ thị 15 I.4 Danh sách kề Ví dụ Chương – Biểu diễn đồ thị 16 Đỉnh V Các cạnh kề 1, 2, 0, 2, 0, 1, 3 2, 4, 0, 1, 3, 5 3, I.5 Ma trận liên thuộc (đồ thị vô hướng) Định nghĩa Đồ thị vô hướng G=(V, E) Tập đỉnh V={0, 1, 2, …, n1)} Tập cạnh E={e1, e2, …, em-1 } Ta gọi ma trận liên thuộc G B = {bi, j, i = 0, ,n-1, j = 0, m-1} Trong • bi,j = đỉnh i kề cạnh j • bi, j = đỉnh i không kề cạnh j Chương – Biểu diễn đồ thị 17 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 I.5 Ma trận liên thuộc (đồ thị vơ hướng) Tính chất Mỗi cột chứa hai số hai đầu cạnh tương ứng với đỉnh ứng với cột Cột ứng với khuyên chứa số Các cột ứng với cạnh lặp giống Nếu đồ thị khơng có khun tổng hàng i bậc đỉnh Chương – Biểu diễn đồ thị 18 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 I.5 Ma trận liên thuộc (đồ thị có hướng) Định nghĩa Đơn đồ thị có hướng G=(V, E) Tập đỉnh V={0, 1, 2, …, n-1)} Tập cung E={e1, e2, …, em-1 } Ta gọi ma trận liên thuộc G B = {bi, j, i = 0, ,n-1, j = 0, m-1} Trong • bi,j = đỉnh i đỉnh đầu cung j • bi,j = -1 đỉnh i đỉnh cuối cung j • bi, j = đỉnh i không đầu mút cung j Chương – Biểu diễn đồ thị 19 (1,2) (4,1) (1,3) (3,4) (2,4) 1 -1 0 -1 0 0 -1 -1 -1 I Các cách biểu diễn đồ thị ) n2 Đơn vị nhớ ) Dễ kiểm tra đ/k kề Các cách biểu diễn đồ thị Ma trận kề Danh sách cạnh Danh sách kề Ma trận liên thuộc ) 2m Đơn vị nhớ ) Đồ thị thưa ) Khó kiểm tra đ/k kề ) 2m+n Đơn vị nhớ ) Dễ dàng việc thêm bớt cạnh, đỉnh ) m*n Đơn vị nhớ ) Dễ dàng việc thêm bớt cạnh, đỉnh Chương – Biểu diễn đồ thị 20 20 Nội dung I Các cách biểu diễn đồ thị II Sự đẳng cấu đồ thị III Hướng dẫn cài đặt Chương – Biểu diễn đồ thị 21 Lý thuyết đồ thị II Sự đẳng cấu đồ thị Định nghĩa Các đồ thị đơn G1 = (V1,E1) G2 = (V2, E2) đẳng cấu có hàm song ánh : f : V1 Ỉ V2 cho ∀ đỉnh a & b kề G1 Ù f(a) & f(b) kề G2 Ỵ Tồn phép tương ứng – đỉnh hai đồ thị đồng thời đảm bảo quan hệ liền kề f(1) = a, f(2) = b f(3) = d, f(4) = b Chương – Biểu diễn đồ thị 22 II Sự đẳng cấu đồ thị Tính bất biến Hai đồ thị đẳng cấu có tính chất giống (số đỉnh, số cạnh, bậc đỉnh,…) Người ta gọi tính bất biến đồ thị đẳng cấu Chương – Biểu diễn đồ thị 23 II Sự đẳng cấu đồ thị Chứng minh đồ thị đẳng cấu Tìm ánh xạ f tương ứng – đỉnh So sánh ma trận liền kề tạo dựa ánh xạ f Chương – Biểu diễn đồ thị 24 Nội dung I Các cách biểu diễn đồ thị II Sự đẳng cấu đồ thị III Hướng dẫn cài đặt Chương – Biểu diễn đồ thị 25 Lý thuyết đồ thị III Hướng dẫn cài đặt Khai báo file Kết nối biến file với tên thực file đĩa (floppy or hard disk) Mở file, đóng file Đọc thơng tin từ file ghi thông tin vào file Để hiểu tốt danh sách kề liên kết cần tham khảo phần biến trỏ tài liệu lập trình Chương – Biểu diễn đồ thị 26