1. Trang chủ
  2. » Giáo án - Bài giảng

BFS Tìm kiếm theo chiều rộng

35 161 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

• Tìm đường đi giữa hai đỉnh bất kỳ của đồ thị • Kiểm tra tính chất liên thông của đồ thị • Tìm cây khung của đồ thị • Tài liệu tham khảo • Chương trình mô phỏng các thuật toán...  Để g

Trang 1

Thuật toán BFS và ứng dụng

Nhóm 1:

Bạch Ngọc Hiệp Nguyễn Duy Long Phạm Quang Hưng

Trang 2

 Ý tưởng

 Các bước thực hiện – giải mã

 Ví dụ

 Đánh giá phương pháp.

• Ứng dụng thuật toán BFS vào 1 số bài toán.

• Tìm đường đi giữa hai đỉnh bất kỳ của đồ thị

• Kiểm tra tính chất liên thông của đồ thị

• Tìm cây khung của đồ thị

• Tài liệu tham khảo

• Chương trình mô phỏng các thuật toán

Trang 3

 Cho 1 đỉnh bắt đầu duyệt (A), lập lịch duyệt các đỉnh kề với A Cứ như vậy duyệt lần lượt theo thứ tự từ gần đến xa.

 Sử dụng cấu trúc Queue để nạp các đỉnh cần duyệt.

Trang 4

 Để ghi nhận trạng thái duyệt các đỉnh của đồ 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ử đã được duyệt.

 Nếu đỉnh i đã duyệt, chuaxet[i]=0; ngược lại nếu i chưa xét chuaxet[i]=1;

Trang 7

G I

Đang xét

Chưa xét Sắp được xét

Đã xét

Trang 8

G I

Đang xét

Chưa xét Sắp được xét

Trang 9

G I

Đang xét

Chưa xét Sắp được xét

Trang 10

G I

Đang xét

Chưa xét Sắp được xét

Trang 11

G I

Đang xét

Chưa xét Sắp được xét

Đã xét

D

C

Trang 12

G I

Đang xét

Chưa xét Sắp được xét

Đã xét

I

D

Trang 13

G I

Đang xét

Chưa xét Sắp được xét

Đã xét

G I

Trang 14

G I

Đang xét

Chưa xét Sắp được xét

Trang 15

G I

Đang xét

Chưa xét Sắp được xét

Đã xét

F E

Trang 16

G I

Đang xét

Chưa xét Sắp được xét

Trang 17

Đơn giản, trực quan, dễ cài đặt Để kiểm tra hai đỉnh có kề nhau hay không chỉ cần xem vị trí đó là 0 hay 1.

Lãng phí bộ nhớ do dùng ma trận n*n Khi xét 1 đỉnh bất kỳ thì cần kiểm tra nó với tất cả các đỉnh còn lại, nếu là đỉnh cô lập sẽ tốn thời gian.

+ Danh sách cạnh:

Nếu đồ thị thưa, sẽ tiết kiệm không gian lưu trữ Khi cần xét tất cả các cạnh của đồ thị, thời gian thực hiện sẽ nhanh hơn ma trận kề.

Khi cần xét tất cả các đỉnh kề với một đỉnh bất kỳ, ta phải xét tất cả các cạnh, lọc ra cạnh cần xét Dẫn đến việc tốn thời gian khi đồ thị có nhiều cạnh + Danh sách kề:

Duyệt đồ thị nhanh chóng hơn 2 cách trên.

Yếu hơn ma trận kề trong việc xét 2 cạnh có nối với nhau hay không Vì phải duyệt toàn bộ danh sách kề của một đỉnh.

Trang 18

Kiểm tra tính chất liên thông của đồ thị

Tìm đường đi giữa hai đỉnh bất kỳ của đồ thị,

Tìm cây khung của đồ thị

Trang 20

Đồ thị liên thông VD:

Trang 21

Đồ thị không liên thông

Trang 23

 Phương pháp:

 Để xác định tính liên thông của đồ thị Ta sử dụng lại mảng chuaxet[] từ thuật toán BFS();

 Nếu 1 phần tử trong mảng chuaxet[] có giá trị 1 tức là có đỉnh chưa được xét thì đồ thị không liên thông,

 Ngược lại nếu tất cả các đỉnh đã được đánh dấu đã xét thì đồ thị liên thông.

Trang 25

Bài Toán: Cho đồ thị G=(V,E)

Trang 28

printf( " -> %d" ,f);}

}

}

Trang 29

của G và thỏa mãn:

 H không có chu trình, liên thông và có n-1 cạnh.

 Giữa 2 đỉnh bất kỳ của H được nối với nhau bởi đúng 1 đường đi.

Trang 30

Đồ thị G Cây khung của G

Trang 31

 Cách thức xây dựng Cây khung sử dụng thuật toán BFS:

 Giả sử ta cần xây dựng 1 cây khung xuất phát từ đỉnh u nào đó

 Khi xét từ u đến được đỉnh v ( chuaxet[v]=1) thì ta kết nạp cạnh (u,v) vào cây khung

Trang 34

- vi.wikipedia.org.

- Giải thuật & lập trình_Lê Minh Hoàng.

- Cấu trúc dữ liệu và giải thuật_Đỗ Xuân Lôi.

Trang 35

Chúc các bạn học tập tốt!!!

Ngày đăng: 18/05/2020, 08:45

TỪ KHÓA LIÊN QUAN

w