1. Trang chủ
  2. » Cao đẳng - Đại học

LY THUYET DO THI 3

54 5 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

Moät ñoà thò khoâng ñònh höôùng ñöôïc goïi laø LIEÂN THOÂNG (CONNEXE) neáu vôùi moïi caëp ñænh ñeàu coù ñöôøng noái.. THAØNH PHAÀN LIEÂN THOÂNG laø moät ñoà thò con lieân thoâng toái ña[r]

(1)

ĐẠI S

(2)

CHƯƠNG

CÁC KHÁI NIỆM CƠ BẢN VỀ ĐỒ THỊ

1.1 ĐỊNH NGHĨA & THÍ DỤ 1.1.1 ĐỊNH NGHĨA

1.1.1.1 Đồ thị có định hướng

Một đồ thị G = G(X,U) xác định

§ Tập hữu hạn X = {x1,x2,…, xn} tập đỉnh hay nút

§ Tập U = {u1,u2,…,un} ⊂ X x X tập cung (caïnh)

Đối với cung u = (xi, xj), xi đỉnh đi, xj đỉnh đến (hay cịn gọi gốc

đích) Cung u từ xi đến xj

Cung u dược biểu diễn cách hình học sau :

xi xj FIG.1.1 Cung u=(xi, xj)

Một cung (xi, xi) gọi vòng (khuyên)

Một p-đồ thị đồ thị khơng có q p cung dạng (i,j) hai đỉnh

Thí dụ

x1 u4 x4 u8

u7

u1

u3 u5 x5

u6

x2 u2 x3

FIG 1.2 Đồ thị xác định (X,U),

(3)

1.1.1.2 Đồ thị không định hướng

Khi khảo sát vài tính chất, định hướng cung khơng đóng vai trị Ta quan tâm đến diện cung hai đỉnh mà (không cần định rõ thứ tự) Một cung không định hướng gọi cạnh. Đối với cạnh u = (xi,xj), u gọi CẠNH TỚI hai đỉnh xi xj

Thí dụ

x1 u6 x4

u7

u1 u2 u3 u4 x5

u8

x2 u5 x3

FIG 1.3 Đồ thị xác định (X,U),

X = {x1, x2, x3, x4, x5} ; U = {u1, u2, u3, u4, u5, u6, u7, u8}

Một đồ thị gọi đa đồ thị nếu có nhiều cạnh hai đỉnh Một đồ thị gọi đơn nếu:

1 Không phải đa đồ thị ; Không tồn vòng

Hai cạnh u v gọi song song chúng cạnh tới hai đỉnh phân biệt Ký hiệu u ¦ v

(4)

1.1.1.3 Một số định nghóa § ÁNH XẠ ĐA TRỊ

v xj gọi ĐỈNH SAU (SUCCESSEUR) xi (xi,xj) ∈ U;

Tập đỉnh sau xi ký hiệu Γ(xi)

v xj gọi ĐỈNH TRƯỚC (PREDECESSEUR) xi

(xj,xi) ∈ U; Tập đỉnh trước xi ký hiệu Γ-1(xi)

v Aùnh xạ Γ định nghĩa :với phần tử X, tương ứng với tập X gọi ÁNH XẠ ĐA TRỊ

v Đối với 1-đồ thị, G hồn tồn xác định (X,Γ), ký hiệu sở thường dùng cấu trúc liệu : DANH SÁCH KỀ THÍ DỤ. Trong đồ thị định nghĩa hình vẽ sau X = {x1,x2,x3,x4,x5};

Γ(x1) = x2 ; Γ(x2) = {x3,x4} ; Γ(x3)={x4,x5} ; Γ(x4)={x1} ; Γ(x5)={x4}

x1 x4

x5

x2 x3

FIG 1.4 Đồ thị xác định (X,Γ) § KỀ

v Hai đỉnh gọi kề chúng nối cung (cạnh) v Hai cung (cạnh) gọi kề chúng có đỉnh chung § BẬC CỦA ĐỈNH

v Nửa bậc ngoài đỉnh xi , ký hiệu d+(xi) số cung khởi đầu từ

(hay từ) xi Ta có d+(xi) = card (Γ(xi)) (ký hiệu card(A) số

phần tử tập A)

v Nửa bậc trong đỉnh xi , ký hiệu d-(xi) số cung kết thúc

(hay vào từ) xi Ta có d-(xi)=card(Γ-1(xi))

v Bậc đỉnh xi , d(xi) = d+(xi) + d-(xi) Bậc đỉnh

đồ thị khơng định hướng tổng số cạnh tới Bậc đỉnh có vịng cộng thêm cho vịng THÍ DỤ [xem FIG 1.4]

(5)

d+(x

4)= ; d-(x4)= ; d(x4)=6 (Vì đỉnh x4 có vòng)

v Đỉnh có bậc = gọi đỉnh cô lập

v Đỉnh có bậc = gọi đỉnh treo cung (cạnh) tới gọi cạnh treo

v ĐỊNH LÝ (công thức liên hệ bậc số cạnh) Tổng bậc đỉnh = x số cạnh

2 Xét đồ thị có định hướng G = (X, U) Ta có ∑ d+(x) = ∑ d-(x) = card(U) (số cung) CHỨNG MINH Truy chứng theo đỉnh

v HỆ QUẢ Số đỉnh bậc lẻ số chẳn CHỨNG MINH

∑ d(đỉnh bậc lẻ) + ∑ d(đỉnh bậc chẳn) = x số cạnh § ĐỒ THỊ BÙ

G = (X, U) vaø G = (X,U) (xi,xj) ∈ U ⇒ (xi,xj) ∉U et (xi,xj) ∉U ⇒ (xi,xj) ∈U

G gọi đồ thị bù G § ĐỒ THỊ RIÊNG PHẦN (BỘ PHẬN)

G=(X,U) Up ⊂ U Gp=(X,Up) đồ thị riêng phần G ;

§ ĐỒ THỊ CON

G=(X,U) Xs ⊂ X Gs=(Xs,V) đồ thị G;

V thu hẹp hàm đặc trưng U Xs

V={(x,y)/(x,y) ∈ U∩Xs x Xs} ∀xi∈ Xs, Γs(xi)=Γ(xi)∩Xs

§ ĐỒ THỊ CON RIÊNG PHẦN Tổng hợp hai định nghĩa THÍ DỤ Mạng giao thơng đường nước

v Mạng xe bus : đồ thị riêng phần

(6)

§ ĐỒ THỊ đối xứng : (xi,xj) ∈ U ⇒ (xi,xi) ∈ U

§ ĐỒ THỊ phản đối xứng : (xi,xj) ∈ U ⇒ (xj,xi) ∉ U

§ ĐỒ THỊ phản chiếu : (xi,xi) ∈ U, ∀ xi∈ U

§ ĐỒ THỊ bắc cầu : (xi,xj) ∈ U, (xj,xk) ∈ U ⇒ (xi,xk) ∈ U

§ ĐỒ THỊ đầy đủ : (xi,xj) ∉ U ⇒ (xj,xi) ∈ U (có cạnh

giữa hai đỉnh) Một đồ thị đủ có n đỉnh có n(n-1)/2 cạnh Ký hiệu Kn

§ CLIQUE :Tập đỉnh đồ thị đầy đủ § ĐỒ THỊ HAI PHẦN (LƯỠNG PHÂN) G=(X,U) :

1 X phân hoạch thành X1 X2

2 ∀ (x1,x2) ∈ U x1 ∈ X1, x2∈ X2

Nếu Card(X1) = n, Card(X2) = m, ký hiệu Kn,m

Thí dụ : Đồ thị sau lưỡng phân, không đầy đủ

K2,2 K3,2

§ ĐỀU Là đồ thị mà đỉnh có bậc THÍ DỤ.

x2

x1 x4

x3

(7)

1.1.2 THÍ DỤ

§ THÍ DỤ 1 Đường ngắn

Bài toán Cho đồ thị có định hướng, G = (X,U), định giá v : U → R s, t hai đỉnh phân biệt X

