Minimum spanning tree Minimum spanning tree Khái niệm: - Cây bao trùm tối thiểu MST (minimum spanning tree) của một đồ thị có trọng số là một tập hợp các cạnh kết nối tất cả các đỉnh sao cho tổng trọng số của các cạnh là nhỏ nhất - MST không nhất thiết là duy nhất trong một đồ thị Minimum spanning tree Minimum spanning tree Ví dụ: Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Giới thiệu: - Thuật toán do Edsger Dijkstra và R.C. Prim tìm ra vào năm 1950 một cách độc lập - Giải thuật Prim dùng để giải bài toán cây bao trùm tối thiểu. - Giải thuật này sử dụng chiến lược để giải một bài toán tối ưu hóa: giải thuật tham lam (greedy): Tại mỗi bước của giải thuật, ta phải chọn một trong một số khả năng lựa chọn. Chiến lược tham lam đề xuất việc lựa chọn khả năng tốt nhất tại lúc đó. Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Giới thiệu: - Một chiến lược như vậy thường không đảm bảo đem lại lời giải tối ưu toàn cục cho các bài toán. - Tuy nhiên, đối với bài toán MST, giải thuật tham lam có thể đem lại MST với tổng trọng số tối thiểu Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Giải thuật: - Chọn một đỉnh A bắt đầu trong đồ thị - Xây dựng một tập hợp Q bao gồm các đỉnh được nối từ đỉnh A - Chọn đỉnh tiếp theo trong tập Q sao có cạnh từ đỉnh A đền là nhỏ nhất - Tiếp tục thêm vào Q những đỉnh bắt đầu tử đỉnh thứ 2 - Vòng lặp tiếp tục cho đến khi tất cả các đỉnh được duyệt qua Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Ví dụ: L={a,b,c,d,e,f,g,h,i} // Tập các đỉnh chưa xét MST // Cây khung Q //Hàng đợi gồm các đỉnh được nối với các đỉnh trong cây khung Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Ví dụ: MST Q L R ỗ ng R ỗ ng a,b,c,d,e,f,g,h,i a b,h <ab=4,ah=8> c,d,e,f,g,i a,b 4 h,c <ah=8,bc=8> d,e,f,g,i Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Ví dụ: MST Q L a,b 4 h,c <ah=8,bc=8> d,e,f,g,i a,b,c 12 h,d,f,i <ah=8,cd=7,cf=4,ci=2> e,g Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Ví dụ: MST Q L a,b,c 12 h,d,f,i <ah=8,cd=7,cf=4,ci=2> e,g a,b,c,i 14 h,d,f,g <cd=7,cf=4,ig=6,ih=7> e Thu Thu ậ ậ t to t to á á n Dijkstra n Dijkstra - - Prim Prim Ví dụ: MST Q L a,b,c,i 14 h,d,f,g <cd=7,cf=4,ig=6,ih=7> e a,b,c,i,f 18 h,d,g,e <cd=7,ih=7,fe=10,fg=2> R ỗ ng . thiệu: - Thuật toán do Edsger Dijkstra và R.C. Prim tìm ra vào năm 1950 một cách độc lập - Giải thuật Prim dùng để giải bài toán cây bao trùm tối thiểu. - Giải thuật này sử dụng chiến lược để giải. thiểu. - Giải thuật này sử dụng chiến lược để giải một bài toán tối ưu hóa: giải thuật tham lam (greedy): Tại mỗi bước của giải thuật, ta phải chọn một trong một số khả năng lựa chọn. Chiến lược tham. Một chiến lược như vậy thường không đảm bảo đem lại lời giải tối ưu toàn cục cho các bài toán. - Tuy nhiên, đối với bài toán MST, giải thuật tham lam có thể đem lại MST với tổng trọng số tối