Thiết kế và cài đặt thuật toán xây dựng cây khung theo chiều rộng BFS: 1.Thuật toán: 1.1 Tư tưởng của thuật toán: -Xuất phát từ đỉnh u, và khởi tạo tập các cạnh của cây khung F là rỗng
Trang 1Thiết kế và cài đặt thuật toán xây dựng cây khung theo chiều rộng BFS:
1.Thuật toán:
1.1 Tư tưởng của thuật toán:
-Xuất phát từ đỉnh u, và khởi tạo tập các cạnh của cây khung F là rỗng.
-Sử dụng một hàng đợi để lưu các đỉnh sẽ được duyệt trong tương lai.Thực hiện các thuật toán như làm với phương pháp duyệt theo chiều rộng.
- Khi đỉnh v nào được đưa vào trong hàng đợi,thì ta bổ sung cạnh (u,v) vào tập F.
Thuật toán được mô tả như sau:
Procedure stree_BFS(u);
(*tìm kiếm theo chiều rộng áp dụng tìm tập cạnh của cây khung F của đồ thị vô hướng liên thông G cho bởi danh sách kề*) Begin
Queue := Ø; Queue ← u;
Chuaxet[u]:=false;
While Queue ≠ Ø do
Begin
v← Queue ;
For W ke(v) do
If chuaxet[v] then
Begin
Queue ← v;
Chuaxet[u]:=false;
F:=F U (u,v);
End;
End;
End;
(* main program*) ;
BEGIN
For u thuoc V do
Chuaxet[u]:=true;
(*F la tap canh cua cay khung *)
F:= Ø;
(* root la mot dinh tuy y cua do thi*)
Stree_BFS(root);
END.
(độ phức tạp của thuật toán này : O( m +n ))
Ví dụ: Cho đồ thị sau:
Tìm cây khung của đồ thị sử dụng phương pháp tìm kiếm theo chiều rộng
Trang 2Bài làm :
- Đưa đỉnh 1 vào hàng đợi, khởi tạo tập F là rỗng Bắt đầu quá trình lặp
- Sau khi lấy đỉnh 1 từ hàng đợi, các đỉnh {2,3} đưa vào hàng đợi , dẫn đến các cạnh (1,2) và (1,3) sẽ đưa vào tập F
- Lấy đỉnh 2 từ hàng đợi, các đỉnh {4,5} đưa vào hàng đợi, dẫn đến các cạnh (2,4) và (2,5) được đưa vào tập F
- Lấy đỉnh 3 từ hàng đợi, các đỉnh {6,7} đưa vào hàng đợi, dẫn đến các cạnh (3,6) và (3,7) được đưa vào tập F
- Lấy 4 từ hàng đợi, đỉnh {8} được đưa vào hàng đợi, và cạnh (4,8) được đưa vào tập F
- Lấy 5 từ hàng đợi, đỉnh {9} được đưa vào hàng đợi, và cạnh (5,9) được đưa vào tập F
- Lấy 6 từ hàng đợi, đỉnh {10,11} được đưa vào hàng đợi, các cạnh (6,10) và (6,11) được đưa vào tập F
- Lấy các đỉnh 7, 8, 9, 10, 11 ra từ hàng đợi mà không bổ sung thêm cạnh nào vào tập F
Như vậy cây khung của đồ thị thu được từ thuật toán BFS bao gồm các cạnh sau:
3
4
2
8
6
9
Trang 33
4
2
8
6
9