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

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

81 3,4K 6

Đ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 81
Dung lượng 2,91 MB

Nội dung

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 ... Các giải thuật duyệt đồ thị Tìm kiếm theo chiề

Trang 1

PHÂN TÍCH ĐỘ PHỨC TẠP

CÁC GIẢI THUẬT ĐỒ THỊ

1 CHƯƠNG 4

Trang 2

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

Trang 3

Định nghĩa đồ thị3

Trang 4

Phân loại đồ thị4

Trang 5

Biểu diễn đồ thị trên máy tính5

Trang 6

Biểu diễn đồ thị trên máy tính6

Trang 7

Biểu diễn đồ thị trên máy tính7

Trang 8

Biểu diễn đồ thị trên máy tính8

Trang 9

Biểu diễn đồ thị trên máy tính9

Trang 10

Biểu diễn đồ thị trên máy tính10

Trang 11

Biểu diễn đồ thị trên máy tính11

Trang 12

Biểu diễn đồ thị trên máy tính12

Trang 13

Biểu diễn đồ thị trên máy tính13

Trang 14

Biểu diễn đồ thị trên máy tính14

Trang 15

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

Trang 16

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ị

u đã xét xong Color(u)=BLACK

Trang 17

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

(Breadth-First Search-BFS)

Ý 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

Trang 18

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

(Breadth-First Search-BFS)

Ý tưởng thuật toán

Dùng một hàng đợi để duy trì trật tự tìm kiếm

Trang 19

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

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 21

Q=B,C,D ,E

C B

E

F

C B

E

F

C B

E

F

Q=Rỗng

Trang 22

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

(Breadth-First Search-BFS)

Trang 24

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

Trang 25

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

(Depth-First Search-DFS)

Ý 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

Trang 26

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

5 then DFS-Visit (u)

Procedure DFS-Visit (u)

Trang 27

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

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 29

F

C B

E

F

Trang 30

F

C B

E

F

Trang 31

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

(Depth-First Search-DFS)

Trang 32

Ví dụ: DFS(A) (tiếp)

Trang 33

Phân tích thuật toán DFS

Nếu chưa tính thời gian thực thi DFS-VISIT, vòng lặp 1-3 và 5-7 có chi phí là O(V)

Trong một lần thực thi DFS-VISIT(v), vòng lặp 4-7 thực thi trong |Adj[v]| lần

Vì Σv V|Adj[v]|= O(E), nên tổng chi phí thực thi dòng 4-7 của DFS-VISIT là O(E).

Vậy thời gian chạy của DFS là O(V+E)

33

Trang 34

Phân tích thuật toán DFS

34

Trang 35

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

Cây bao trùm nhỏ nhất

Khái niệm

Thuật toán Kruskal

Thuật toán Prim

35

Trang 36

Khái niệm

Cho G là một đồ thị vô hướng, liên thông có trọng số, n đỉnh và H là một đường đi, chu trình, cây, đồ thị con,…của G

G là đồ thị liên thông nếu luôn tồn tại đường đi giữa mọi cặp điểm phân biệt của đồ thị

Trọng số của H, ký hiệu w(H), là tổng trọng số của tất cả các cạnh của nó: w(H) = ΣeHw(e)

Bài toán: Tìm một cây bao trùm T có trọng số nhỏ nhất (minimum spanning tree-MST) của G

36

Trang 37

THUẬT TOÁN KRUSKAL

Ý tưởng

Tại mỗi bước, thuật toán tìm một cạnh có trọng

số nhỏ nhất thêm vào tập cạnh của cây bao trùm sao cho không gây ra chu trình

Thuật toán dừng khi số cạnh của cây bằng số

đỉnh của đồ thị trừ 1

37

Trang 38

Giải thuật KRUSKAL

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

Trang 39

Giải thuật KRUSKAL

Trang 41

Giả mã giải thuật KRUSKAL

Trang 42

Procedure KRUSCAL

1 A:=

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 43

Giải thuật

Kruskal

- Ví dụ

Cạnh xét Các cây trong rừng Chọn AB(3) {A},{B},{C},{D},{E},

{F},{G} ABAD(4) {A,B},{D} , {C},{E},

B

A

C D

4

6 9

4 5

9

8 8

Trang 44

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 45

Giải thuật KRUSKAL

1 Chọn cạnh (u,v) có trọng số ϕ(u,v) nhỏ nhất thêm

vào T

2 Nếu T đã đủ n-1 cạnh thì dừng;

3 Chọn cạnh (u,v) có ϕ(u,v) nhỏ nhất sao cho khi

thêm vào T thì T không có chu trình;

4 Quay lại 2.

Trang 46

Minh họa tư tưởng giải thuật

Kruscal

Chọn cạnh nhỏ nhất nối hai thành phần liên thông của T với nhau, Mỗi lần bớt đi một thành phần liên

thông

Trang 47

Giải thuật Kruskal-

Ví dụ

B

A

C D

9 12 9

8

11 9

Trang 48

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

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

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

Trang 49

Đặc điểm của giải thuật KRUSKAL

Trong quá trình xây dựng T có là cây không?

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

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 50

Đánh giá giải thuật KRUSKAL

Thời gian sắp xếp là O(E lgE)

Chi phí cho tất cả các lần lặp trong vòng lặp while không quá O(V lgE)

Do đó, tổng chi phí là

O (E lg E + V lg E) = O (E lg E)

Trang 51

THUẬT TOÁN PRIM

Thuật toán kết thúc khi tất cả các đỉnh của đồ thị

đã được chọn

Trang 52

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*/

