Slide bài giảng Toán rời rạc 2 – Ngô Xuân Bách tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về t...
Học viện Cơng nghệ Bưu Viễn thơng Khoa Cơng nghệ thơng tin Tốn rời rạc Biểu diễn đồ thị máy tính Ngơ Xn Bách Nội dung Biểu Biểu Biểu Biểu diễn diễn diễn diễn đồ đồ đồ đồ thị thị thị thị bằng bằng ma trận kề ma trận liên thuộc danh sách cạnh danh sách kề http://www.ptit.edu.vn Ma trận kề đồ thị vô hướng (1/2) Xét đồ thị vô hướng 𝐺 =< 𝑉, 𝐸 >, với tập đỉnh 𝑉 = *1,2, … , 𝑛+, tập cạnh 𝐸 = *𝑒1 , 𝑒2 , , 𝑒𝑚 + Ta gọi ma trận kề đồ thị 𝐺 ma trận 𝑛 × 𝑛 có phần tử hoặc theo qui định sau: o 𝐴 = *𝑎𝑖𝑗 : 𝑎𝑖𝑗 = 𝑛ế𝑢 (𝑖, 𝑗) ∈ 𝐸, 𝑎𝑖𝑗 = 𝑛ế𝑢 (𝑖, 𝑗) ∉ 𝐸; 𝑖, 𝑗 = 1, 2, , 𝑛+ (Phương ND, 2013) http://www.ptit.edu.vn Ma trận kề đồ thị vô hướng (2/2) Xét đồ thị vô hướng 𝐺 =< 𝑉, 𝐸 >, với tập đỉnh 𝑉 = *1,2, … , 𝑛+, tập cạnh 𝐸 = *𝑒1 , 𝑒2 , , 𝑒𝑚 + Ta gọi ma trận kề đồ thị 𝐺 ma trận 𝑛 × 𝑛 có phần tử hoặc theo qui định sau: o 𝐴 = *𝑎𝑖𝑗 : 𝑎𝑖𝑗 = 𝑛ế𝑢 (𝑖, 𝑗) ∈ 𝐸, 𝑎𝑖𝑗 = 𝑛ế𝑢 (𝑖, 𝑗) ∉ 𝐸; 𝑖, 𝑗 = 1, 2, , 𝑛+ 1 (Phương ND, 2013) http://www.ptit.edu.vn Tính chất ma trận kề đồ thị vơ hướng Đối xứng qua đường chéo Tổng phần tử ma trận hai lần số cạnh o 𝑛 𝑖=1 𝑛 𝑗=1 𝑎𝑖𝑗 = 2|𝐸| Tổng phần tử hàng 𝑢 bậc đỉnh 𝑢 o 𝑛 𝑗=1 𝑎𝑢𝑗 = deg(𝑢) Tổng phần tử cột 𝑢 bậc đỉnh 𝑢 o 𝑛 𝑖=1 𝑎𝑖𝑢 = deg(𝑢) 𝑝 𝑎𝑖𝑗 Nếu ký hiệu (𝑖, 𝑗 = 1,2, … , 𝑛) phần tử ma 𝑝 trận 𝐴𝑝 = 𝐴 𝐴 𝐴 (𝑝 lần), 𝑎𝑖𝑗 cho ta số đường khác từ đỉnh 𝑖 đến đỉnh 𝑗 qua 𝑝 − đỉnh trung gian http://www.ptit.edu.vn Ma trận kề đồ thị có hướng (1/2) Định nghĩa hoàn toàn tương tự với đồ thị vô hướng o o Cần lưu ý tới hướng cạnh Ma trận kề đồ thị có hướng không đối xứng (Phương ND, 2013) http://www.ptit.edu.vn Ma trận kề đồ thị có hướng (2/2) Định nghĩa hồn tồn tương tự với đồ thị vơ hướng o o Cần lưu ý tới hướng cạnh Ma trận kề đồ thị có hướng khơng đối xứng (Phương ND, 2013) http://www.ptit.edu.vn Tính chất ma trận kề đồ thị có hướng Tổng phần tử ma trận số cạnh o 𝑛 𝑖=1 𝑛 𝑗=1 𝑎𝑖𝑗 = |𝐸| Tổng phần tử hàng 𝑢 bán bậc đỉnh 𝑢 o 𝑛 𝑗=1 𝑎𝑢𝑗 = 𝑑𝑒𝑔+ (𝑢) Tổng phần tử cột 𝑢 bán bậc vào đỉnh 𝑢 o 𝑛 𝑖=1 𝑎𝑖𝑢 = 𝑑𝑒𝑔− (𝑢) 𝑝 Nếu ký hiệu 𝑎𝑖𝑗 (𝑖, 𝑗 = 1,2, … , 𝑛) phần tử ma 𝑝 trận 𝐴𝑝 = 𝐴 𝐴 𝐴 (𝑝 lần), 𝑎𝑖𝑗 cho ta số đường khác từ đỉnh 𝑖 đến đỉnh 𝑗 qua 𝑝 − đỉnh trung gian http://www.ptit.edu.vn Ma trận trọng số Mỗi cạnh 𝑒 = (𝑢, 𝑣) đồ thị gán số 𝑐(𝑒) = 𝑐(𝑢, 𝑣) gọi trọng số cạnh 𝑒 o o Đồ thị trường hợp gọi đồ thị trọng số Ma trận trọng số 𝑐 = 𝑐,𝑖, 𝑗-, 𝑐,𝑖, 𝑗- = 𝑐(𝑖, 𝑗) (𝑖, 𝑗) ∈ 𝐸, 𝑐,𝑖, 𝑗- = 𝜃 (𝑖, 𝑗) ∉ 𝐸 𝜃 nhận giá trị: 0, ∞, −∞ tuỳ theo tình cụ thể thuật tốn (Phương ND, 2013) http://www.ptit.edu.vn Ưu & nhược điểm ma trận kề Ưu điểm o Đơn giản, dễ cài đặt máy tính o Dễ dàng kiểm tra hai đỉnh 𝑢, 𝑣 có kề với hay khơng Sử dụng mảng hai chiều để biểu diễn ma trận kề Đúng phép so sánh (𝑎,𝑢-,𝑣- ≠ 0?) Nhược điểm o o o 10 Lãng phí nhớ: số cạnh nhiều hay ta cần 𝑛2 đơn vị nhớ để biểu diễn Không thể biểu diễn với đồ thị có số đỉnh lớn Để xem xét đỉnh đỉnh 𝑢 có đỉnh kề cần 𝑛 phép so sánh kể đỉnh 𝑢 đỉnh cô lập đỉnh treo http://www.ptit.edu.vn Biểu diễn đồ thị trọng số danh sách cạnh Bổ sung thêm cột trọng số cạnh (Phương ND, 2013) 21 http://www.ptit.edu.vn Ưu & nhược điểm danh sách cạnh Ưu điểm o o Trong trường hợp đồ thị thưa (𝑚 < 6𝑛), biểu diễn danh sách cạnh tiết kiệm không gian nhớ Thuận lợi cho số thuật toán quan tâm đến cạnh đồ thị Nhược điểm o Khi cần duyệt đỉnh kề với đỉnh 𝑢 bắt buộc phải duyệt tất cạnh đồ thị 22 Điều làm cho thuật tốn có chi phí tính tốn cao http://www.ptit.edu.vn Khn dạng lưu trữ danh sách cạnh Dòng ghi lại số 𝑁, 𝑀 tương ứng với số đỉnh số cạnh đồ thị o Hai số viết cánh vài khoảng trống 𝑀 dòng kế tiếp, dòng ghi lại cạnh đồ thị o Đỉnh đầu đỉnh cuối cạnh viết cách vài khoảng trống (Phương ND, 2013) 23 http://www.ptit.edu.vn Cấu trúc liệu biểu diễn danh sách cạnh //Định nghĩa cạnh đồ thị typedef struct { int dau; int cuoi; int trongso; } Edge; //Danh sách cạnh biểu diễn mảng G Edge G[MAX]; 24 http://www.ptit.edu.vn Nội dung Biểu Biểu Biểu Biểu 25 diễn diễn diễn diễn đồ đồ đồ đồ thị thị thị thị bằng bằng ma trận kề ma trận liên thuộc danh sách cạnh danh sách kề http://www.ptit.edu.vn Danh sách kề Với đỉnh 𝑢 đồ thị lưu trữ danh sách đỉnh kề với mà ta ký hiệu 𝐾𝑒(𝑢) o 𝐾𝑒(𝑢) = * 𝑣 ∈ 𝑉: (𝑢, 𝑣) ∈ 𝐸+ (Phương ND, 2013) 26 http://www.ptit.edu.vn Ưu & nhược điểm danh sách kề Ưu điểm o o o Dễ dàng duyệt tất đỉnh danh sách kề Dễ dàng duyệt cạnh đồ thị danh sách kề Tối ưu phương pháp biểu diễn Nhược điểm o 27 Khó khăn cho người đọc có kỹ lập trình yếu http://www.ptit.edu.vn Biểu diễn danh sách kề dùng mảng Mảng chia thành 𝑛 đoạn o o Đoạn thứ 𝑖 mảng lưu trữ danh sách kề đỉnh thứ 𝑖 ∈ 𝑉 Để biết đoạn thuộc mảng phần tử đến phần tử ta sử dụng mảng khác dùng để lưu trữ vị trí phần tử bắt đầu kết thúc đoạn (Phương ND, 2013) 28 http://www.ptit.edu.vn Biểu diễn danh sách kề dùng danh sách liên kết Với đỉnh 𝑢 ∈ 𝑉, ta biểu diễn danh sách kề đỉnh danh sách liên kết 𝐿𝑖𝑠𝑡(𝑢) (Phương ND, 2013) 29 http://www.ptit.edu.vn Khn dạng lưu trữ danh sách kề Dịng ghi lại số đỉnh đồ thị 𝑁 dòng ghi lại danh sách kề đỉnh tương ứng theo khuôn dạng: o o Phần tử vị trí kết thúc đoạn, tiếp đến danh sách đỉnh danh sách kề Các phần tử ghi cách vài khoảng trống (Phương ND, 2013) 30 http://www.ptit.edu.vn Bài tập Trong buổi gặp mặt, số khách mời bắt tay với số khách mời khác Chứng minh tổng số lượt bắt tay tất khách mời số chẵn 31 http://www.ptit.edu.vn Bài tập Một đơn đồ thị vơ hướng với 𝑛 đỉnh có nhiều cạnh? 32 http://www.ptit.edu.vn Bài tập Hãy biểu diễn đồ thị vô hướng dạng: 1) 2) 3) Ma trận kề Danh sách cạnh Danh sách kề 33 http://www.ptit.edu.vn Bài tập Hãy biểu diễn đồ thị có hướng dạng: 1) 2) 3) Ma trận kề Danh sách cạnh Danh sách kề 34 http://www.ptit.edu.vn Bài tập Hãy biểu diễn đồ thị trọng số dạng: 1) 2) Ma trận kề Danh sách cạnh 2 4 35 http://www.ptit.edu.vn ...