STACK DFS

22 113 1
STACK DFS

Đ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 TỐN TÌM KIẾM CHIỀU SÂU DFS Nhóm 2: TRẦN MẠNH LINH NGUYỄN DUY HÙNG DỖN VĂN THIỀU BÀI TỐN TÌM KIẾM CHIỀU SÂU DFS – Đây thuật tốn tìm đỉnh cách duyệt theo chiều sâu – Xuất phát từ đỉnh khơng thể tiếp, sau lại đỉnh đầu Trong trình quay lại: + gặp đường khác khơng tiếp lặp lại + khơng tìm đường khác ngừng việc tìm kiếm – Sở dĩ thuật tốn tìm đường nhờ vào chế đánh dấu lưu đỉnh cha Quá trình đánh dấu khiến đỉnh khơng thể xét lần xem đường từ đỉnh Kết Thúc đến đỉnh Xuất phát dựa vào việc lưu đỉnh cha Cấu trúc liệu  Ma trận kề: giả sử G=(i,j)là đồ thị có số đỉnh n i,j thứ tự đỉnh từ 1đến n.Khi ta biểu diễn đồ thị ma trận vuông A[i][j] cấp n, đó:  • A[i][j]=1 đỉnh i nối với đỉnh j • A[i][j]=0 đỉnh i khơng nối với đỉnh j Danh sách cạnh: trường hợp đồ thị n cạnh, m cạnh, ta biểu diễn đồ thị dạng danh sách cạnh cách liệt kê tất cạnh đồ thị danh sách, phần tử cặp (s,u) tương ứng với cạnh đồ thị  Danh sách kề: cánh biểu diễn này, với đỉnh đồ thị ta cho tương ứng với danh sách đỉnh kề  Ví dụ: Ma trận kề: Danh sách cạnh: Danh sách kề Ý tưởng thuật tốn  Ta coi việc tìm kiếm chiều sâu khám phá ma trận với sợi thùng sơn để đánh dấu Với đỉnh cánh cổng đỉnh s, buộc vào s đánh dấu thăm  Ta  Bây ta theo cạnh (s,u)  Nếu cạnh (s,u) dẫn đến đỉnh u đã thăm , ta quay trở về s u mới, ta di chuyển tới u đánh dấu với đỉnh s đặt thành đỉnh s  Nếu  Cuối ta đến đỉnh mà tất cạnh kề với dẫn ta đến đỉnh thăm Khi đó, ta quay lui cách cuộn ngược cuộn quay đến trở lại đỉnh có cạnh chưa khám phá Lại tiếp tục quy trình  Đến tất đỉnh được thăm dừng lại (DFS dừng) Mơ tả thuật tốn Ma trận kề : (ma trận biểu diễn đường nối đỉnh) Ví dụ: tốn DFS với đỉnh có ma trận Đỉnh sau 0 1 Đỉnh Đỉnh Đỉnh 0 1 0 0 Có hai cấu trúc để giải tốn tìm kiếp chiều sâu DFS: - Cấu trúc đệ quy - Cấu trúc stack Bảng đánh dấu Bảng truy vết 1 1 0 1 Bắt đầu duyệt từ Đỉnh 1, đánh dấu Đỉnh Duyệt Đỉnh Thêm Đỉnh vào trước Đỉnh bảng truy vết Duyệt Đỉnh 2, thêm vào trước Đỉnh Đỉnh hết Quay lại duyệt tiếp từ Đỉnh Đỉnh hết Quay lại duyệt tiếp từ Đỉnh 1 Đỉnh chưa duyệt Duyệt nốt Đỉnh Tất đỉnh duyệt Thăm đỉnh 1 Thăm đỉnh 3 Thăm đỉnh 2 Đỉnh khơng có đỉnh kề chưa thăm Quay trở lại Đỉnh đỉnh kề chưa thăm Quay trở lại Thăm đỉnh 4 Đã thăm hết đỉnh thuật tốn dừng lại Và Trình tự duyệt 1324 Bài 1:Tìm đường hai đỉnh đồ thị Ý tưởng thuật toán: Thuật toán DFS cho phép xây dựng đỉnh,duyệt đỉnh có liên thơng với đỉnh đánh dấu đỉnh duyệt Vì muốn tìm đường gữa đỉnh bất kì(s->v) có cách: Cách 1: ta cần duyệt sau in đường mà có đầu cuối đỉnh s v theo yêu cầu Cách 2:ta duyệt duyệt tới đỉnh duyêt đỉnh v dừng lại Tìm đường hai đỉnh đồ thị Code: for (i=0;isố thành phần liên thông số lần gọi tới thủ tục DFS Kiểm tra tính chất liên thơng đồ thị Vd1: Đồ thị bên đồ thị liên thông Kiểm tra tính chất liên thơng đồ thị Vd2: Đồ thị H gồm thành phần liên thông H1, H2,H3 H H3 H H2 Kiểm tra tính chất liên thông đồ thị  Vd3 Đồ thị không liên thơng Kiểm tra tính chất liên thơng đồ thị  Để xác định số thành phần liên thông đồ thị,chúng ta sử dụng biến solt để ghi nhận đỉnh thành phần liên thông mảng chuaxet[] sau: o Nếu đỉnh I chưa duyệt,chuaxet[i] có giá trị 0; o Nếu đỉnh I chưa duyệt thuộc thành phần liên thông thứ j=solt, ta ghi nhận chuaxet[i]=solt o Các đỉnh thành phần liên thơng chúng có giá trị mảng chuaxet[] Kiểm tra tính chất liên thơng đồ thị Giải mã: void Connected(int V) DFS(V); //Gọi thuật toán duyệt DFS for(int i=0;isố thành phần liên thông số lần gọi tới thủ tục DFS Kiểm tra tính chất

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

Từ khóa liên quan

Mục lục

  • Slide 1

  • BÀI TOÁN TÌM KIẾM CHIỀU SÂU DFS

  • Cấu trúc dữ liệu

  • Ý tưởng thuật toán

  • Slide 5

  • Mô tả thuật toán

  • Slide 7

  • Thăm đỉnh 1

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

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

  • Bài toán 2: Kiểm tra Tính liên thông trong đồ thị vô hướng:

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

  • Slide 13

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

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

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

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

  • Bài toán 3: Tìm cây khung của đồ thị

  • Tìm kiếm cây khung

  • Tìm kiếm cây khung

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

Tài liệu liên quan