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

DUYỆT THEO CHIỀU SÂU pptx

10 542 2

Đ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

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: 08/08/2014, 05:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w