Bài giảng Toán rời rạc 2 - Tìm kiếm trên đồ thị

52 232 0
Bài giảng Toán rời rạc 2 - Tìm kiếm trên đồ thị

Đ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

Bài giảng Toán rời rạc 2 - Tìm kiếm trên đồ thị cung cấp cho người học các kiến thức: Thuật toán tìm kiếm theo chiều sâu trên đồ thị, thuật toán tìm kiếm theo chiều rộng trên đồ thị, ứng dụng của thuật toán tìm kiếm theo chiều sâu, ứng dụng của thuật toán tìm kiếm theo chiều rộng. Mời các bạn cùng tham khảo.

TÌM KIẾM TRÊN ĐỒ THỊ Tốn rời rạc Nội dung • • • • Thuật tốn tìm kiếm theo chiều sâu đồ thị Thuật tốn tìm kiếm theo chiều rộng đồ thị Ứng dụng thuật toán tìm kiếm theo chiều sâu Ứng dụng thuật tốn tìm kiếm theo chiều rộng Thuật tốn tìm kiếm theo chiều sâu (Depth First Search) DFS Tư tưởng • Trong trình tìm kiếm, ưu tiên “chiều sâu” “chiều rộng” – Đi xuống sâu trước quay lại • Bắt đầu đỉnh v0 đó, chọn đỉnh u kề với v0 lấy làm đỉnh duyệt – Cách duyệt thực tương tự đỉnh v0 với đỉnh bắt đầu u • Để kiểm tra việc duyệt đỉnh lần, sử dụng mảng chuaxet[] gồm n phần tử (tương ứng với n đỉnh): – Nếu đỉnh thứ u duyệt, phần tử tương ứng mảng chuaxet[u] có giá trị FALSE – Ngược lại, đỉnh chưa duyệt, phần tử tương ứng mảng có giá trị TRUE Biểu diễn thuật tốn DFS • DFS(u) mơ tả thủ tục đệ qui sau: Thuật toán DFS (u): //u đỉnh bắt đầu duyệt Begin ; //Duyệt đỉnh u chuaxet[u] := FALSE; //Xác nhận đỉnh u duyệt for each v  Ke(u) //Lấy đỉnh v Ke(u) If (chuaxet[v] ) then //Nếu đỉnh v chưa duyệt DFS(v); //Duyệt theo chiều sâu bắt từ đỉnh v EndIf; EndFor; End Thuật toán DFS(u) dùng ngăn xếp (khử đệ qui) Độ phức tạp thuật tốn DFS • Độ phức tạp thuật toán DFS(u) phụ thuộc vào phương pháp biểu diễn đồ thị – Độ phức tạp thuật toán O(n2) trường hợp đồ thị biểu diễn dạng ma trận kề, với n số đỉnh đồ thị – Độ phức tạp thuật toán O(n.m) trường hợp đồ thị biểu diễn dạng danh sách cạnh, với n số đỉnh đồ thị, m số cạnh đồ thị – Độ phức tạp thuật toán O(max(n, m)) trường hợp đồ thị biểu diễn dạng danh sách kề, với n số đỉnh đồ thị, m số cạnh đồ thị Kiểm nghiệm thuật toán DFS (1/3) • Ví dụ 1: Cho đồ thị gồm 13 đỉnh hình vẽ Hãy kiểm nghiệm thuật tốn DFS(1) Kiểm nghiệm thuật toán DFS (2/3) Kiểm nghiệm thuật tốn DFS (3/3) 10 Cài đặt thuật tốn • Thủ tục Read-Data(): Đọc ma trận kề biểu diễn đồ thị file dothi.in • Thủ tục ReInit(): Khởi tạo lại giá trị cho mảng chuaxet[] • Thủ tục DFS(u): Thuật tốn DFS bắt đầu đỉnh u • Thủ tục BFS(u): Thuật toán BFS bắt đầu đỉnh u • Hàm Strong-Conective(): Kiểm tra tính liên thơng mạnh đồ thị Xem code minh họa 38 Duyệt đỉnh trụ • Phát biểu tốn – Cho đồ thị vô hướng liên thông G = Đỉnh uV gọi trụ loại bỏ đỉnh u với cạnh nối với u làm tăng thành phần liên thông đồ thị – Cho đồ thị vô hướng liên thơng G = , tìm đỉnh trụ G? • Mơ tả thuật tốn – Trong DFS() BFS(), thiết lập giá trị chuaxet[u] = False – Quá trình duyệt thực đỉnh vu • Nếu DFS(v) = V\{u} BFS(v) = V\{u}: – Đồ thị nhận có thành phần liên thông – Kết luận v không trụ • Nếu DFS(v)  V\{u} BFS(v)  V\{u}: – Khi v trụ số thành phần liên thông đồ thị tăng lên 39 Thuật toán duyệt đỉnh trụ đồ thị 40 Kiểm nghiệm thuật tốn • Xác định đồ thị vô hướng G= biểu diễn dạng ma trận kề bên có đỉnh trụ nào? 41 Kiểm nghiệm thuật toán duyệt đỉnh trụ đồ thị 42 Cài đặt thuật tốn • Thủ tục Read-Data(): Đọc ma trận kề biểu diễn đồ thị file dothi.in • Thủ tục ReInit(): Khởi tạo lại giá trị cho mảng chuaxet[] • Thủ tục DFS(u): Thuật tốn DFS bắt đầu đỉnh u • Thủ tục BFS(u): Thuật tốn BFS bắt đầu đỉnh u Xem code minh họa 43 Duyệt cạnh cầu • Phát biểu tốn – Cho đồ thị vô hướng G = Cạnh eE gọi cầu loại bỏ e làm tăng thành phần liên thông đồ thị – Cho trước đồ thị vơ hướng liên thơng G = , tìm tất cạnh cầu đồ thị • Mơ tả thuật toán – Đối với đồ thị biểu diễn dạng ma trận kề: • Loại bỏ cạnh e=(u,v)E khỏi đồ thị ta thực cách cho phần tử A[u][v]=0 A[v][u]=0 – Đối với đồ thị biểu diễn dạng danh sách kề: • Danh sách kề đỉnh u ta bớt đỉnh v, Ke(u) = Ke(u)\{v} • Danh sách kề đỉnh v ta bớt đỉnh u, Ke(v) = Ke(v)\{u} 44 Thuật toán duyệt cạnh cầu đồ thị 45 Kiểm nghiệm thuật tốn • Xác định đồ thị vơ hướng G= biểu diễn dạng ma trận kề bên có cạnh cầu nào? 46 Kiểm nghiệm thuật toán duyệt cạnh cầu đồ thị Kết luận: cạnh (3,5), (9,10) cầu 47 Cài đặt thuật toán • Thủ tục Read-Data(): Đọc ma trận kề biểu diễn đồ thị file dothi.in • Thủ tục ReInit(): Khởi tạo lại giá trị cho mảng chuaxet[] • Thủ tục DFS(u): Thuật tốn DFS bắt đầu đỉnh u • Thủ tục BFS(u): Thuật toán BFS bắt đầu đỉnh u Xem code minh họa 48 Duyệt thành phần liên thơng mạnh đồ thị • Mỗi thành phần liên thông mạnh đồ thị đồ thị G mà hai đỉnh đồ thị có đường • Bài tốn: – Liệt kê tất thành phần liên thông mạnh đồ thị có hướng G= 49 Bài tốn định chiều đồ thị (1/2) • Định nghĩa – Phép định chiều đồ thị vô hướng liên thông phép biến đổi đồ thị vô hướng liên thông thành đồ thị có hướng liên thơng mạnh – Đồ thị vơ hướng G = dịch chuyển thành đồ thị có hướng liên thơng mạnh cách định chiều cạnh vơ hướng thành cung có hướng gọi đồ thị định chiều 50 Bài toán định chiều đồ thị (2/2) • Định lý – Đồ thị vô hướng liên thông G = định chiều tất cạnh eE G khơng phải cầu • Bài tốn – Cho đồ thị vô hướng liên thông G = Hãy định chiều đồ thị G cho ta nhận đồ thị có hướng với thành phần liên thơng mạnh • Một số vấn đề cần quan tâm – Chứng minh đồ thị vơ hướng định chiều – Viết chương trình kiểm tra đồ thị vơ hướng có định chiều hay không? – Chỉ phép định chiều đồ thị vơ hướng 51 Bài tập • Làm tập từ – 10 Bài giảng Toán rời rạc 52 ... Thuật tốn tìm kiếm theo chiều sâu đồ thị Thuật tốn tìm kiếm theo chiều rộng đồ thị Ứng dụng thuật tốn tìm kiếm theo chiều sâu Ứng dụng thuật tốn tìm kiếm theo chiều rộng Thuật tốn tìm kiếm theo... từ s đến t 27 Tìm đường đỉnh đồ thị Dùng DFS 28 Tìm đường đỉnh đồ thị Dùng BFS 29 Tìm đường đỉnh đồ thị Ghi nhận đường 30 Kiểm nghiệm thuật tốn • Xác định đường từ đỉnh đến đỉnh 13 đồ thị biểu... mạnh đồ thị • Mỗi thành phần liên thông mạnh đồ thị đồ thị G mà hai đỉnh đồ thị có đường • Bài tốn: – Liệt kê tất thành phần liên thông mạnh đồ thị có hướng G= 49 Bài tốn định chiều đồ thị

Ngày đăng: 31/10/2020, 15:45

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan