Tải bản đầy đủ (.ppt) (81 trang)

PHÂN TÍCH ĐỘ PHỨC TẠP CÁC GIẢI THUẬT ĐỒ THỊ doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.23 MB, 81 trang )

PHÂN TÍCH ĐỘ PHỨC TẠP
CÁC GIẢI THUẬT ĐỒ THỊ
1
CHƯƠNG 4
Nội dung

Định nghĩa đồ thị

Các giải thuật duyệt đồ thị

Giải thuật trên đồ thị có trọng số

Giải thuật trên đồ thị có hướng
2

Định nghĩa đồ thị
3
Phân loại đồ thị
4
Biểu diễn đồ thị trên máy tính
5
Biểu diễn đồ thị trên máy tính
6
Biểu diễn đồ thị trên máy tính
7
Biểu diễn đồ thị trên máy tính
8
Biểu diễn đồ thị trên máy tính
9
Biểu diễn đồ thị trên máy tính
10


Biểu diễn đồ thị trên máy tính
11
Biểu diễn đồ thị trên máy tính
12
Biểu diễn đồ thị trên máy tính
13
Biểu diễn đồ thị trên máy tính
14
Các giải thuật duyệt đồ thị

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

Tìm kiếm theo chiều sâu

Tìm cây bao trùm nhỏ nhất

Tìm đường đi ngắn nhất
15
Nội dung bài toán tìm kiếm

Cho đồ thị G=(V,E) và một đỉnh s. Xuất phát từ
đỉnh s, hãy duyệt qua tất cả các đỉnh của đồ thị
Kí hiệu:

V(G)=tập các đỉnh của G, E(G)=tập các cạnh của
G.

Hàm Color(u) chỉ trạng thái các đỉnh trong quá
trình tìm kiếm. Color(u) nhận một trong 3 giá trị
: WHITE, GRAY, BLACK. Lúc đầu,

Color(u)=WHITE nghĩa là chưa được xét, với
những đỉnh u bắt đầu xét, Color(u)=GRAY, khi
u đã xét xong Color(u)=BLACK
Tìm kiếm theo chiều rộng

Ý tưởng thuật toán

Bắt đầu tìm kiếm từ đỉnh s cho trước tuỳ ý

Tại thời điểm đã tìm thấy u, thuật toán tiếp tục
tìm kiếm tập tất cả các đỉnh kề với u

Thực hiện quá trình này cho các đỉnh còn lại
17
Tìm kiếm theo chiều rộng

Ý tưởng thuật toán

Dùng một hàng đợi để duy trì trật tự tìm kiếm
theo chiều rộng

Dùng các màu để không lặp lại các đỉnh tìm kiếm

Dùng một mảng để xác định đường đi ngắn nhất
từ s đến các đỉnh đã được tìm kiếm

Dùng một mảng để lưu trữ đỉnh đi trước của đỉnh
được tìm kiếm
18
Tìm kiếm theo chiều rộng


19
Procedure BFS(G,s)
1. for each u ∈V[G] do
2. color[u]:= WHITE;Prev(u)=Null;
color[s]:=GRAY;
3. Q:= {s}
4. While Q # ∅ do
5. u:= Head(Q); /*lấy u là phần tử đứng đầu
hàng đợi để xét*/
6. For each v ∈ Adj(u)
7. if color(v)= WHITE then
8. color(v):=GRAY; Prev(v):= u;
9. ENQUEUE(Q,v);/*đặt v vào cuối hàng đợi*/
10. DeQueue(Q,u);/* Gỡ u khỏi hàng đợi */
11. Color(u):= BLACK;
Ví dụ:
BFS(A)
A
D
C
B
E
F
Queue v
Adj(v)∩
Trắng
Đỉnh trắng Đỉnh
đen
A A B,C,D,E B,C,D,E,F A

B,C,D,E B F B
C,D,E C F F C
D,E,F D D
E,F E E
F F F
Rỗng
Tìm kiếm theo chiều rộng

Q=B,C,D
,E
A
D
C
B
E
F
A
D
C
B
E
F
Ví dụ:
BFS(A)
Q=C,D,E
A
D
C
B
E

F
Q=E,F
A
D
C
B
E
F
A
D
C
B
E
F
Q=D,E,F
Q=F
A
D
C
B
E
F
A
D
C
B
E
F
Q=Rỗng
Tìm kiếm theo chiều rộng


Phân tích thuật toán BFS

Tổng phí khởi tạo là O(V)

Mỗi thao tác trên hàng đợi là O(1), vì vậy tổng
thời gian cho thao tác trên hàng đợi là O(V)

Tổng thời gian chi phí cho quét các danh sách kề
là O(E)

Tổng thời gian chạy của BFS là O(V+E)
24
Tìm kiếm ưu tiên chiều sâu

Ý tưởng thuật toán

Bắt đầu tìm kiếm từ một đỉnh u nào đó

Chọn đỉnh kề v tùy ý của u để tiếp tục quá trình tìm
kiếm và lặp lại quá trình tìm kiếm này đối với v

Dùng các màu để không lặp lại các đỉnh tìm kiếm

Dùng các biến thời gian để xác định các thời điểm
phát hiện và hoàn thành tìm kiếm của một đỉnh

Dùng một mảng để lưu trữ đỉnh đi trước của đỉnh
được tìm kiếm

×