1. Trang chủ
  2. » Giáo Dục - Đào Tạo

toan roi rac 2 ngo xuan bach 5 spanning trees cuuduongthancong com

25 3 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 25
Dung lượng 897,5 KB

Nội dung

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 Cây Cây khung đồ thị Ngô Xuân Bách CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung Cây tính chất Cây khung đồ thị Bài toán khung nhỏ    CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Định nghĩa ví dụ Định nghĩa 1: Ta gọi đồ thị vơ hướng, liên thơng, khơng có chu trình Định nghĩa 2: Ta gọi rừng đồ thị vơ hướng, khơng có chu trình   o Như rừng đồ thị mà thành phần liên thơng Ví dụ: rừng có  (Phương ND, 2013) CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Các tính chất Định lý: Giả sử 𝑇 =< 𝑉, 𝐸 > đồ thị vô hướng 𝑛 đỉnh, khẳng định sau tương đương:  1) 2) 3) 4) 5) 6) 𝑇 𝑇 khơng có chu trình có 𝑛 − cạnh 𝑇 liên thơng có 𝑛 − cạnh 𝑇 liên thông cạnh cầu Giữa hai đỉnh 𝑇 nối với đường đơn 𝑇 khơng chứa chu trình thêm vào cạnh ta thu chu trình Chứng minh: Theo sơ đồ (1) ⇒ (2) ⇒ (3) ⇒ (4) ⇒ (5) ⇒ (6) ⇒ (1)  CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Nội dung Cây tính chất Cây khung đồ thị Bài toán khung nhỏ    CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Định nghĩa ví dụ Định nghĩa 3: Cho 𝐺 đồ thị vô hướng liên thông Ta gọi đồ thị 𝑇 𝐺 khung 𝐺 (Cây bao trùm) 𝑇 thoả mãn hai điều kiện:  o o 𝑇 Tập đỉnh 𝑇 tập đỉnh 𝐺 Ví dụ:  CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Xây dựng khung đồ thị  Bài tốn: Cho đồ thị vơ hướng 𝐺 =< 𝑉, 𝐸 > Hãy xây dựng khung đồ thị bắt đầu đỉnh 𝑢 ∈ 𝑉  Cách làm o o Sử dụng thuật toán duyệt DFS BFS Mỗi ta đến đỉnh 𝑣 tức (𝑐ℎ𝑢𝑎𝑥𝑒𝑡,𝑣- = 𝑡𝑟𝑢𝑒) từ đỉnh 𝑢 cạnh (𝑢, 𝑣) kết nạp vào khung CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Xây dựng khung đồ thị sử dụng thuật toán DFS (1/2) Thuật toán tạo khung từ đỉnh 𝒖 Tree-DFS(𝑢){ cℎ𝑢𝑎𝑥𝑒𝑡,𝑢- = 𝑓𝑎𝑙𝑠𝑒; //đánh dấu đỉnh 𝑢 duyệt for(𝑣 ∈ 𝐾𝑒(𝑢)){ if( 𝑐ℎ𝑢𝑎𝑥𝑒𝑡,𝑣-){ //nếu 𝑣 chưa duyệt 𝑇 = 𝑇 ∪ * 𝑢, 𝑣 +; //hợp cạnh (u, 𝑣) vào khung Tree-DFS(𝑣); //duyệt theo chiều sâu từ 𝑣 } } } CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Xây dựng khung đồ thị sử dụng thuật toán DFS (2/2) Thuật toán xây dựng khung Tree-Graph-DFS( ){ //Khởi tạo đỉnh chưa xét for(𝑢 ∈ 𝑉) cℎ𝑢𝑎𝑥𝑒𝑡,𝑢- = 𝑡𝑟𝑢𝑒; 𝑟𝑜𝑜𝑡 = < đỉ𝑛ℎ 𝑏ấ𝑡 𝑘ỳ 𝑐ủ𝑎 đồ 𝑡ℎị >; //Lấy đỉnh làm gốc 𝑇 = ∅; //Cây ban đầu chưa có cạnh Tree-DFS(root); //Gọi thuật tốn tạo khung từ đỉnh if( 𝑇 < 𝑛 − 1) ; else ; } CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật tốn (1/2)  Cho đồ thị vơ hướng biểu diễn ma trận kề hình bên Áp dụng thuật toán xây dựng khung đồ thị sử dụng DFS cho đồ thị đỉnh 𝑢 = (Phương ND, 2013) 10 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật toán (2/2) Bước 10 11 12 13 11 Ngăn xếp đỉnh theo thứ tự gọi Tree-DFS(u) 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 𝑻 𝑇 𝑇 𝑇 𝑇 =∅ = 𝑇 ∪ *(1,2)+ = 𝑇 ∪ *(2,3)+ = 𝑇 ∪ *(3,4)+ 𝑇 = 𝑇 ∪ *(3,5)+ 5, 𝑇 = 𝑇 ∪ *(5,6)+ 5, 6, 𝑇 = 𝑇 ∪ *(6,7)+ 5, 6, 7, 𝑇 = 𝑇 ∪ *(7,8)+ 5, 6, 7, 8, 𝑇 = 𝑇 ∪ *(8,9)+ 5, 6, 7, 8, 9, 10 𝑇 = 𝑇 ∪ *(9,10)+ 5, 6, 7, 8, 9, 10, 11 𝑇 = 𝑇 ∪ *(10,11)+ 5, 6, 7, 8, 9, 10, 11, 12 𝑇 = 𝑇 ∪ *(11,12)+ 5, 6, 7, 8, 9, 10, 11, 12, 13 𝑇 = 𝑇 ∪ *(12,13)+ Không thêm cạnh vào 𝑇 𝑇 = * 1,2 , 2,3 , 3,4 , 3,5 , 5,6 , 6,7 , 7,8 , 8,9 , 9,10 , 10,11 , (11,12, (12,13))+ CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Xây dựng khung đồ thị sử dụng thuật toán BFS Tree-BFS(𝑢){ Bước 1: Khởi tạo T = ∅; 𝑞𝑢𝑒𝑢𝑒 = ∅; p𝑢𝑠ℎ(𝑞𝑢𝑒𝑢𝑒, 𝑢); 𝑐ℎ𝑢𝑎𝑥𝑒𝑡,𝑢- = 𝑓𝑎𝑙𝑠𝑒; Bước 2: Lặp while(𝑞𝑢𝑒𝑢𝑒 ≠ ∅){ 𝑠 = p𝑜𝑝(𝑞𝑢𝑒𝑢𝑒); for(𝑡 ∈ 𝐾𝑒(𝑠)){ if( 𝑐ℎ𝑢𝑎𝑥𝑒𝑡,𝑡-){ p𝑢𝑠ℎ(𝑞𝑢𝑒𝑢𝑒, 𝑡); T = T ∪ * 𝑠, 𝑡 +; 𝑐ℎ𝑢𝑎𝑥𝑒𝑡,𝑡- = 𝑓𝑎𝑙𝑠𝑒; } } } Bước 3: Trả lại kết if( 𝑇 < 𝑛 − 1) ; else ; } 12 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật toán (1/2)  Cho đồ thị vô hướng biểu diễn ma trận kề hình bên Áp dụng thuật tốn xây dựng khung đồ thị sử dụng BFS cho đồ thị đỉnh 𝑢 = (Phương ND, 2013) 13 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật toán (2/2) Bước 10 11 12 13 14 Trạng thái hàng đợi 𝑻 𝑇=∅ 2, 3, 𝑇 = 𝑇 ∪ * 1,2 , 1,3 , (1,4)+ 3, 4, 𝑇 = 𝑇 ∪ *(3,5)+ 6, 7, 8, 𝑇 = 𝑇 ∪ * 5,6 , 5,7 , 5,8 , (5,9)+ 7, 8, 8, 9 10 𝑇 = 𝑇 ∪ *(9,10)+ 11, 12, 13 𝑇 = 𝑇 ∪ * 10,11 , 10,12 , (10,13)+ 12, 13 13 ∅ 𝑇 = * 1,2 , 1,3 , 1,4 , 3,5 , 5,6 , 5,7 , 5,8 , 5,9 , 9,10 , 10,11 , (10,12, (10,13))+ CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Nội dung    Cây tính chất Cây khung đồ thị Bài toán khung nhỏ 15 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Phát biểu toán    Cho 𝐺 =< 𝑉, 𝐸 > đồ thị vô hướng liên thông với tập đỉnh 𝑉 tập cạnh 𝐸 Mỗi cạnh 𝑒 đồ thị gán với số không âm 𝑐(𝑒) gọi độ dài cạnh Giả sử 𝐻 =< 𝑉, 𝑇 > khung đồ thị 𝐺 Ta gọi độ dài 𝑐(𝐻) khung 𝐻 tổng độ dài cạnh: 𝑐 𝐻 = 𝑒∈𝑇 𝑐(𝑒) Bài toán: Trong số khung đồ thị tìm khung có độ dài nhỏ 16 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Ví dụ  Bài tốn nối mạng máy tính o  Một mạng máy tính gồm 𝑛 máy tính đánh số từ 1, 2, , 𝑛 Biết chi phí nối máy 𝑖 với máy 𝑗 𝑐,𝑖, 𝑗-, 𝑖, 𝑗 = 1, 2, , 𝑛 Hãy tìm cách nối mạng cho chi phí nhỏ Bài toán xây dựng hệ thống cáp o 17 Giả sử ta muốn xây dựng hệ thống cáp điện thoại nối 𝑛 điểm mạng viễn thông cho điểm mạng có đường truyền tin tới điểm khác Biết chi phí xây dựng hệ thống cáp từ điểm 𝑖 đến điểm 𝑗 𝑐,𝑖, 𝑗- Hãy tìm cách xây dựng hệ thống mạng cáp cho chi phí nhỏ CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật toán Kruskal (1/2)  Thêm dần cạnh vào khung  Mỗi bước chọn cạnh có trọng số nhỏ chưa nằm khung o  Nếu việc thêm cạnh vào khung không tạo thành chu trình thêm cạnh vào Thuật tốn dừng lại o o 18 Cây khung có đủ (𝑛 − 1) cạnh, Hoặc khơng cịn cạnh chưa nằm khung CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật toán Kruskal (2/2) Kruskal( ){ Bước (khởi tạo): 𝑇 = ∅; //Ban đầu tập cạnh khung rỗng 𝑑 𝐻 = 0; //Ban đầu độ dài khung Bước (sắp xếp): ; Bước (lặp): while(|𝑇| < 𝑛 − && 𝐸 ≠ ∅ ){ 𝑒 = ; 𝐸 = 𝐸\*𝑒+; //Loại cạnh 𝑒 khỏi tập cạnh if (𝑇 ∪ *𝑒+ khơng tạo nên chu trình ){ T = 𝑇 ∪ *𝑒+; //Đưa 𝑒 vào khung 𝑑 𝐻 = 𝑑 𝐻 + 𝑑(𝑒); //cập nhật độ dài khung } } Bước (trả lại kết quả): if(|𝑇| < 𝑛 − 1) ; else return (T, d(H)); } 19 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật tốn  Áp dụng thuật tốn Kruskal tìm khung nhỏ cho đồ thị biểu diễn ma trận trọng số hình bên ? (Phương ND, 2013) 20 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật toán Prim (1/2)  Duy trì hai tập đỉnh 𝑉𝐻 (tập đỉnh khung) 𝑉 (tập đỉnh chưa nằm khung) o o  Mỗi bước chọn cạnh có trọng số nhỏ có đỉnh 𝑉𝐻 đỉnh 𝑉 o o  Ban đầu 𝑉𝐻 = 𝑠 , 𝑠 đỉnh đồ thị 𝑉 tập đỉnh đồ thị trừ 𝑠 Đưa cạnh vào khung Đưa đỉnh liền kề với cạnh từ 𝑉 sang 𝑉𝐻 Thuật tốn dừng lại o o 21 Cây khung có đủ (𝑛 − 1) cạnh, Hoặc khơng cịn đỉnh 𝑉 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Thuật toán Prim (2/2) Prim( s){ Bước (khởi tạo): 𝑉𝐻 = *𝑠+; //Ban đầu 𝑉𝐻 chứa 𝑠 𝑉 = 𝑉\*𝑠+; //Loại 𝑠 khỏi 𝑉 𝑇 = ∅; //Cây khung ban đầu chưa có cạnh 𝑑 𝐻 = 0; //Độ dài khung ban đầu Bước (lặp): while(V ≠ ∅ ){ 𝑒 = (𝑢, 𝑣); //Cạnh có độ dài nhỏ với 𝑢 ∈ 𝑉, v ∈ 𝑉𝐻 T = 𝑇 ∪ *𝑒+; //Đưa 𝑒 vào khung 𝑑 𝐻 = 𝑑 𝐻 + 𝑑(𝑒); //Cập nhật độ dài khung 𝑉𝐻 = 𝑉𝐻 ∪ *𝑢+; //Đưa 𝑢 vào 𝑉𝐻 V = V\ 𝑢 ; //Loại 𝑢 khỏi 𝑉 } Bước (trả lại kết quả): if(|𝑇| < 𝑛 − 1) ; else return (T, d(H)); } 22 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Kiểm nghiệm thuật tốn  Áp dụng thuật tốn Prim tìm khung nhỏ cho đồ thị biểu diễn ma trận trọng số hình bên ? (Phương ND, 2013) 23 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Tóm tắt   Khái niệm cây, tính chất Cây khung đồ thị o o  Mọi đồ thị vô hướng liên thơng có khung Xây dựng khung đồ thị sử dụng thuật toán BFS DFS Bài toán khung nhỏ o 24 Thuật toán Kruskal thuật toán Prim CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt Bài tập  Làm số tập giáo trình 25 CuuDuongThanCong.com http://www.ptit.edu.vn https://fb.com/tailieudientucntt ... 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,

Ngày đăng: 21/12/2022, 08:36

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

TÀI LIỆU LIÊN QUAN