index of cnpmth02016slidepdf

17 8 0
index of cnpmth02016slidepdf

Đ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

được thăm rồi thì ta quay lại đỉnh cuối cùng vừa được thăm ( mà đỉnh này còn đỉnh w là lân cận của nó chưa được thăm) và phép tìm kiếm theo chiều sâu xuất phát từ w lại được thực hiện.[r]

(1)

Chương 5: Đồ thị 1 Các khái niệm

1.1 Định nghĩa đồ thị

Đồ thị G(V,E) bao gồm tập hữu hạn V đỉnh (hay nút) tập hữu hạn E cặp đỉnh mà ta gọi cung ( hay cạnh).

Ví dụ 1: Một mạng gồm máy tính kênh điện thoại nối máy tính đồ thị

Ví dụ 2: Một mạng gồm thành phố, thị xã đường nối thành phố, thị xã đồ thị. 1.2 Định nghĩa đồ thị vô hướng

(2)

* Nếu (v1, v2) cung tập E(G) v1 v2 gọi lân cận

Ví dụ 1,2 lân cân, 1,3 lân cận

* Một đường từ đỉnh u đến đỉnh v đồ thị dãy đỉnh

u=x0, x1, , xn-1, xn=v mà dãy cạnh (x0, x1), (x1, x2), , (xn-1, xn) cung thuộc E(G)

* Số lượng cung đường gọi độ dài đường Ví dụ đường từ đến có độ dài

* Đường đơn: Là đường mà đỉnh đó, trừ đỉnh đầu đỉnh cuối khác

* Một chu trình đường đơn mà đỉnh đầu đỉnh cuối trùng

(3)(4)(5)(6)(7)

3 Phép duyệt đồ thị

* Xét đồ thị vô hướng G(V,E) đỉnh v∈V Ta cần thăm tất đỉnh G mà “ với tới” từ đỉnh v ( nghĩa đồ thị liên thơng) Có cách duyệt đồ thị:

- Phép tìm kiếm theo chiều sâu ( Depth first search ) - Phép tìm kiếm theo chiều rộng (Breadth first search )

3.1 Phép tìm kiếm theo chiều sâu ( Depth first search )

Xét đồ thị vơ hướng Phép tìm kiếm theo chiều sâu thể sau: - Đỉnh xuất phát v thăm

- Tiếp theo ta thăm đỉnh w đỉnh chưa thăm lân cận v Phép tìm kiếm theo chiều sâu xuất phát từ w lại thực Trong trường hợp đỉnh u thăm mà đỉnh lân cận

(8)

Phép duyệt theo chiều sâu theo trình tự sau: v1 → v2 → v4 →v8 → v5 → v6 →v3 →v7 * Thủ tục phép duyệt theo chiều sâu sau:

Cho đồ thị G(V,E) vơ hướng có n đỉnh véc tơ Visited(n) gồm n phần tử, ban đầu véc tơ có giá trị =0 Thuật giải thực thăm đỉnh “ với tới “ từ đỉnh v

Procedure DFS(v)

1) Visited[v]:=1; { đánh dấu v thăm } 2) Write(v); {Đưa đỉnh v}

3) FOR đỉnh w lân cận với v DO

If Visited[w] = then CALL DFS(w); Return

* Đánh giá thuật toán:

+ Trường hợp biểu diễn đồ thị dùng danh sách móc nối: G có e cung, nút với tới lần, nên thời gian tìm kiếm O(e)

+ Trường hợp biểu diễn đồ thị dùng ma trận lân cận : thời gian xác định điểm lân cận v O(n) Có n đỉnh nên thời gian tìm kiếm O(n2).

3.2 Phép tìm kiếm theo chiều rộng (Breadth first search ) Xét đồ thị vô hướng Phép tìm kiếm theo chiều rộng thể

như sau:

- Đỉnh xuất phát v thăm

- Tiếp theo đỉnh chưa thăm mà lân cận v thăm, đến đỉnh chưa thăm lân cận lượt đỉnh tương tự

Ví dụ trên: Phép duyệt theo chiều rơng theo trình tự sau: v1 → v2 → v3 → v4 → v5 → v6 → v7 → v8

* Thủ tục phép duyệt theo chiều rong sau:

Cho đồ thị G(V,E) vô hướng có n đỉnh véc tơ Visited(n) gồm n phần tử, ban đầu véc tơ có giá trị =0 Thuật giải thực thăm đỉnh “ với tới “ từ đỉnh v Bắt đầu từ đỉnh v Mọi đỉnh i thăm đánh dấu Visited(i):=1

(9)

Procedure BFS(v)

1) Khởi tạo hàng đợi Q với v đưa vào 2) Visited[v]:=1; { đánh dấu v thăm } 3) Write(v); {Đưa v}

4) While Q không rỗng DO Begin

Call CQDELETE(v,Q) { loại bỏ v khỏi Q} FOR đỉnh w lân cận với v DO

Begin

If Visited[w]=0 then Begin

