Mô tả
- Giống như Prim, thuật toán Kruskal cũng tìm cây khung nhỏ nhất nhưng không phụ thuộc vào điểm bắt đầu.
- Hình 1, đồ thị như sau:
Bước 1: lập bảng, liệt kê tăng dần theo trọng số của các cạnh.
Đỉnh U | Đỉnh V | Trọng số |
1 | 4 | 1 |
6 | 7 | 1 |
4 | 6 | 2 |
1 | 2 | 3 |
1 | 6 | 3 |
3 | 4 | 3 |
2 | 3 | 4 |
3 | 7 | 5 |
5 | 6 | 5 |
2 | 6 | 6 |
4 | 5 | 6 |
3 | 5 | 7 |
Bước 2: dựa vào thứ tự bảng trên để đánh giá cạnh đó có thuộc cây khung tối tiểu hay không. Một cạnh thõa điều kiện khi nó không góp phần tạo thành một chu trình với tất cả các cạnh đã tìm được.
1-4-1: Ta nhận thấy cạnh 1-4 không tạo ra một chu trình nào. Vì vậy, thêm 1-4 vào tập hợp 6-7-1: Ta nhận thấy cạnh 6-7 không tạo ra một chu trình nào. Vì vậy, thêm 6-7 vào tập hợp 4-6-2: Ta nhận thấy cạnh 4-6 không tạo ra một chu trình nào. Vì vậy, thêm 4-6 vào tập hợp 1-2-3: Ta nhận thấy cạnh 1-2 không tạo ra một chu trình nào. Vì vậy, thêm 1-2 vào tập hợp 1-6-3: Ta nhận thấy cạnh 1-6 tạo ra một chu trình. Không thêm vào tập hợp. 2-3-4: Ta nhận thấy cạnh 2-3 tạo ra một chu trình. Không thêm vào tập hợp. 3-7-5: Ta nhận thấy cạnh 3-7 tạo ra một chu trình. Không thêm vào tập hợp. 5-6-5: Ta nhận thấy cạnh 5-6 không tạo ra một chu trình nào. Vì vậy, thêm 5-6 vào tập hợp CÂY BAO TRÙM THU ĐƯỢC, Hình 10:Cài đặt
– Bước 1, khai báo các biến, ta sẽ không sử dụng ma trận kề để lưu đồ thị, mà sẽ sử dụng danh sách các cạnh đã khai báo để lưu từng cạnh, vì vậy khi nhập dữ liệu vào, ta cần gán dữ liệu vào danh sách các cạnh: Các hàm cần thiết:- Hàm
find(v)
: tìm nút gốc của đỉnh v. - Hàm
Union(u, v)
: hàm nối 2 đỉnh lại với nhau. - Hàm
sort()
: dùng để sắp xếp các cạnh tăng dần theo trọng số
Mục lục
Chương trình học
-
Lý thuyết đồ thị
31
- Các khái niệm cơ bản về Lý thuyết Đồ thị #11087
- Biểu diễn đồ thị trên máy tính bằng Ma trận kề #11112
- Biểu diễn đồ thị trên máy tính bằng Danh sách cạnh #11117
- Biểu diễn đồ thị trên máy tính bằng Danh sách kề #11116
- Lab 1 - Chuyển Danh sách cạnh sang Ma trận kề #11138
- Lab 1.2 - Chuyển Danh sách cạnh sang Danh sách kề #11144
- Lab 1.3 - Chuyển Ma trận kề sang Danh sách cạnh #11151
- Lab 1.4 - Chuyển Ma trận kề sang Danh sách kề #11154
- Lab 1.5 - Chuyển Danh sách kề sang Ma trận kề #11158
- Lab 1.6 - Chuyển Danh sách kề sang Danh sách cạnh #11161
- Duyệt cây theo chiều sâu DFS (Depth First Search) #10963
- Duyệt cây theo chiều rộng BFS (Breadth First Search) #11081
- Thuật toán Tìm đường đi giữa 2 đỉnh của Đồ thị bằng C/C++ #11079
- Lab 2 - Duyệt cây theo chiều sâu DFS (Depth First Search) #11167
- Lab 2.2 - Tìm đường đi bằng cách duyệt cây theo chiều sâu DFS (Depth First Search) #11168
- Lab 3 - Duyệt cây theo chiều rộng BFS (Breadth First Search) #11169
- Lab 3.2 - Tìm đường đi bằng cách duyệt cây theo chiều rộng BFS (Breadth First Search) #11170
- Lab 4 - Tìm các thành phần liên thông trên đồ thị vô hướng #11179
- Tìm đường đi ngắn nhất bằng Thuật toán Dijkstra #11403
- Lab 5 - Tìm đường đi ngắn nhất từ đỉnh S đến tất cả các đỉnh còn lại trên đồ thị (sử dụng thuật toán Dijkstra) #11418
- Lab 5.1 - Tìm đường đi ngắn nhất từ đỉnh S đến đỉnh T trên đồ thị (sử dụng thuật toán Dijkstra) #11423
- Thuật toán Kruskal – Tìm cây khung (bao trùm) nhỏ nhất #11485
- Lab 6 - Tìm cây khung (bao trùm) cực tiểu nhỏ nhất (sử dụng thuật toán Kruskal) #11486
- Thuật toán Prim - Tìm cây khung (bao trùm) nhỏ nhất #11516
- Lab 6.1 - Tìm cây khung (bao trùm) cực tiểu nhỏ nhất (sử dụng thuật toán PRIM) #11515
- Chu trình và đường đi Euler #11519
- Lab 7 - Tìm chu trình Euler #11520
- Lab 7.1 - Tìm đường đi Euler #11528
- Bài toán Luồng cực đại #11532
- Lab 8 - Tìm luồng cực đại - sử dụng thuật toán Ford - Fulkerson #11533
- Lab 8.1 - Tìm luồng cực đại - sử dụng thuật toán Edmonds - Karp (Shortest path) #11534
- Tài liệu tham khảo 2
- Quy hoạch động 1
Các bài học
Bài học trước Bài học tiếp theo
Chương trình học
Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...Chương trình học
-
Lý thuyết đồ thị
31
- Các khái niệm cơ bản về Lý thuyết Đồ thị #11087
- Biểu diễn đồ thị trên máy tính bằng Ma trận kề #11112
- Biểu diễn đồ thị trên máy tính bằng Danh sách cạnh #11117
- Biểu diễn đồ thị trên máy tính bằng Danh sách kề #11116
- Lab 1 - Chuyển Danh sách cạnh sang Ma trận kề #11138
- Lab 1.2 - Chuyển Danh sách cạnh sang Danh sách kề #11144
- Lab 1.3 - Chuyển Ma trận kề sang Danh sách cạnh #11151
- Lab 1.4 - Chuyển Ma trận kề sang Danh sách kề #11154
- Lab 1.5 - Chuyển Danh sách kề sang Ma trận kề #11158
- Lab 1.6 - Chuyển Danh sách kề sang Danh sách cạnh #11161
- Duyệt cây theo chiều sâu DFS (Depth First Search) #10963
- Duyệt cây theo chiều rộng BFS (Breadth First Search) #11081
- Thuật toán Tìm đường đi giữa 2 đỉnh của Đồ thị bằng C/C++ #11079
- Lab 2 - Duyệt cây theo chiều sâu DFS (Depth First Search) #11167
- Lab 2.2 - Tìm đường đi bằng cách duyệt cây theo chiều sâu DFS (Depth First Search) #11168
- Lab 3 - Duyệt cây theo chiều rộng BFS (Breadth First Search) #11169
- Lab 3.2 - Tìm đường đi bằng cách duyệt cây theo chiều rộng BFS (Breadth First Search) #11170
- Lab 4 - Tìm các thành phần liên thông trên đồ thị vô hướng #11179
- Tìm đường đi ngắn nhất bằng Thuật toán Dijkstra #11403
- Lab 5 - Tìm đường đi ngắn nhất từ đỉnh S đến tất cả các đỉnh còn lại trên đồ thị (sử dụng thuật toán Dijkstra) #11418
- Lab 5.1 - Tìm đường đi ngắn nhất từ đỉnh S đến đỉnh T trên đồ thị (sử dụng thuật toán Dijkstra) #11423
- Thuật toán Kruskal – Tìm cây khung (bao trùm) nhỏ nhất #11485
- Lab 6 - Tìm cây khung (bao trùm) cực tiểu nhỏ nhất (sử dụng thuật toán Kruskal) #11486
- Thuật toán Prim - Tìm cây khung (bao trùm) nhỏ nhất #11516
- Lab 6.1 - Tìm cây khung (bao trùm) cực tiểu nhỏ nhất (sử dụng thuật toán PRIM) #11515
- Chu trình và đường đi Euler #11519
- Lab 7 - Tìm chu trình Euler #11520
- Lab 7.1 - Tìm đường đi Euler #11528
- Bài toán Luồng cực đại #11532
- Lab 8 - Tìm luồng cực đại - sử dụng thuật toán Ford - Fulkerson #11533
- Lab 8.1 - Tìm luồng cực đại - sử dụng thuật toán Edmonds - Karp (Shortest path) #11534
- Tài liệu tham khảo 2
- Quy hoạch động 1
Bài học trước Bài học tiếp theo
Menu Tiện ích
Menu Hướng dẫn Học tập
❤🧡💛💚💙💜 Học là phải THỰC HÀNH ❤🧡💛💚💙💜
Thực hiện các bước tuần tự theo nội dung Bài học nhé!