1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu và giải thuật (phần 17) pptx

10 298 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 239,57 KB

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

Nội dung

Duy ệ t theo chi ề u sâuThuật toán: - Chọn 1 đỉnh làm điểm bắt đầu - Bắt đầu duyệt từ đầu cho đến tận cùng của nhánh - Sau đó sẽ quay lại đoạn đường đã duyệt, và duyệt tiếp những đỉnh kề

Trang 1

Duyt theo chiu sâu

Thuật toán:

- Chọn 1 đỉnh làm điểm bắt đầu

- Bắt đầu duyệt từ đầu cho đến tận cùng của nhánh

- Sau đó sẽ quay lại đoạn đường đã duyệt, và duyệt tiếp những đỉnh kề chưa được duyệt

- Quá trình sẽ kết thúc khi quay lại đỉnh bắt đầu và tất cả các đỉnh đã được duyệt

- Trong quá trình duyệt, nếu 1 đỉnh sẽ rẽ qua nhiều hơn 1 đỉnh, thì ta chọn đỉnh có số hoặc chữ cái nhỏ hơn

Trang 2

Duyt theo chiu sâu

Bài tập: Duyệt đồ thị sau, bắt đầu từ đỉnh 2

Trang 3

Duyt theo chiu sâu

Giải thuật: Sử dụng đệ qui

void DFS (bool mark[][max], int trace[], int nodes, int u) { for (int v=0;v<nodes;v++)

{ if ((mark1[u][v] ==true) && (trace[v] ==0)

{ trace[v]=u;

DFS(mark,trace,nodes,v);

} }

}

Trang 4

Duyt theo chiu sâu

Nhận xét:

- Duyệt theo chiều sau của độ thì biểu diễn bằng

danh sách kề có độ phức tạp O(n+m) // n- Số đỉnh, m- Số cạnh

- Duyệt theo chiều sâu của đồ thị biểu diễn bằng ma trận kề có độ phức tạp O(n2)

- Duyệt theo chiều sâu thì đỉnh duyệt càng sớm thì càng kết thúc muộn

- Dùng một ngăn xếp lưu trữ các đỉnh đang duyệt để cải tiến thuật toán

Trang 5

Duyt theo chiu rng

Duyệt theo chiều rộng: Duyệt có tính chất “lan

rộng” Xét 1 đỉnh bắt đầu, và duyệt tất cả các đỉnh kề

với nó

Ví dụ:

A

B

D

H

C

E

G F

1

5

8 7

3

Thứ tự duyệt: A, B, C, D, E, H, F, G

Trang 6

Duyt theo chiu rng

Thuật toán:

- Chọn 1 đỉnh trong đồ thị để bắt đầu

- Từ đỉnh đầu tiên, đi hết tất cả các đỉnh liên thông với nó

- Tiếp tục xét với đỉnh thứ 2…

- Quá trình kết thúc khi duyệt xong tất cả các đỉnh

Trang 7

Duyt theo chiu rng

Bài tập: Duyệt đồ thị sau đây theo chiều rộng bắt

đầu từ đỉnh 4

Trang 8

Duyt theo chiu rng

Giải thuật:

void BFS (queue Q, int trace[], bool mark[][max], int start, int nodes)

Q.push(start);

trace[start]=-1;

Q.pop();

for ( int v=0;v<nodes;v++)

trace[v]=u;

} }

}while (!Q.empty());

}

Trang 9

Duyt theo chiu rng

Nhận xét:

- Duyệt theo chiều sâu và duyệt theo chiều rộng chỉ khác nha ở chỗ giải thuật DFS sử dụng Stack, và giải thuật BFS sử dụng Queue Do đó độ phức tạp của DFS và BFS là như nhau

- Duyệt theo chiều rộng thì đỉnh được xét càng sớm thì sẽ sớm duyệt xong

Trang 10

CÂY BAO TRÙM TI THIU

Minimum spanning tree

Ngày đăng: 09/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w