1.3 Thuật toán tham lam
1.3.1 Thuật toán Prim
Thuật toán của Prim xây dựng một cây bao trùm tối thiểu T bằng cách mở rộng ra bên ngoài trong các liên kết được kết nối từ một số đ§nh.
Mt cnh v mt Đnh c thờm vo măi giai đoạn. Cạnh được thêm vào là phần có trọng số nhỏ nhất nối các đ§nh đã có trong T với các đ§nh khơng thuộc T, và đ§nh là điểm cuối của cạnh này chưa thuộc T.
Đầu vào: đồ thƒ G một đồ thƒ có trọng số liên thơng với n đ§nh. Thuật tốn:
- Chọn một đ§nh v của G và để T là đồ thƒ ch§ có đ§nh này. - Gọi V là tập hợp tất cả các đ§nh của G ngoại trừ v. - Lập lại với đến :
(2) có trọng số nhỏ nhất trong tất cả các cạnh nối T với một đ§nh trong V. Gọi w là điểm cuối của e đó là ở V.
o Thêm e và w vào các tập cạnh và đ§nh của T, và xóa w khỏi V. Đầu ra: Đồ thƒ T là cây bao trùm tối thiểu cho G.
Ví dụ: Mơ tả hoạt động của thuật tốn Prim trên đồ thƒ trong Hình 1.1, sử dụng đ§nh Minneapolis làm điểm bắt đầu.
Hình 1. 9 Ví dụ thuật tốn Prim
Sử dụng thuật tốn của Prim, chúng ta có thể lập bảng sau.
Đã thêm đỉnh Đã thêm cạnh Trọng số
0 Minneapolis
1 Chicago Min – Chi 355
2 Milwaukee Chi – Mil 74
3 St. Louis Chi – StL 262
4 Louisville StL – Lou 242
5 Cincinnati Lou – Cin 83
6 Nashville Lou – Nas 151
Hình 1. 10 Kết quả ví dụ thuật toán Prim