Bài toán đặt ra Tìm đường ngắn s t ? Lời giải Thuật giải Dijkstra, Bellman-Ford (xem Chương 3) `

§ THÍ DỤ 2. Cây phủ tối thiểu

Xét toán mạng, chẳng hạn mạng cung cấp điện, nước từ nguồn

Bài tốn Một đồ thị khơng định hướng G = (X,U), hàm định giá trọng lượng v : U → R+ hai đỉnh phân biệt s, t X

(8)

1.2 BIỂU DIỄN ĐỒ THỊ

Có nhiều cách để biểu diễn đồ thị Tuy nhiên, cách biểu diễn không tương đương với theo quan điểm thuật toán Người ta, phân biệt vài cách biểu diễn chính, chẳng hạn biểu diễn ma trận kề, ma trận tới đỉnh – cung (hay đỉnh – cạnh trường hợp không định hướng) danh sách kề

1.2.1 Biểu diễn cách sử dụng Bảng 1.2.1.1 Ma trận kề

Xét - đồ thị có n đỉnh Ma trận kề ma trận (n x n) có n hàng tương ứng với đỉnh khởi đầu n cột tương ứng với đỉnh kết thúc, định nghĩa sau :

xij = (True) có cung (cạnh) nối xi xj = (False) ngược lại

THÍ DỤ x2

u2 u1 u4

x1 u3 x3

FIG.1.6 Đồ thị Ma trận kề đồ thị sau :

x1 x2 x3 ← kết thúc

x1 1

x2 1

x3 0

(9)

1.2.1.2 Ma trận tới đỉnh – cung (đỉnh – cạnh) v Dịng ↔ đỉnh

v Cột ↔ cung (caïnh)

Cho đồ thị G = (X, U) Một ma trận tới A = [aij]] định nghĩa sau :

Nếu cạnh u = (xi, xj) U cột u, aiu = 1, aju = -1, ngược lại có giá trị

THÍ DỤ Đối với Đồ thị hình FIG 1.6 ta có :

U1 u2 u3 u4

x1 -1

x2 -1 1

x3 0 -1 -1

CHÚ Ý : Tổng dịng khơng (một cung có đỉnh gốc đỉnh kết thúc) Tất ma trận vng có định thức 1, -1 hay

Có cách khác cho ma trận tới sau :

Cho đồ thị G = (X, U) Một ma trận tới A = [aij]] định nghĩa sau :

aiu = neáu u = (xi,xj) ∈ U

= ngược lại

THÍ DỤ Đối với Đồ th ị hình FIG 1.6 ta có :

u1 u2 u3 u4

x1 1

x2 1

x3 0 0

CHÚ Ý : Tổng dòng số cung tới 1.2.2 Biểu diễn cách sử dụng trỏ

Lợi ích cách biểu diễn trỏ hay Danh sách kề (nhờ vào ánh xạ đa trị Γ) giảm thiểu chổ nhớ

THÍ DỤ Đối với 1.đồ thị hình FIG.1.6 ta có :

x1 x2 x3

x2 x1 x3

(10)

1.3 PHÉP DUYỆT ĐỒ THỊ (Parcours de graphes)

Nhiều toán đồ thị cần khảo sát vét kiệt đỉnh cung (cạnh) đồ thị Có cách duyệt đồ thị : phép duyệt theo chiều sâu (Parcours en profondeur) phép duyệt theo chiều rộng (Parcours en largeur)

1.3.1 DUYỆT THEO CHIỀU SÂU NGUYÊN LÝ :

Khởi từ đỉnh, theo cung (ca ïnh) xa Trở lại đỉnh sau cạnh xa nhất, tiếp tục duyệt trước, đỉnh cuối

Thí dụ Ta có đồ thị theo hình vẽ sau :

s7 s1 s5 s8

s6 s3 s2 s4

s9

FIG 1.7

Phép duyệt theo chiều sâu thực đồ thị hình FIG.1.7 sau : § Khởi từ đỉnh s1 Đỉnh duyệt s3

§ Khởi từ đỉnh s3 Đỉnh duyệt s2 Đỉnh sau s3 s6

§ Khởi từ đỉnh s6 Đỉnh sau s1 s5

§ Khởi từ đỉnh s5 Đỉnh sau s1 s7

§ Khởi từ đỉnh s7

§ Khởi từ đỉnh s4 Đỉnh duyệt s9

§ Khởi từ đỉnh s8

(11)

Ký hiệu :

s[k], k : n tập đỉnh có n phần tử, đánh số thứ tự từ đến n Mark[k], k : n hàm nguyên :

= đỉnh duyệt (có nghĩa đánh dấu), = ngược lại

Ma trận kề a, định nghĩa sau :

a[i,j] = 1, (i,j) cung (cạnh ) đồ thị G = ngược lại

Dạng đệ qui

Chương trình :

For (int i =1; i ≤ n ;i++) Mark[i] = ;

For (int i =1; i ≤ n ;i++) if( Mark[i] == 0) then DFS(i) ; Thủ tục đệ qui : Duyệt theo chiều sâu đỉnh k Thủ tục DFS(int k) ;

{

Mark[k] =

// Duyệt đỉnh ma trận kề đỉnh k For (int j =1; j ≤ n ;j++)

if (Mark[j] == && a[k][j]==1) DFS(j) ; } End DFS

Độ phức tạp giải thuật :Đồ thị có n đỉnh m cung(cạnh) § Trường hợp lưu trữ đồ thị dạng ma trận kề : O(n2)

(12)

1.6.2 DUYỆT THEO CHIỀU RỘNG. NGUYÊN LÝ :

§ Khởi từ đỉnh s bất kỳ, ta duyệt tất đỉnh sau S,tập

Γ+(s) trường hợp đồ thị có định hướng (tập Γ(s) :tập tất đỉnh

kề s trường hợp đồ thị khơng định hướng)

§ Sau xét v ∈Γ+(s) (hay Γ(s) ) áp dụng lại cách duyệt giống s

Thí du ï1 Ta có đồ thị theo hình vẽ FIG 1.7 Duyệt theo chiều rộng sau : s1 s8

s3 s5 s6 s7 s4

s2 s9

Thí dụ Ta có đồ thị theo hình vẽ sau :

Duyệt theo chiều rộng sau :

1

3

(13)

1.4 TÍNH LIÊN THƠNG CỦA ĐỒ THỊ 1.4.1 Dây chuyền - Chu trình

Một dây chuyền đồ thị khơng có định hướng dãy liên tiếp cạnh, cho cạnh có đỉnh chung với cạnh Một chu trình dây chuyền mà có cạnh có đỉnh khởi đầu đỉnh kết thúc trùng

Thí dụ

x1 u6 x4

u7

u1 u2 u3 u4 x5

u8

x2 u5 x3

FIG.1.8 <u5,u2,u6,u7> laø dây chuyền, <u4,u7,u8> chu trình

1.4.2 Đường – Mạch

Đường mạch khái niệm dây chuyền chu trình trường hợp đồ thị có định hướng

THÍ DỤ

x1 u3 x5

u4

u1 u2 u6 x4

u7

x2 u5 x3

FIG.1.9 <u5,u2,u3,u4> đường, <u4,u7,u6> mạch

(14)

Thuật ngữ HÀNH TRÌNH (PARCOURS) để nhóm lại đường, dây chuyền, mạch chu trình Một hành trình gọi :

v SƠ CẤP : Nếu Tất đỉnh hợp thành phân biệt v ĐƠN : Nếu tất cạnh phân biệt

v HAMILTON : Đi qua lần đỉnh đồ thị v EULER : Đi qua lần cạnh đồ thị v TIỀN HAMILTON: Đi qua it lần đỉnh đồ thị v TIỀN EULER (CHINOIS) : Đi qua lần cạnh đồ thị

1.4.3 Tính liên thông

Một đồ thị không định hướng gọi LIÊN THÔNG (CONNEXE) với cặp đỉnh có đường nối

THÀNH PHẦN LIÊN THƠNG đồ thị liên thơng tối đại THÍ DỤ :

x1 x2

x3 x4 x5

FIG.1.10 Đồ thị có hai thành phần liên thơng ĐỊNH LÝ

Một đồ thị liên thông có thành phần liên thơng Chứng minh. Hiễn nhiên

ĐỊNH LÝ

(15)

Chứng minh. Chứng minh phản chứng 1.4.4 Liên thơng mạnh

Một đồ thị có định hường gọi liên thông mạnh với cặp đỉnh phân b iệt có đường nối chúng

Một thành phần liên thông mạnh (CFC) đồ thị tối đại liên thông mạnh ĐỊNH LÝ

Một đồ thị liên thông có thành phần liên thơng mạnh Chứng minh. Hiễn nhiên

1.5 ĐỒ THỊ EULER 1.5.1 Bài toán cầu

Đây tình có thật Konigsberg (nước Đức), có hai vùng bị ngăn cách dịng sơng có hai cù lao giũa sông, cầu nối vùng với minh họa hình vẽ Người dân vùng thách đố thử tìm cách xuất phát từ vùng dạo qua cầu lần trở nơi xuất phát Năm 1736, nhà tốn học Euler mơ hình hóa tốn nàybằng đồ thị vơ hướng với đỉnh ứng với vùng, cạnh ứng với cầu Bài tóan phát biểu lại cho đồ thị hình vẽ bên dưới, tìm đường đồ thị qua lần tất cạnh sau trở đỉnh xuất phát Việc giải toán đưa đến định lý EULER

A

C D

B

(16)

1.5.2 Định nghóa

Đồ thị khơng định hướng (có định hướng) EULER đồ thị khơng định hướng (có định hướng) có chứa mạch (chu trình) EULER

Thí dụ A

B F

C E D

FIG 1.12 <ABEDCEFCBFA.> mạch EULER Đồ thị sau khơng có mạch EULER, có đường EULER

A

B F

C E

FIG 1.13 <EBACBDCED> đường EULER 1.5.3 Định lý EULER

§ Định lý Một đồ thị không định hướng, liên thông đồ thị EULER đỉnh G có bậc chẳn

§ Định lý Cho G= (X,U) đồ thị có định hướng, liên thơng mạnh Khi G đồ thị Euler ta có :

(17)

§ Định lý Cho G=(X,U) đồ thị không định hướng, liên thơng Khi G có đường Euler G có đỉnh có bậc lẻ

Thí dụ A

B F

C E D

FIG.1.14 Đồ thị khơng định hướng có đỉnh có bậc chẳn nên đồ thị EULER

A

B F

C E

(18)

1.6 ĐỒ THỊ HAMILTON

Khái niệm đường Hamilton xuất phát từ tốn « Xuất phát từ đỉnh khối thập nhị diện đều, dọc theo cạnh khối cho qua lần tất đỉnh đồ thị » Bài toán nhà Toán học Hamilton đưa vào năm 1859

1.6.1 Định nghóa

Đồ thị HAMILTON đồ thị có chứa chu trình HAMILTON 1.6.2 Tính chất

§ Định lý Đồ thị đầy đủ đồ thị Hamilton Với n lẻ ≥ Kn có (n –1)/2 chu

trình Hamilton đơi khơng có cạnh chung Chứng minh. Hiễn nhiên

§ Định lý Giả sử G đồ thị đơn khơng có định hướng có n đỉnh, với n ≥ Nếu với cặp đỉnh x, z cho z khơng đỉnh kề x , ta có :

d(x) + d(z) ≥ n Thì G đồ thị Hamilton Chứng minh Bài tập

§ Định lý Giả sử G đồ thị đơn khơng có định hướng có n đỉnh, với n ≥ Nếu với đỉnh có bậc ≥ n/2 G đồ thị Hamilton

Chứng minh Suy từ định lý

§ Định lý Gi ả sử G đồ thị đơn khơng có định hướng có n đỉnh m cạnh Nếu m ≥ (n – 3n + 6) /2 G đồ thị Hamilton.

(19)

CHƯƠNG CẤU TRÚC CÂY

2.1 ĐỊNH NGHĨA & THÍ DỤ

2.1.1 CÂY

Cây đồ thị không định hướng, liên thông chu trình THÍ DỤ

FIG 2.1 Caây

ƒ Chiều dài đường nối hai đỉnh lại với gọi khoảûng cách hai đỉnh TÍNH CHẤT

ƒ Giữa hai đỉnh có dây chuyền nối chúng lại với

nhau

ƒ Một n đỉnh có n –1 cạnh Cộng thêm vào cạnh hai đỉnh tạo nên chu trình

2.1.2 RỪNG

(20)

2.1.3 CẤU TRÚC CÂY (CÂY CÓ GỐC)

Là đồ thị có định hướng cho đỉnh có đỉnh trước trừ phần tử khơng có , gọi GỐC Với đỉnh x có đường từ gốc đến x

Xét đỉnh x T có gốc r :

ƒ Một đỉnh y nằm đường hướng từ gốc đến x, đươc gọi ĐỈNH

TRƯỚC (ANCETRE ) x, x ĐỈNH SAU (DESCENDANT) y

ƒ Nếu (x,y) cạnh T, ta gọi x CHA y y CON x Hai đỉnh

cùng cha gọi ANH EM Một đỉnh khơng có gọi LÁ Những đỉnh không LÁ gọi ĐỈNH TRONG

ƒ Chiều dài đường từ gốc đến đỉnh gọi độ sâu đỉnh ƒ Mức (Niveau) đỉnh T khoảng cách từ gốc đến x

™ Mức nút gốc =

™ Mức nút khác gốc = Mức nhỏ chứa +

ƒ Chiều cao hay độ sâu (Hauteur, profondeur) giá trị lớn mức

các đỉnh

ƒ Nếu đỉnh có tối đa hai con, ta gọi nhị phân ƒ Bậc nút & bậc (Degrée)

™ Bậc nút số nút

™ Bậc bậc lớn nút Nếu có bậc n, ta gọi n-cành

THÍ DỤ Cây – cành có gốc,với đỉnh có độ cao

- d(1) = -Mức - d(4)=2 - - d(3)=0 -Mức

d( 2)=0

-d(5)=2 - -Mức d(9)=0

d(6)=0 - d(7) =1 - Mức -d(8)=0 -Mức FIG.2.2 Cây có gốc

2.1.4. THÍ DỤ

2

3

4

5

6

(21)

ƒ Đơi ta biểu diễn quan hệ bao hàm thức nhiều tập hợp cấu trúc

Thí dụ Bao hàm tập hợp sau biểu diễn thành cấu trúc sau : B, C, D ⊂ A A

E, F, G, H ⊂ B

M, N ⊂ D D C B I ⊂ E

J,K ⊂ F M N E F G H L ⊂ H I J K L

ƒ Một Biến có cấu trúc biểu diễn dạng

SINH VIEÂN

TRƯỜNG CMNN

CAO ĐẲNG ĐẠI HỌC HỌ TÊN SINH

NGAØY NOI N T N TP Q

ƒ Biểu thức số học Biểu thức +

X = (x – (2* y) +((x+(y+z)) *z) - *

có thể biểu diễn thành hình x * + z

nhö sau : y x +

y z

ƒ Vòng loại thi đấu bóng bàn

™ Vòng J đấu với T, F đấu với M, L đấu với P J

™ Vòng J đấu với M, L đấu với Ph J Ph ™ Vòng J đấu Ph J M L Ph

™ Cuối J thaéng

J T F M P L

ƒ Câu ngôn ngữ tự nhiên (hay ngôn ngữ lập trình)

Ferme

Đối với câu « Le Pilote ferme la porte » Pilote porte Có thể biểu diễn dạng Le la

ƒ Tự điễn tổ chức theo hình

Chẳng hạn tự điễn gồm từ ART, ART COU ARTICLE, ASTISTE, COU, COUR,

COUTEAU, COUVE, COUVENT, * I * R TEAU VE COUVER biểu diễn theo

hình vẽ sau Ký tự «*» chấm dứt CLE STE * * * NT R từ Chú ý, thứ tự ALPHABET

(22)

2.2 TÍNH CHẤT CƠ BẢN

2.2.1 ĐỊNH LÝ

Cho G bậc n > Các tính chất sau tương đương với : G liên thơng khơng có chu trình

2 G liên thông có n –1 cạnh

3 G chu trình có n – cạnh

4 G khơng có chu trình thêm vào cạnh hai đỉnh không kề tạo chu trình chúng

5 G liên thơng tối thiểu(có nghĩa xóa cạnh G khơng cịn liên thơng nữa)

6 Mọi cặp đỉnh có dây chuyền nối chúng CHỨNG MINH Bài tập

2.2.2 ĐỊNH LÝù

Một đồ thị G = (X,U) đồ thị có chứa đồ thị riêng phần G liên thơng

CHỨNG MINH Bài tập

2.2.3 ĐỊNH LÝ

(23)

2.3 CÂY NHỊ PHAÂN

2.3.1. ĐỊNH NGHĨA (THEO ĐỆ QUI) Một nhị phân B hoăc ∅ có dạng :

B = < O, B1, B2 > : O : gốc,

B1 : trái B2 : phải

2.3.2. BIỂU DIỄN CÂY NHỊ PHÂN

THÍ DỤ

™ SỬ DỤNG BẢNG Có thể định nghĩa kiểu liệu sau : Type Arbtab = Array [1 n] of Record v : t ;

G : integer ; D : integer ; End ;

Với thí dụ trên, ta có :

Trái Phải

1

2 d

3 a

4 e

5 b

6 c

7

8 f 0

9 g 0

10

™ SỬ DỤNG CON TRỎ Có thể định nghĩa kiểu liệu sau :

Type Pt = ^nut ; nut = Record G : Pt ;

Val : t ;

(24)

2.3.3. DUYỆT MỘT CÂY NHỊ PHÂN Có cách duyệt nhị phân (phụ thuộc theo gốc)

1. THỨ TỰ TRƯỚC (PREFIXÉ)

ƒ Xử lý gốc

ƒ Duyệt trái

ƒ Duyệt phải 2. THỨ TỰ GIỮA (INFIXÉ)

ƒ Duyệt trái

ƒ Xử lý gốc

ƒ Duyệt phải

3. THỨ TỰ SAU (POSTFIXÉ)

ƒ Duyệt trái

ƒ Duyệt phải ƒ Xử lý gốc

THÍ DỤ Theo thí dụ , ta có :

ƒ Trước : a b d f c e g

ƒ Giửa : d f b a e g c ƒ Sau : f d b g e c a

2.4 CÂY PHỦ

2.4.1. ĐỊNH NGHĨA

Cho đồ thị vô hướng G Một H gọi phủ G H riêng phần G chứa đỉnh G

2.4.2. ĐỊNH LÝ

(25)

2.4.3. GIẢI THUẬT TÌM CÂY PHỦ Xét đồ thị G

GIẢI THUẬT

ƒ Bước Chọn tùy ý đỉnh G đặt vào H ƒ Bước Nếu đỉnh G nằm H dừng

ƒ Bưức Nếu khơng, tìm đỉnh G khơng nằm H mà nối với đỉnh H cạnh Thêm đỉnh cạnh vào H Quay bước

THÍ DỤ Cho đồ thị G theo hình vẽ sau :

x3 x2

x1

x6

x4 x5 FIG 2.3

™ Khởi từ x1 T= ∅

™ Bước Chọn x2, T = {(x1,x2)}

™ Bước Chọn x3, T = {(x1,x2), (x2,x3)}

™ Bước Chọn x4, T = {(x1,x2), (x2,x3), (x3,x4)}

™ Bước Chọn x5, T = {(x1,x2), (x2,x3), (x3,x4), (x4,x5)}

™ Bước Chọn x6, T = {(x1,x2), (x2,x3), (x3,x4), (x4,x5), (x5,x6)} Kết : T phủ G

2.4.4. ĐỊNH LÝ

Coi phủ H G

(26)

2.4.5. GIẢI THUẬT KIỂM TRA TÍNH LIÊN THƠNG Xét đồ thị không định hướng G

Aùp dụng giải thuật vào G Khi giải thuật dừng

ƒ Nếu H chứa đỉnh G G liên thông H phủ G

ƒ Nếu H không chứa đỉnh G G khơng liên thơng H phủ thành phần liên thông G

THÍ DỤ Trường hợp đồ thị G hình FIG 2.3 ta có G liên thơng THÍ DỤ Cho đồ thị G theo hình vẽ sau :

x3 x2

x1

x6

x4 x5

™ Khởi từ x1 T= ∅

™ Bước Chọn x3, T = {(x1,x3)}

™ Bước Chọn x4, T = {(x1,x3), (x3,x4)}

Thuật toán dừng T phủ thành phần liên thông G mà

2.4.6. GIẢI THUẬT TÌM THÀNH PHẦN LIÊN THÔNG THEO CÁCH

DUYỆ T THEO CHIỀU SÂU

Do thủ tục duyệt theo chiều sâu PROF(s) cho phép thăm tất đỉnh thuộc thành phần liên thông với đỉnh s, nên số thành phần liên thông đồ thị số lần gọi đến thủ tục Vấn đề lại cách ghi nhận đỉnh thành phần liên thông cách cải tiến thủ tục chiều theo chiều sâu PROF(s) sau :

THỦ TỤC DFS(int k) ;

//Duyệt theo chiều sâu đỉnh k {

Mark[k] = socomp; For (int i = 1;i ≤ n ;i++)

(27)

THỦ TỤC CONNEXE ; {

// Khởi tạo số liệu ban đầu cho Mark (các đỉnh duyệt rồi) socomp (số thành phần liên thông

For (int j= ;j≤ n ;j++) { Mark[j] =0 ; Socomp =0 ;} //Gọi thủ tục để xác định thành phần liên thông

For (int i= ;i≤n ;i++) If Mark [i] = =0 {

Socomp = Socomp +1 ; DFS(i) ;

}

//In kết }

THÍ DỤ

s8 s1 s2 s3

s7 s6 s4 s5

™ Khởi từ s1 Gọi DFS(1) , ta có Tập đánh dấu {s1, s2, s6, s7, s8}

™ i= Gọi DFS(3) , ta có Tập đánh dấu {s3, s4, s5}

™ Kết Có thành phần liên thông C1 = {s1, s2, s6, s7, s8}

(28)

2.5 CÂY PHỦ TỐI THIỂU

BÀI TỐN Cho đồ thị liên thơng G = (X,U), và,với cạnh u liên kết với sô l(u) mà ta gọi chiều dài (trong lượng) Vấn đề đặt tìm riêng phần H=(X,V) G cho tổng chiều dài ∑

u

u

l( ) nhỏ

THÍ DỤ Bài tốn thường gặp viễn thông nhiều trường hợp khác Chẳng hạn, tốn đặt cho Tìm đường dây cáp ngắn để nối n thành phố lại với ? Các thành phố biểu diễn đỉnh đồ thị l( (x,y) khoảng cách thành phố x y Mạng dây cáp nối bắt buộc phải liên thông Ở đây, vấn đề tìm riêng phần có tổng chiều dài nhỏ nối tất đỉnh ?

BỔ ĐỀ Nếu G = (X,U) đồ thị đầy đủ tất chiều dài l(u) tương ứng cạnh phân biệt ấy, Bài tốn có lời giải (X, V) Tập V={v1,v2,…,vn-1} nhận theo cách sau :

ƒ Chọn v1 cạnh có chiều dài nhỏ

ƒ v2 cạnh có chiền dài nhỏ cho v2 ≠ v1 V2 = {v1,v2} khơng chứa chu trình

ƒ v3 cạnh nhỏ cho v3 ≠ v2 ≠ v1 V3 = {v1,v2,v3} khơng chứa chu trình

(29)

2.5.1. THUẬT TOÁN PRIM

Ký hiệu :

♦ A = Ma trận kề biểu diễn đồ thị, có trọng lượng, định nghĩa sau : A= [ ai,j] = l(i,j) = chiều dài cạnh cung ứng u=(i,j) ∈ U

∝ u=(i,j) ∉ U

0 , i=j

♦ M = Tập đỉnh chưa đánh dấu (có số phần tử n0)

♦ Pr(p) = Đỉnh trước đỉnh p

♦ d = Tập chiều dài Cây phủ có chịê&u dài ngắn

♦ Mark = Tập đỉnh đánh dấu (đã xét rồi), định nghĩa sau : Mark[i]= 1, đỉnh xét rồi,

0, ngược lại

NGUYÊN LÝ THUẬT TOÁN

1 Khởi tạo : Xuất phát từ đỉnh T = ∅, M = {2, n}

Pr = [1,1,…1]

d = a[1,j], j=1 n (Dòng đầu ma trận kề A) Mark = [1,0…0]

2 Ở bước lặp, chọn đỉnh đánh dấu đỉnh có độ dài ngắn

™ k = Argminx ∈ M d[x]

™ Mark[k]=1

™ Cập nhật lại d[i], Pr[i] với i∈ M \{k} theo cơng thức:

• d[i] = a[k,i] d[i] > a[k,i]

• Pr[i] = k

™ Thay M := M\{k}

Nếu M = ∅ Dừng Nếu không , quay lại

(30)

THÍ DỤ Ta có Ma trận kề A, biểu diễn Đồ thị FIG 2.3., sau :

1

1 11

2 10 ∞

A = 3 12 ∞

4 11 10 ∞

5 ∞ 12

∞ ∞

Các bước thuật toán thực sau :

ƒ Gán ban đầu cho : M, d, Pr : M = { 2, 3, 4, 5, 6} d = [0, 2, 3, 11, 5, 8]

Pr = [1, 1, 1, 1, 1, 1]

ƒ Bước Chọn đỉnh s2 Cập nhật M, d, Pr :

M = { , 3, 4, 5, 6} d = [0, 2, 1, 10, 5, 8] Pr = [1, 1, 2, 1, 1]

ƒ Bước Chọn đỉnh s3 Cập nhật M, d, Pr :

M = { , , 4, 5, 6} d = [0, 2, 1, 6, 5, 8] Pr = [1, 1, 2, 3, 1, 1]

ƒ Bước Chọn đỉnh s5 Cập nhật M, d, Pr :

M = { , , 4, , 6} d = [0, 2, 1, 4,5, 7] Pr = [1, 1, 2, 5, 1, 5]

ƒ Bước Chọn đỉnh s4 Cập nhật M, d, Pr :

M = { , , , , 6} d = [0, 2, 1, 4, 5, 7] Pr = [1, 1, 2, 5, 1, 5] Ta có Kết sau :

ƒ Cây Phủ có độ dài ngắn theo Bước lặp :

T= (x1, x2), (x2,x3), ), (x1,x5) , ), (x5,x4), (x5,x6)} có độ dài l(T) = 19

ƒ Cây Phủ có độ dài ngắn đọc kết theo d Pr :

(31)

10 x3 x2 x2 x1 x6 x1

11 x1 12 Cây khởi đầu

x4 x5 Cạnh thêm vào thứ Cây ban đầu

x3 x2 x3 x2

x1 x1 x5 Cạnh thêm vào thứ

Cạnh thêm vào thứ

x3 x2 x3 x2

x6 x1 x1

(32)

2.5.2. THUẬT TOÁN KRUSKAL (1956)

Cho đồ thị G = (X, U) đồ thị liên thông không định hướng, có trọng lượng Giả Sử xếp cạnh đồ thị theo thứ tự không giảm theo chiều dài

Ý tưởng thuật toán KRUSKAL bước lặp, ta bổ sung vào tập cạnh phủ H =(X, T) cho không tạo thành chu trình

Thuật tốn dừng tất đỉnh đồ thị nối, nghĩa số cạnh H n – Đây thuật tốn « háu ăn », theo nghĩa bước, ta chọn lời giãi tối ưu địa phương mong muốn lời giải tối ưu địa phương tối ưu toàn cục

Cây nhận tất cạnh có chiều dài khác Độ phức tạp : O(m log m)

THỦ TỤC KRUSKAL ; Begin

T := {∅} ;

While Card(T) < (n-1) and (U ≠∅) Do Begin Chon u cạnh có độ dài nhỏ U ; U := U\{u} ;

If (T ∪ {u}) khơng chứa chu trình) then T := T∪ {u} ; End ;

If (Card(T) < n-1 ) Then Đồ thị không liên thông End ;

THÍ DỤ Xem hình FIG 2.3 Ta coù :

U={(x2, x3),(x1,x2),(x1,x3),(x4,x5),(x1,x5),(x3,x4), (x5,x6),(x1,x6),(x2,x6),(x2,x4),(x1,x4),(x3,x5)} L(U) = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} Các bước thuật toán thực sau :

ƒ Bước T= {(x2, x3)},

L(T) = { 1}

ƒ Bước T= {(x2, x3),(x1,x2)},

L(T) = { 1, }

ƒ Bước T= {(x2, x3),(x1,x2), ),(x4,x5)}, L(T) = { 1, , }

ƒ Bước T= {(x2, x3),(x1,x2), ),(x4,x5) ,(x1,x5)},

L(T) = { 1, , 4, }

ƒ Bước T= {(x2, x3), (x1,x2), ),(x4,x5) ,(x1,x5) , (x5,x6)}

Keát thúc Card(T) = = (đỉnh) –1 Tổng chiều dài nhỏ = 19

(33)

10 x3 x2 x2 , x3

x1 x1

x6 x6 11 12

11 12

x4 x5 x4 x5 x1, x2, x3

x6

x4 x5

x1, x2, x3 x1,x2, x3, x4, x5 x6

x4, x5 x6

(34)

CHƯƠNG

BÀI TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT

Những tốn tìm đường đồ thị (đặc biệt tìm đường ngắn nhất) kể toán kinh điễn, cổ lý thuyết đồ thị có nhiều ứng dụng

3.1 ĐỊNH NGHĨA

Cho G = (X, U) đồ thị có định giá; tương ứng với cung u=(i, j), có chiều dài (hay trọng lượng) l(u) hay lij

Bài tốn tìm đường ngắn i j tìm đường µ(i, j) từ i đến j cho :

l(µ) = ∑

u

l(u) ngắn

Diễn giải l(µ) : Chi chí vận chuyễn, Chi phí xây dựng, thời gian cần thiết để khắp,…

CHÚ Ý. Bài tốn tìm đường ngắn tương tự với tốn tìm đường dài Những thuật toán khác theo tính chất sau :

♦ l(u) ≥ 0, ∀ u ∈ U

♦ l(u) ⇔ l(u) = 1, ∀ u ∈ U.(Bài toán đường ngắn theo số cung)

(35)

Và loại tốn sau xét :

♦ Tìm đường ngắn từ đỉnh đến đỉnh cịn lại, ♦ Tìm đường ngắn cặp đỉnh

3.2 NGUYÊN LÝ TỐI ƯU

Nguyên lý tối ưu phát biểu theo kiện tập đường tập đường ngắn đường ngắn

BỔ ĐỀ

Xét đồ thị G = (X,U) hàm trọng lượng l : X x X → R, Cho C = « x1, x2,…,xk » đường ngắn từ x1 đến xk với (i, j)

cho 1≤i≤j≤k, Cho Cij = « xi, xi+1,…,xj » đường C từ xi đến xj

Khi Cij đường ngắn từ xi đến xj

Nguyên lý thuật tốn tìm đường ngắn : ♦ Một khoảng cách d(i) tương ứng với đỉnh xi

♦ Ở cuối thuật toán, khoảng cách biểu diễn chiều dài ngắn từ gốc đến đỉnh xét

3.3 CÁC DẠNG CỦA BÀI TỐN: TỪ MỘT ĐỈNH ĐẾN CÁC ĐỈNH CÒN LẠI

Bài tốn cịn gọi tốn tìm đường ngắn từ gốc Nhiều toán khác dùng thuật tốn để giải :

♦ Đường ngắn đến đích ♦ Đường ngắn từ cặp đỉnh cho trước

(36)

3.3.1 THUẬT TOÁN DIJKSTRA-MOORE (1959)

Giả thiết cạnh (cung) (l(u) ≥ 0) Giả sử G có n đỉnh đánh số thứ tự từ tới n Bài toán đặt tìm đường ngắn từ đỉnh đến đỉnh cịn lại đồ thị

Ký hieäu :

♦ n0 = số phần tử chưa chọn;

♦ A = Ma trận kề biểu diễn đồ thị, có trọng lượng, định nghĩa sau : A = [ ai,j] = l(i,j) = chiều dài cạnh cung ứng u=(i,j) ∈ U

∝ u=(i,j) ∉ U , i=j

♦ Pr(p) = đỉnh trước đỉnh p theo đường ngắn từ gốc đến đỉnh p

♦ d = khoảng cách ngắn từ gốc đến đỉnh lại đồ thị Qui ước ∞ cho đỉnh khơng có đường từ gốc đến

♦ Mark = Tập đỉnh đánh dấu (đã xét rồi), định nghĩa sau : Mark[i] = 1, đỉnh xét rồi,

0, ngược lại

NGUYÊN LÝ THUẬT TOÁN

1 Khởi tạo : Xuất phát từ đỉnh ; n0 = n – :

Pr = [1,1,…1]

d = a[1,j], j=1 n (Dòng đầu ma trận kề A) Mark = [1,0…0]

2 Ở bước lặp, chọn đỉnh đánh dấu đỉnh có độ dài ngắn đỉnh chưa đánh dấu, nghĩa chọn đỉnh k cho :

d[k] = Min {d[i] : Mark[i]= } ; Mark[k]=1

Cập nhật lại d[j], Pr[j] với đỉnh j chưa đánh dấu (Mark[j]=0) theo cơng thức:

• d[j] = d[k] + a[k,j] d[j] > d[k] +a[k,j] • Pr[j] = k

Nếu tất đỉnh chọn, nghĩa n0 = Dừng Nếu không , quay lại THỦ TỤC DIJKSTRA – MOORE ;

//Giả sử nhập ma trận chiều dài l theo dạng ma trận kề A //Gán ban đầu cho d, Pr, Mark, n0

For (int j= 1; j≤ n ; j++) { d[j] = a(1,j) ; pr[j]=1 ; Mark[j] = 0;} Mark[1] =1 ; n0 = n-1 ;

WHILE (n0 > 0)

{d[k] = Min {d[j] : Mark[j]= } ; // Cập nhật lại n0 , d Pr, Mark

Mark[k] =1 ; n0 = n0 - ;

For (int j= 1; j≤ n ; j++) if (Mark [j] = 0) && (d[k]+ a[k,j] < d[j]) { d[j] = d[k] +a[k,j] ; pr[j]=k}

}

(37)

THÍ DỤ Ma trận kề A :

1

1 10 ∝ ∝

0 ∝ ∝ ∝ ∝ ∝

1 10 A = ∝ ∝ ∝ ∝ ∝ ∝ ∝ ∝ ∝ ∝ ∝ ∝ 2

1

5

FIG.3.1 Đồ thị có định hướng, có trọng lượng

Gán Ban đầu Cho Mark, d, Pr : Mark = [1, 0,0, 0, 0, 0] d = [0, 10,3, ∝, 6, ∝] Pr = [1, 1, 1, 1, 1, 1]

Bước Chọn đỉnh s3 Cập nhật Mark, d, Pr :

Mark = [1, 0, 1, 0, 0, 0] d = [0, 7, 3, ∝, 5, ∝] Pr = [1, 3, 1, 1, 3, 1]

Bước2 Đỉnh thời s3 Chọn đỉnh s5 Cập nhật Mark, d, Pr : Mark = [1, 0, 1, 0, 1, 0]

d = [0, 5, 3, ∝, 5, 6]

Pr = [1, 5, 1, 1, 3,5]

Bước3 Đỉnh thời s5 Chọn đỉnh s2 Cập nhật Mark, d, Pr : Mark = [1, 1, 1, 0, 1, 0]

d = [0, 5, 3, ∝, 5, 6]

Pr = [1, 5, 1, 1, 3,5]

Bước4 Đỉnh thời s2 Chọn đỉnh s6 Cập nhật Mark, d, Pr : Mark = [1, 1, 1, 0, 1, 1]

d = [0, 5, 3, ∝, 5, 6]

Pr = [1, 5, 1, 1, 3,5]

Thuật tốn kết thúc đỉnh s4, ta có d[s4] = Min {d[j] : Mark[j]= 0}= d[s4] = ∝

Từ thuật tốn , ta có kết sau : d = [0, 5, 3, ∝, 5, 6] Pr = [1, 5, 1, 1, 3, 5]

Đường ngắn từ s1 đến s2 : s1→ s3 → s5 → s2 độ dài

Đường ngắn từ s1 đến s3 : s1 → s3 độ dài

Đường ngắn từ s1 đến s5 : s1→ s3 → s5 độ dài

Đường ngắn từ s1 đến s6 : s1→ s5 → s6 độ dài

Không có đường ngắn từ đỉnh s1 đến s4 (d[s4] = ∝) , khơng có đường nối

(38)

GHI CHÚ

Giả thiết « Hàm trọng lượng không âm » bắt buộc Chẳng hạn, sử dụng thuật toán Dijktra-Moore cho đồ thị hình FIG.3.2, dẫn đến kết sai ta chọn gốc đỉnh s1 Thật vậy, đầu tiên, ta chọn đỉnh s2, (s1→ s2) đó, đường ngắn

nhất đường từ đỉnh s1 đến s2 qua s3

3 -

(39)

3.3.2 THUẬT TOÁN BELLMAN-FORD (1958-1962)

Sự diện dấu trọng lượng (hay chiều dài ) cho phép, chẳng hạn, cải tiến chi phí hay lợi nhuận Thuật tốn DIJKSTRA-MOORE khơng cho phép xét tới cạnh (cung) có trọng lượng khơng âm, trường hợp cạnh đánh dấu, ta khơng thể thay đổi cho bước lặp Thuật tốn DIJKSTRA-MOORE gọi gán nhãn cố định

Để giải cho trường hợp đồ thị có trọng lượng bất kỳ, ta xét thuật toán cho phép đánh dấu xác định hoàn toàn thuật toán kết thúc Một kiểu thuật toán gọi điều chỉnh nhãn

Thuật tốn BELLMAN-FORD chỉ có giá trị cho đồ thị khơng có chu trình, có trọng lượng

Ký hiệu :

♦ Tập đỉnh đánh số thứ tự từ n

♦ Pr(p) = đỉnh trước đỉnh p theo đường ngắn từ gốc đến đỉnh p ♦ d = khoảng cách ngắn từ gốc đến đỉnh lại đồ thị ♦ Mark = Tập đỉnh đánh dấu (đã xét rồi), định nghĩa sau :

Mark[i] = 1, đỉnh xét rồi, 0, ngược lại

Khoảng cách ngắn từ gốc đến đỉnh v tính tất phần tử trước v (Γ-(v)) đánh dấu Một đỉnh bất kỳ, chưa đánh dấu, khoảng cách từ gốc đến đỉnh chưa biết (chưa tính)

NGUN LÝ THUẬT TỐN 1 Gán giá trị ban đầu

Chọn đỉnh s1 làm gốc

Mark = [1,0…0] ; d[1] = ; Pr[1] =

2 Ở bước lặp :

Chọn đỉnh k chưa đánh dấu cho tất đỉnh trước k đánh dấu , nghĩa : Mark[k] = j Γ-(k) : Mark[j]=

Caäp nhaät Mark : Mark[k] =1 ;

(40)

THÍ DỤ

Gán ban đầu : Mark, d, Pr :

2 -2 Mark = [1, 0, 0, 0, 0, 0},

d[1] = ;

-5 Pr [1] =

1 Γ - (2) ={1,3};Γ- (3)={1};Γ- (4)={2,3,6} -2 Γ - (5) ={3} ; Γ- (6) ={2,5}

-1

FIG.3.1 Đồ thị có định hướng, có trọng lượng bất kỳ, khơng có chu trình, gốc đỉnh Bước Chọn đỉnh 3 vì Γ- (3)={1} Cập nhật Mark[3], Tính d[3] Pr[3] :

Mark[3] = ; d[3] = -2 ; Pr[3] = 1;

Bước2 Ở bước lặp này, ta chọn đỉnh (hay đỉnh 2) Cập nhật Mark[5], Tính d[5] Pr[5] :

Mark[5] = ; d[5] = ; Pr[5] = 3;

Bước Chọn đỉnh 2 Cập nhật Mark[2], Tính d[2] Pr[2] : Mark[2] = ; d[2] = -1 ; Pr[2] = 3;

Bước Chọn đỉnh 6 Cập nhật Mark[6], Tính d[6] Pr[6] : Mark[6] = ; d[6] = 1; Pr[6] =

Bước Chọn đỉnh 4 Cập nhật Mark[4], Tính d[4] Pr[4] : Mark[4] = ; d[4] = - ; Pr[4] =

Thuật tốn kết thúc tất đỉnh chọn Từ thuật toán , ta có kết sau :

d = [0, -1, -2, -4, 2, 1] Pr = [1, 3, 1, 6, 3, 5]

Đường ngắn từ s1 đến s2 : s1→ s3 → s2 độ dài -1

Đường ngắn từ s1 đến s3 : s1 → s3 độ dài -2

Đường ngắn từ s1 đến s4 : s1→ s3 → s5 → s6→ s4 độ dài -

Đường ngắn từ s1 đến s5 : s1→ s3 → s5 độ dài

(41)

3.4 GIỮA TẤT CẢ CÁC CẶP ĐỈNH: THUẬT TỐN FLOYD (1962)

Ta tính ma trận khoảng cách n x n Nếu tất chiều dài khơng âm (l(u)≥0) ta áp dụng n lần thuật toán Dijktra-Moore cho đỉnh i Nếu đồ thị có chứa chiều dài âm (l(u) < 0) ta áp dụng n lần thuật tốn Bellman-Ford cho mỗiđỉnh i Thuật tốn Floyd có cách tiếp cận khác có lợi cho trường hợp ma trận dầy

Ký hiệu :

A : ma trận trọng lượng, gán giá trị ban đầu sau : i = j

A[i,j] = l(i, j) (i, j) ∈ U ∞ nguợc lại

P : ma trận đỉnh trước, gán giá trị ban đầu sau :

P[i,j] = i, P[i,j] đỉnh trước đỉnh j đường từ gốc i đến j

Khi kết thúc thuật tốn, ta có :

P[i,j] = đỉnh trước j đường ngắn từ gốc i đến đỉnh j, với chiều dài tương ứng A[i,j]

THỦ TỤC FLOYD(L, P)

For (k =1; k≤ n ; k++) For (i =1 ;i≤ n ; i++) For (j =1 ;j≤ n ; j++)

If (a[i,k] + a[k,j] < a[i,j])

{ a[i,j] := a[i,k] + a[k,j] ; p[i,j] :=p[k,j] ;}

Độ phức tạp : O(n3

(42)

THÍ DỤ

-1

-2

-4 5

Gán ban đầu : cho ma trận A, P

1 ∝ 1

A0 = ∝ -2 ∝ P0 = 2

∝ 5 3 -4 -1 ∝ 4

Các bước lặp : k =1

1 ∝ 1 A1 = ∝ -2 ∝ P1 = 2

∝ 5 3 -4 -2 ∝ 4

k =

1 1

A2 = ∝ -2 ∝ P2 = 2

∝ 5 3 -4 -2 -4

k =3

1 1

A3 = ∝ -2 P3 = 2

∝ 5 3 -4 -2 -4

k =

1 1

A4 = -1 -2 P4 = 2

(43)

Cách nhận biết đường ngắn

Để nhận đường ngắn từ s1 đến sj , ta sử dụng dòng thứ i ma trận

P Chẳng hạn, ta muốn nhận đường ngắn µ : s4 → s3, ta tham khảo

ma trận P sau : P[4,3]=2 :s2 đỉnh trước s3 ; P[4,2]=1 : s1 đỉnh trước

của s2 ; P[4,1]=4 :s4 đỉnh trước s1

Cuối cùng, kết µ = s4→ s1 → s2→ s3

Một ứng dụng Thuật toán FLOYD tìm đường giũa hai đỉnh Thuật tốn WARSHALL phát triễn năm (1962), thuật tốn thường mang tên FLOYD-WARSHALL »

Ký hiệu :

A = ma trận kề đồ thị, gán giá trị ban đầu sau : l (i, j) ∈ U

A[i,j] = nguợc lại

P = ma trận đỉnh trước, gán giá trị ban đầu sau : a[i,j] = 0,

P[i,j] = nguợc lại Khi kết thúc thuật toán :

P[i,j] = đỉnh trước j đường từ đỉnh i đến đỉnh j (nghĩa a[i,j]=1)

THỦ TỤC FLOYD-WARSHAL(A, P)

For (k =1 ;k≤ n ; k++) For (i =1 ;i≤ n ; i++) For (j =1 ;j≤ n ; j++)

If (a[i,j] = = 0)

{ a[i,j] = a[i,k] *a[k,j] ; p[i,j] =p[k,j] }

(44)

THÍ DỤ

Gán ban đầu : cho ma trận A, P

1 1 1 A0 = 0 P0 = 0

1 1 0 4

Các bước lặp : k =1

1 1 1 A1 = 0 P1 = 0

1 1 4

k =

1 1 1

A2 = 0 P2 = 0

1 1 1 4

k =3

1 1 1

A3 = 1 P3 =

1 1 1 4

k =

1 1 1

A4 = 1 1 P4 =

(45)

CHƯƠNG

ĐỒ THỊ PHẲNG & BÀI TỐN TƠ MÀU

4.1 ĐINH NGHĨA VỀ ĐỒ THỊ PHẲNG

Đồ thị phẳng đồ thị biểu diễn mặt phẳng (hay hình cầu) cho hai cung (hay hai cạnh) không cắt

Ghi chú. Hai cạnh có chung đỉnh gọi khơng cắt

Cắt Không cắt

Thí dụ. Đồ thị G1 đồ thị phẳng G2 , G3 biểu diễn phẳng G1

(46)

Cho G đồ thị phẳng Một mặt (FACE) G miền, giới hạn cạnh, khơng có đỉnh lẫn cạnh bên Trong mặt ln ln có mặt vô hạn Đường biên (CONTOUR) mặt r chu trình hợp thành từ cạnh biên r Hai mặt r s gọi KỀ (ADJACENTES) đường biên chúng có chung cạnh Hai mặt khơng có chung đỉnh khơng kề

THÍ DỤ

Một đồ địa dư đồ thị phẳng (với điều kiện khơng có đảo) Đồ thị đặc biệt đỉnh có bậc ≥ Mặt h mặt vơ hạn, mặt cịn lại a, b, c, d, e, f, g mặt hữu hạn

h A a

c a b

d e f

FIG 4.1 ĐỒ THỊ PHẲNG

Bài toán ba làng ba nhà máy Ta có làng a, b, c, mà ta muốn đặt đường nối với nhà máy : nhà máy cung cấp nước d, nhà máy cung cấp ga e, nhà máy cung cấp điện f Vấn đề đặt , ta đặt mặt phẳng cho đường dẫn không giao đỉnh cực biên ? Đồ thị biểu diễn làng nhà máy cho phép định nghĩa lớp đồ thị không phẳng

a b c

d e f

(47)

4.2 CÔNG THỨC EULER , HỆ QUẢ & THÍ DỤ 4.2 CÔNG THỨC EULER

Cho đồ thị phẳng liên thơng có n đỉnh, m cạnh f mặt, ta có n - m + f =

Chứng minh. Truy chứng số cạnh :

m = Ta có n= đỉnh f=1 mặt Ta có n – m + f = – + = Vậy công thức EULER cho trường hợp m =

Giả sử công thức EULER cho trường hợp đồ thị Gi-1 có mi – cạnh

Ta chứng minh công thức EULER cho trường hợp đồ thị có mi

cạnh

Gọi cạnh u = (x,y) cạnh vẽ thêm vào Gi-1 để có Gi

Hiễn nhiên có it đỉnh thuộc Gi-1 u=(x,y) thuộc mặt K

của Gi-1 Giả sử x ∈ Gi-1 Có trường hợp xãy :

1 y ∈ K Do ta có : x fi = fi-1 +

ni = ni-1 K

mi = mi-1 +

Ta coù : y

ni - mi + fi = ni – (mi-1 + 1) + (fi-1 + 1)

= ni – mi-1 + fi-1 =

Vậy cơng thức EULER y ∉ K Ta có :

fi = fi-1

ni = ni-1 +

mi = mi-1 +

Ta coù :

ni - mi + fi = (ni + 1) – (mi-1 + 1) + fi-1

= ni – mi-1 + fi-1 =

(48)

4.2.2 Heä quaû

Trong đồ thị đơn giản phẳng, liên thơng có n đỉnh, m cạnh (m > 2) f mặt Khi ấy, ta có :

3f/2 ≤ m ≤ 3n - (1)

Chứng minh.

Mỗi mặt bị bao cạnh, cạnh thuộc mặt Ba cạnh xác định tối đa mặt Vậy số mặt tối đa 2m/3

Ta có f ≤ 2m/3 Dùng công thức EULER suy bất đẳng thức (1)

4.2.3 Hệ

Trong tất đồ thị phẳng đơn giản, có đỉnh có bậc ≤

Chứng minh

Giả sử đỉnh có bậc > Khi 2m > 6n ⇒ m > 3n > 3n – Mâu thuẩn

4.2.4 THÍ DỤ

Dùng cơng thức EULER, ta chứng minh tất đồ thị đầy đủ đỉnh K5

không phẳng

FIG 4.3 ĐỒ THỊ KHÔNG PHẲNG LOẠI : K5 Chứng minh

Ta có số đỉnh n = 5, Số cạnh m = n(n-1)/2 = 10 Nếu K5 phẳng, áp dụng hệ 3.2.2 ta có :

(49)

Nhận xét

Đồ thị làng nhà máy (Loại : K3,3) đồ thị đầy đủ

đỉnh (loại :K5) cho phép định nghĩa tất đồ thị mà không phẳng

K5, K3,3 đồ thị

Đồ thị K5 không phẳng với số đỉnh nhỏ nhất, đồ thị K3,3 đồ thị khơng phẳng

có số cạnh nhỏ nhất, hai đồ thị không phẳng đơn giản

4.3 BẤT ĐẲNG THỨC CẠNH- ĐỈNH 4.3.1 THÍ DỤ

Ta xét toán xác định xem đồ thị G cho trước có phẳng khơng ?

THÍ DỤ 1 Cho đồ thị K4 K4 phẳng THÍ DỤ 2. Cho đồ thị G sau :

a b c d

h g f e

G phẳng ta vẽ lại sau : g b f

a c h d e

THÍ DỤ 3. Đồ thị sau không phẳng

(50)

4.3.2 BẤT ĐẲNG THỨC CẠNH – ĐỈNH

Cho G đồ thị phẳng liên thơng có n đỉnh, m cạnh đường biên mặt có số cạnh g ≥ Khi ấy, ta có :

m ≤ (n-2) g/ (g-2)

Chứng minh.

Giả sử ma trận kề cạnh- mặt có dạng : f1 f2 fj fF

m1

m2

A =

mI mij

mf

trong :

mij = mI cạnh biên fj,

0 ngược lại Xét hàng thứ i, ta có :

Σ mij ≤ ( mij cạnh biên nhiều mặt)

Suy Σ Σ mij ≤ 2m (1)

Xét cột thứ j, ta có :

Σ mij ≥ g (vì mặt fj có it g cạnh biên)

Suy Σ Σ mij ≥gf (2)

Theo cơng thức EULER, ta có :

n - m + f = (3) Theo (2), (1), ta coù :

gf = g(2 + m - n) ≤ 2m (2 + m - n) ≤ 2m/g

⇔ m(1-2/g) ≤ n –

(51)

THÍ DỤ

Nhờ Bất đẳng thức trên, ta chứng minh đồ thị làng nhà máy K3,3 , xem hình FIG 4.2 khơng phẳng

Thật vậy, nhận xét chu trình K3,3 có số cạnh Vậy

nếu K3,3 phẳng mặt phải có số cạnh

Theo Bất đẳng thức trên, ta có : = m ≤ (6-2) 4/(4-2) = Mâu thuẩn Vậy K3,3 không phẳng

4.4 PHÉP ĐỒNG DẠNG 4.4.1 ĐỊNH NGHĨA

Hai đồ thị gọi đồng dạng với đồ thị có cách biến đổi đồ thị theo cách thêm đỉnh bậc bỏ đỉnh bậc

THÍ DỤ a b → a c b → a b Thêm Bớt

Đỉnh c bậc vào ab Đỉnh c bậc khỏi acb

4.4.2 BỔ ĐỀ

Giả sử H đồ thị G Khi : Nếu G phẳng H phẳng

Nếu H không phẳng G không phẳng

4.4.3 BỔ ĐỀ

Mọi đồ thị phẳng đồng dạng phẳng

4.5 ĐỊNH LÝ KURATOWSKI

(52)

4.6 BÀI TỐN TƠ MAØU ĐỒ THỊ 4.6.1 ĐỊNH NGHĨA

Phép tô màu đồ thị phép gán màu cho đỉnh đồ thị cho hai đỉnh kề có màu khác

Một cách hình thức định nghĩa phép tơ màu sau :

Phép tô màu ánh xạ γ : X → N cho ∀ (x, y) ∈ X, γ(x) ≠ γ (y)

THÍ DỤ

FIG 4.4

Số màu (phân biệt) cần thiết để tô màu đỉnh đồ thị G gọi Sắc tố (CHROMATIQUE) ký hiệu γ (G)

Một đồ thị G γ (G) ≤ k gọi k-sắc tố

Chận sắc tố cho d + với d bậc lớn đỉnh γ (G) ≤ d +

4.6.2 CÁC ỨNG DỤNG XẾP LỊCH THI

Giả sử ta khảo sát việc thi vấn đáp kỳ thi Có ràng buộc sau :

♦ Một thầy , lúc hỏi thi em

♦ Một thí sinh thi với thầy vào thời gian định trước

Sự phân bố thí sinh thi với thầy ấn định trươc (Thầy Pi thí sinh

Ej) :

THÍ DỤ (P1, E1), (P1, E2), (P1, E3), (P2, E1), (P2, E2), BẢN ĐỒ ĐỊA DƯ

(53)

4.6.3 THUẬT TỐN TƠ MÀU DỮ LIỆU : Đồ thị G = (X, U)

KẾT QUẢ : Một phép tô màu γ : X → N

BEGIN

Cho τ = x1, x2, …,xn phép đánh số thứ tự đỉnh G

Cho C = {1 , 2, …, k} tập maøu FOR i=1 To n Do

γ(xi) = Min{k ∈ C :∀ đỉnh y kề x,, γ(y) ≠ k} END

4.6.4 ĐỊNH LÝ

Nếu G có chứa đồ thị đẳng hình với Km γ (G) ≥ m CHỨNG MINH Hiễn nhiên

4.6.5 ĐỊNH LÝ MÀU (KEMPE-HEAWOOD)

(54)

4.6.6 BÀI TỐN MÀU

GIẢ THIẾT BÀI TỐN MÀU

Trên đồ bất kỳ, ta nói tơ màu miền đồ tô màu xác định cho miền kề (chung phần biên) phải tô hai màu khác Vấn đề đặt cần dùng tối thiểu màu để tô đồ Vấn đề đặt từ năm 1852 giáo sư De Morgan đặt : « Mọi đồ tơ màu cho hai nước nằm kề phải tô hai màu khác » Sau có nhiều cố gắng nhà toán học để giải toán không đến kết cuối Cho đến năm 1976, nhóm nhà tốn học (K Appel, W Haken, J.Koch) xây dựng lời giải dựa kết máy tính IBM cung cấp khẳng định giả thiết màu

LIÊN QUAN GIỮA BÀI TỐN MÀU & SẮC TỐ ĐỒ THỊ PHẲNG

Cho đồ thị phẳng G liên thơng, khơng có đỉnh lập Ta xây dựng đồ thị đối ngẫu gọi G sau :

Mỗi đỉnh x* G tương ứng với mặt s G

Mỡi cạnh u* G nối đỉnh G tương ứng với vùng kề

và cắt cạnh chung hai vùng

G xây dựng đồ thị phẳng, khơng có đỉnh lập

Chú ý : Đối ngẫu G G

HỆ QUẢ

Trong tất đồ địa dư, có mặt có đường biên có số cạnh ≤

Chứng minh

Chuyển đồ địa dư thành đồ thị đối ngẫu Giả thiết trở thành « có it đỉnh có bậc ≤ » áp dụng Hệ 4.2.3 suy kết luận hệ

ĐỊNH LÝ MÀU

Ngày đăng: 29/05/2021, 06:24

Xem thêm:

w