1. Trang chủ
  2. » Giáo án - Bài giảng

giải thuật lý thuyế đồ thị

37 311 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 449,5 KB

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

Nội dung

Cho G = (V,E) là đồ thị có tập các đỉnh V và tập các cạnh E. v là một đỉnh trong V va u là đỉnh kề của v, sao cho u cũng thuộc V. Khi đó ta dán nhãn cho tất cả các đỉnh của đồ thị là 0. Chọn một đỉnh v thuộc tập V để bắt đầu duyệt. Gán nhãn đỉnh v này la 1v đã được duyệt. Chọn đỉnh u trong tập V kề với đỉnh v mà nhãn là 0. Duyệt qua đỉnh u và gán nhãn u là 1. Tiếp tục quá trình duyệt đến khi tất cả các đỉnh đồ thị có nhãn là 1.

Trang 1

5.2 Tìm kiếm trên đồ thị 5.3 Cây bao trùm ngắn nhất 5.4 Sắp xếp tôpô

   

Trang 3

5.2 Tìm kiếm trên đồ thị

Tìm kiếm ưu tiên chiều sâu

Tìm kiếm ưu tiên chiều rộng

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

     

Trang 4

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

Trang 5

5       then DFS-Visit (u)  

Procedure DFS-Visit (u)

Trang 6

Hàm Push(v,Stack) đặt phần tử v vào đỉnh ngăn xếp Stack

Hàm Pop(Stack) lấy phần tử đửng ở đỉnh ngăn xếp ra

khỏi ngăn xếp

Trang 7

Đỉnh trắng Đỉnh

đen

A A B,C,D,E B,C,D,E,F A,B B C C,D,E,F A,B,C C E,F D,E,F

Trang 8

F

C B

E

F

C B

E

F

     

Trang 9

F

C B

E

F

     

Trang 10

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;

   

Trang 12

F

C B

E

F

C B

E

F

Q=Rỗng

     

Trang 14

chưa tính xong L(u);

     

Trang 15

Với mọi v Adj(u) {tính lại L(v)}

nếu L(v)> L(u)+W(u,v) thì đặt lại

L(v):= L(u)+W(u,v) ; Pre(v):=u;

Quay lại 2.1

     

Trang 16

Giả mã giải thuật DIJSKTRA

Giả mã- Khởi tạo

Trang 18

Ví dụ: Dùng giải thuật DIJSKTRA

Tìm đường đi ngắn nhất từ A tới tất cả

9 4 5

8

3 9

Trang 19

D E

9 4 5

8

3 9

Trang 20

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

Giải thuật Prim

Giải thuật Kruskal

Trang 21

Giải thuật Prim

Mô tả bằng ngôn ngữ tự nhiên

/*Khởi tạo: mọi đỉnh chưa xét*/

     

Trang 22

6 for each v in Adj(u) do

7 if v Q and Key(v) < w(u,v) then

8 Key(v):= w(u,v); Pre(v):=u;

Trang 23

9 12 9

8

11 9

Bổ sung loại bỏ

đỉnh

AAB,AC,AD,AF AB B

Trang 24

9 12

9

8

11 9

B

A

C D

9 12 9

8

11 9

B

A

C D

9 12 9

8

11 9

B

A

C D

9 12 9

8

11 9

B

A

C D

9 12 9

8

11 9

B

A

C D

9 12

9

8

11 9

     

Trang 25

Đặc trưng của giải thuật PRIM

Trong quá trình xây dựng , T luôn là một cây con của G Khi T chứa tất cả các

đỉnh của G, T trở thành cây bao trùm của G

     

Trang 26

Giải thuật KRUSKAL

Mô tả bằng ngôn ngữ tự nhiên

Trang 27

Giả mã giải thuật KRUSKAL

Procedure KRUSCAL

2. For each u in V(G) do Make-Set(u);

3. Sắp xếp các cạnh của E(G) theo trong số

không giảm w;

4. For each (u,v) in E(G)

5. if Find-Set(u)<> Find-Set(v) then

Trang 28

AD(4) {A,B},{D},{C},{E},{F}, {G} AD FG(4) {A,B,D}, {C},{E},{F},{G} FG BD(5) {A,B,D}, {C},{E},{F,G} CF(6) {A,B,D}, {C},{E},{F,G} CF AF(6) {A,B,D}, {E},{C,F,G} AF AC(7) {A,B,D,C,F,G}, {E} DG(8) {A,B,D,C,F,G}, {E} EG(8) {A,B,D,C,F,G}, {E} EG DC(9) {A,B,D,C,F,G,E} BE(9) {A,B,D,C,F,G,E}

B

A

C D

4 5

9

8 8

     

Trang 29

Giải thuật KRUSKAL: Ví dụ

     

 Trong quá trình xây dựng T luôn không có chu trình nên là một rừng

B

A

C D

4

6 9

4 5

9

8 8

Trang 30

Khi nào một cạnh (u,v) tạo thành một chu trình với các cạnh đã có trong T

?

Khi hai đầu mút u, v thuộc cùng một cây

của T

     

Trang 31

6.4 Sắp xếp tô pô

Bài toán: Cho một đồ thị có hướng, hãy xếp các đỉnh trên một đường thẳng sao cho các cạnh luôn hướng từ trái sang phải

B

A

C

F E

D

B

     

Trang 32

Giải thuật sắp xếp tôpô

Ngôn ngữ tự nhiên mô tả thuật toán tìm

sắp xếp tôpô của G=(V,E) như sau:

1 Nếu mọi đỉnh của G đều có bậc vào >0 thì

G không có sắp xếp tôpô.

2 Nếu v V(G) có bậc vào bằng 0 (không có

cạnh đi vào) thì nó đặt nó ở đầu danh

sách, xóa v và các cạnh xuất phát từ v khỏi G được G’ Tiếp tục làm như trên

với G’

     

Trang 33

B

F

C E

C

F

F

Trang 34

Tìm cây bao trùm theo chiều sâu

xong:

trong T thì bổ xung cạnh (v,u) và đỉnh u

vào T; thay v bằng u để tiếp tục xét đỉnh

u như với v;

nằm trong T thì đỉnh v đã được xét xong và quay lại xét đỉnh đứng trước v trong quá

trình tìm kiếm

Trang 35

F Không còn,quay lại C

C Không còn, quay lại D

E

F

G

Trang 36

F

G

Trang 37

Hết chương

Ngày đăng: 01/10/2017, 00:42

TỪ KHÓA LIÊN QUAN

w