V’:={s}, E’={} (rỗng); n’=1;

While n’ < n do

Begin

n’:=n’+1;

End;

Ghi chú: Để lập trình cần dùng một Cấu trúc đống cực tiểu

và một hàng đợi có ưu tiên

Trang 53

Giả mã Giải thuật PRIM

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 54

THUẬT TOÁN PRIM

Trang 55

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

B

A

C D

9 12 9

8

11 9

Bổ sung loại bỏ

cạnh đươc xét Bổ sung cạnh sung Bổ

đỉnh

A AB,AC,AD,AF AB B

Trang 56

Giải thuật PRIM (tiếp)

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

B

A

C D

9 12

9

8

11 9

Trang 57

THUẬT TOÁN PRIM

Lưu ý

Đối với mỗi đỉnh v, key[v] là trọng số nhỏ nhất của cạnh nối v với một đỉnh trong cây đang xây dựng

Ký hiệu π[v] biểu diễn cha của v trong cây đang xây dựng

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 58

THUẬT TOÁN PRIM

Tổng thời gian cho tất cả các lần gọi MIN trong vòng lặp while là O(V lg V)

EXTRACT- Chi phí cho tất cả các lần lặp của vòng lặp for

8-11 trong vòng lặp while là O(E lg V)

Do đó, tổng chi phí là

O(V lg V + E lg V) = O(E lg V)

Trang 59

Giải thuật trên đồ thị có hướng Tìm đường đi ngắn nhất

Các khái niệm

Thuật giải Dijkstra

Thuật giải Floyd-Warshall

Trang 60

Các khái niệm

Trang 63

Tìm đường đi ngắn nhất

Bài toánTìm các đường đi ngắn nhất từmột đỉnh s đến mọi đỉnh khác trong một đồthịcótrọng số

Trang 64

Giải thuật DIJSKTRA

Trang 65

Giải thuật DIJSKTRA

Trang 69

Tổng chi phí EXTRACT-MIN làO(VlgV)

Mỗi u được đưa vào S đúng một lần, mỗi cạnh

kề trong Adj[u] được kiểm tra đúng một lần, số lần kiểm tra tất cả các cạnh kề như vậy là |E|

Thời gian xử lý của RELAX là O(1)

Vậy tổng chi phí là O(V2+E)

Trang 70

Giải thuật DIJSKTRA

Tổ chức dữ liệu

Với mỗi u V(G), đặt L(u) là độ dài đường đi ngắn nhất từ s đến u, Pre(u) là đỉnh đứng trước đỉnh u trên đường đi ngắn nhất từ s đến u.

Gọi S là tập các đỉnh u đã được tính xong giá trị hàm

L(u);

Gọi Q là hàng đợi có ưu tiên gồm các đỉnh chưa tính xong L(u);

Trang 71

Giải thuật DIJSKTRA- ngôn ngữ tự nhiên

1 {Khởi tạo}

Với mọi vV(G) đặt L(v):= +, Pre(u)=Null ; L(s):=0; Q:= {} (rỗng)

2 {Lặp: Mỗi bước tính xong L(u) của một đỉnh u}

2.1 Nếu mọi đỉnh của G đã nằm trong Q thì dừng.

2.2 Chọn đỉnh u có L(u) nhỏ nhất, chưa nằm trong S bổ sung vào S

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 72

Giả mã giải thuật DIJSKTRA

Giả mã- Khởi tạo

Trang 73

Giải thuật DIJSKTRA

Q là hàng đợi có ưu tiên với tiêu chuẩn Disk(u) nhỏ nhất;

ExtrackMin(Q) là thủ tục lấy phần tử có giá trị hàm Disk(u) nhỏ nhất khỏi Q

Trang 74

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

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

9 4 5

8

3 9

Trang 75

Mô tả từng bước

B

A

C D

9 4 5

8

3 9

Trang 76

THUẬT TOÁN

FLOYD-WARSHALL

Ý tưởng: Gọi P là đường đi ngắn nhất từ i đến j qua k đỉnh trung gian {1, 2,…, k-1, k} trong đồ thị G thì

Nếu đỉnh k P thì P cóthể được chia làm 2 đường

đi ngắn nhất p1từ i đến k và P 2 từ k đến j đều đi qua k-1 đỉnh trung gian {1, 2, …, k-1}

Ngược lại P là đường đi ngắn nhất từ i đến j chỉ qua k-1 đỉnh{1, 2, …, k-1}

Trang 77

THUẬT TOÁN

FLOYD-WARSHALL

Ý tưởng: Gọi P là đường đi ngắn nhất từ i đến j qua k đỉnh trung gian {1, 2,…, k-1, k} trong đồ thị G thì

Nếu đỉnh k P thì P cóthể được chia làm 2 đường

đi ngắn nhất p1từ i đến k và P 2 từ k đến j đều đi qua k-1 đỉnh trung gian {1, 2, …, k-1}

Ngược lại P là đường đi ngắn nhất từ i đến j chỉ qua k-1 đỉnh{1, 2, …, k-1}

Trang 78

THUẬT TOÁN WARSHALL

Trang 79

THUẬT TOÁN WARSHALL

Trang 80

THUẬT TOÁN WARSHALL

Trang 81

FLOYD-Đọc thêm

Thomas H Cormen, Charles E Leiserson, Ronald D Rivest Introduction to Algorithms

Elementary Graph Algorithms

Minimum Spanning Trees

Single-Source Shortest Paths

All-Pairs Shortest Paths

Nguyễn Mạnh Tường

Các thuật toán trên đồ thị

Ngày đăng: 25/07/2014, 16:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w