Visited[w]:=1; Write(w);

CALL CQINSERT(w,Q); { Bổ sung w vào Q} End

End End Return

* Đánh giá giải thuật: Vòng lặp While lặp lại n lần

- Nếu biểu diễn đồ thị ma trận lân cận thời gian thực O(n2).

- Nếu biểu diễn đồ thị danh sách lân cận thời gian thực O(e)

4 Cây khung khung với giá trị cực tiểu 4.1 Cây khung

* Nếu G đồ thị liên thông phép tìm kiếm theo chiều sâu theo chiều rộng xuất phát từ đỉnh thăm đỉnh Như cung G phân thành tập:

- Tập T chứa cung duyệt qua - Tập b gồm cung lại

(10)(11)(12)

4.2 Cây khung với giá trị cực tiểu

* Bài toán: Xác định khung với giá trị cực tiểu đồ thị liên thơng có trọng số

Gía trị khung tổng trọng số ứng với cạnh khung

* Có nhiều giải thuật xác định khung với giá trị cực tiểu phần ta xét giải thuật Kruskal Với giải thuật khung T xây dựng dần cung Các cung đưa vào T thoả mãn:

- Cung có giá trị cực tiểu cung cịn lại - Khơng tạo chu trình với cung có T

* Giải thuật Kruskal viết sau: 1 T=Φ { T rỗng

2 While T chứa (n-1) cung Do

3 Begin Chọn cung (v,w) từ E có giá trị nhỏ nhất. 4 Loại (v,w) khỏi E

5 If (v,w) khơng tạo nên chu trình T Then đưa (v,w) vào T.

(13)(14)

* Đánh giá giải thuật:

Thời gian thực giải thuật xác định qua thực bước 4.

Trường hợp xấu O(e.log e) e số cung đồ thị G.

5 Bài tốn tìm đường ngắn nhất

( Bài tốn nguồn đích) ( Single source all destination )

* Cho đồ thị có hướng G(V,E), hàm trọng số w(e) cho cung e G đỉnh nguồn v0

(15)

* Gọi S tập đỉnh kể v0 mà đường ngắn xác lập.

Đối với đỉnh w ∈ S, gọi Dist(w) độ dài đường đi ngắn từ v0 qua đỉnh S kết thúc w có số nhận xét sau:

1 Nếu đường ngắn tới w đường bắt đầu từ v0 kết thúc w qua đỉnh thuộc S.

2 Đích đường sinh phải đỉnh w ∉ S mà có Dist(w) ngắn so với đỉnh

∉ S

3 Nếu chọn đỉnh w nhận xét ở sinh đường ngắn từ v0 đến w thì w trở thành phần tử S.

* Dưa quan điểm nhận xét nêu Diskstra đưa giải thuật tìm đường ngắn sau:

- Giả thiết n đỉnh G đánh số từ tới n

- Tập S thể véc tơ bít: S[i] = đỉnh i ∉ S S[i] = đỉnh i ∈S -Độ dài trọng số biểu diễn ma trận lân cận Cost:

Cost[i,j] trọng số cung (i,j)

Cost[i,j] = + ∞ cung (i,j) khơng có Cost[i,j] = i=j

Ví dụ ma trận lân cân Cost sau:

v0 v1 v2 v3 v4 v5

v0 50 10 + ∞ 45 + ∞

v1 + ∞ 15 + ∞ 10 + ∞

v2 20 + ∞ 15 + ∞ + ∞

v3 + ∞ 20 + ∞ 35 + ∞

(16)

* Giải thuật:

Procedure Shortest_Path(v,Cost,Dist,n)

{ Dist(j) 1<= j <=n độ dài đường ngắn từ v đến j đồ thị có hướng G có n đỉnh, Dist(v)=0 G biểu diễn ma trận lân cận Cost có kích thước n x n }

1 For i:=1 To n Do Begin

S[i]:=0; Dist[i]:= Cost[v,i]; End;

2 S[v]:=1; Dist[v]:=0; k:=1; { đưa v vào S }

3 While k<n { xác định n-1 đường từ đỉnh v } Begin

Chọn u cho Dist[u]= min(Dist[i])) với S[i]=0; S[u]:=1; k:=k+1; { đưa u vào S}

6 For w với S[w]=0 Do

7 Dist[w]:= min(Dist[w], Dist[u]+Cost[u,w]) { tính lại khoảng cách theo đường ngắn }

End; Return

Bài tập

1 Nêu khái niệm đồ thị, đồ thị vơ hướng, đồ thị có hướng, đường đi, khung, khung với gía trị cực tiểu

2 Cho đồ thị sau

a- Hãy biễu diễn đồ thị ma trận lân cận, danh sách lân cận

b- Duyệt đồ thị theo chiều sâu, duyệt đồ thị theo chiều rộng c- Tìm khung theo chiều sâu, khung theo chiều rộng d-Tìm khung với giá trị cực tiểu

(17)

Ngày đăng: 08/04/2021, 21:10

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan