Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
912,91 KB
Nội dung
Chủ Đề: Thuật tốn BFS ứng dụng Nhóm 1: Bạch Ngọc Hiệp Nguyễn Duy Long Phạm Quang Hưng Mục lục: • Thuật tốn BFS (Breadth First Search) Ý tưởng Các bước thực – giải mã Ví dụ Đánh giá phương pháp • Ứng dụng thuật tốn BFS vào số tốn • Tìm đường hai đỉnh đồ thị • Kiểm tra tính chất liên thơng đồ thị • Tìm khung đồ thị • Tài liệu tham khảo • Chương trình mơ thuật toán BFS (Breadth First Search) Ý tưởng: Cho đỉnh bắt đầu duyệt (A), lập lịch duyệt đỉnh kề với A Cứ duyệt theo thứ tự từ gần đến xa Sử dụng cấu trúc Queue để nạp đỉnh cần duyệt BFS Thực giải thuật Để ghi nhận trạng thái duyệt đỉnh đồ thị, ta sử dụng mảng chuaxet[] gồm n phần tử (tương ứng với n đỉnh) để xác định phần tử duyệt Nếu đỉnh i duyệt, chuaxet[i]=0; ngược lại i chưa xét chuaxet[i]=1; Sử dụng cấu trúc hàng đợi Queue để nạp đỉnh duyệt Thuật toán dừng lại hàng đợi rỗng BFS BFS Ví dụ minh họa: I G B Đang xét Sắp xét C A E Chưa xét Đã xét D K F Ví dụ minh họa: I G B Đang xét Sắp xét C A E Chưa xét Đã xét D K F Queue Ví dụ minh họa: I G B Đang xét Sắp xét C A E Chưa xét Đã xét D K F Queue B C D Ví dụ minh họa: I G B Đang xét Sắp xét C A E Chưa xét Đã xét D K F Queue C D I G Kiểm tra tính liên thơng đồ thị Đồ thị khơng liên thơng Kiểm tra tính liên thơng đồ thị Ý tưởng: Nếu đồ thị liên thơng số thành phần liên thơng Điều tương đương với phép duyệt theo thủ tục BFS() gọi đến lần Sau lần duyệt BFS() đỉnh chưa xét tức đồ thị khơng liên thơng Kiểm tra tính liên thơng đồ thị Phương pháp: Để xác định tính liên thơng đồ thị Ta sử dụng lại mảng chuaxet[] từ thuật toán BFS(); Nếu phần tử mảng chuaxet[] có giá trị tức có đỉnh chưa xét đồ thị khơng liên thông, Ngược lại tất đỉnh đánh dấu xét đồ thị liên thơng Kiểm tra tính liên thơng đồ thị Giải mã: void Connected(int V) BFS(V); //Gọi thuật toán duyệt BFS for(int i=0;i