B IU DIN TH TRÊN MÁY TÍNH

Một phần của tài liệu Toan roi rac (Trang 111 - 117)

5.4.1. Ma tr n k , ma tr n tr ng s

l u tr đ th và th c hi n các thu t toán khác nhau, ta c n ph i bi u di n đ th trên máy tính, đ ng th i s d ng nh ng c u trúc d li u thích h p đ mô t đ th . Vi c ch n c u trúc d li u nào đ bi u di n đ th có tác đ ng r t l n đ n hi u qu thu t toán. Vì v y, l a ch n c u trúc d li u thích h p bi u di n đ th s ph thu c vào t ng bài toán c th .

Xét đ th đ n vô h ng G =<V, E>, v i t p đnh V = {1, 2,..., n}, t p c nh E = {e1, e2,.., em}. Ta g i ma tr n k c a đ th G là ma tr n có các ph n t ho c b ng 0 ho c b ng 1 theo qui đnh nh sau: A = { aij: aij = 1 n u (i, j) E, aij = 0 n u (i,j) E; i, j =1, 2,..., n}. Ví d 1. Bi u di n đ th trong hình 5.10 d i đây b ng ma tr n k . 2 4 1 2 3 4 5 6 1 0 1 1 0 0 0 1 6 2 1 0 1 1 0 0 3 1 1 0 0 1 0 3 5 4 0 1 0 0 1 1 Hình 5.10. th vô h ng G 5 0 0 1 1 0 1 6 0 0 0 1 1 0 Tính ch t c a ma tr n k :

a. Ma tr n k c a đ th vô h ng là ma tr n đ i x ng A[i,j] = A[j, i]; i, j = 1, 2,... n. Ng c l i, m i (0, 1) ma tr n c p nđ ng c u v i m t đ n đ th vô h ng nđnh;

b. T ng các ph n t theo dòng i ( c t j) c a ma tr n k chính b ng b c đnh i (đnh j); c. N u ký hi u aijp,i, j =1,2,...,n là các ph n t c a ma tr n. Khi đó:

Ap = A.A... A(p l n); aijp,i, j=1,2,...,n,

cho ta s đ ng đi khác nhau t đnh iđ n đnh j qua p-1đnh trung gian.

Ma tr n k c a đ th có h ng c ng đ c đnh ngh a hoàn toàn t ng t , chúng ta ch c n l u ý t i h ng c a c nh. Ma tr n k c a đ th có h ng là không đ i x ng. Ví d 2. Tìm ma tr n k c a đ th có h ng trong hình 5.11. 1 2 3 4 5 1 2 1 0 1 1 0 0 2 0 0 0 1 1 3 0 0 0 1 0 5 4 0 0 0 0 0 3 4 5 1 0 0 0 0 Hình 5.11. th có h ng G

Trong r t nhi u ng d ng khác nhau c a lý thuy t đ th , m i c nh e =(u,v) c a nó đ c gán b i m t s c(e) = c(u,v) g i là tr ng s c a c nh e. th trong tr ng h p nh v y g i là đ

th tr ng s . Trong tr ng h p đó, ma tr n k c a đ th đ c thay b i ma tr n tr ng s c= c[i,j], i, j= 1, 2,..., n. c[i,j] = c(i,j) n u (i, j) E, c[i,j] = θ n u (i, j) E. Trong đó, θ nh n các giá tr : 0,

, -∞ tu theo t ng tình hu ng c th c a thu t toán.

Ví d 3. Ma tr n k c a đ th có tr ng s trong hình 5.12. 2 6 4 1 2 3 4 5 6 3 6 8 5 1 0 3 7 0 0 0 1 6 2 3 0 6 6 0 0 7 9 3 7 6 0 0 3 0 3 3 5 4 0 6 0 0 8 5 Hình 5.12. th tr ng s G. 5 0 0 3 8 0 9 6 0 0 0 5 9 0 u đi m c a ph ng pháp bi u di n đ th b ng ma tr n k (ho c ma tr n tr ng s ) là ta d dàng tr l i đ c câu h i: Hai đnh u, v có k nhau trên đ th hay không và chúng ta ch m t đúng m t phép so sánh. Nh c đi m l n nh t c a nó là b t k đ th có bao nhiêu c nh ta đ u m t n2

đ n v b nh đ l u tr đ th .

5.4.2. Danh sách c nh (cung)

Trong tr ng h p đ th th a (đ th có s c nh m 6n), ng i ta th ng bi u di n đ th d i d ng danh sách c nh. Trong phép bi u di n này, chúng ta s l u tr danh sách t t c các c nh (cung) c a đ th vô h ng (có h ng). M i c nh (cung) e(x, y)đ c t ng ng v i hai bi n

dau[e], cuoi[e]. Nh v y, đ l u tr đ th , ta c n 2m đ n v b nh . Nh c đi m l n nh t c a ph ng pháp này là đ nh n bi t nh ng c nh nào k v i c nh nào chúng ta c n m phép so sánh trong khi duy t qua t t c m c nh (cung) c a đ th . N u là đ th có tr ng s , ta c n thêm mđ n v b nh đ l u tr tr ng s c a các c nh.

Ví d 4. Danh sách c nh (cung) c a đ th vô h ng trong hình 5.10, đ th có h ng hình 5.11, đ th tr ng s hình 5.12.

Dau Cuoi Dau Cuoi Dau Cuoi Trongso 1 2 1 2 1 2 3 1 3 1 3 1 3 7 2 3 2 4 2 3 6 2 4 2 5 2 4 6 3 5 3 4 3 5 3 4 5 5 1 4 5 8 4 6 4 6 5 5 6 5 6 9

Danh sách c nh cung hình 5.10 Hình 5.11 Danh sách tr ng s hình 5.12

5.4.3. Danh sách k

Trong r t nhi u ng d ng, cách bi u di n đ th d i d ng danh sách k th ng đ c s d ng. Trong bi u di n này, v i m i đnh v c a đ th chúng ta l u tr danh sách các đnh k v i nó mà ta ký hi u là Ke(v), ngh a là

Ke(v) = { u V: (u, v)E},

V i cách bi u di n này, m i đnh i c a đ th , ta làm t ng ng v i m t danh sách t t c các

đnh k v i nó và đ c ký hi u là List(i). bi u di n List(i), ta có th dùng các ki u d li u ki u t p h p, m ng ho c danh sách liên k t.

Ví d 5. Danh sách k c a đ th vô h ng trong hình 5.10, đ th có h ng trong hình 5.11

đ c bi u di n b ng danh sách k nh sau: List(i) List(i) nh 1 2 3 nh 1 3 2 2 1 3 4 2 4 5 3 1 2 5 3 4 4 2 5 6 5 1 5 3 4 6 6 4 5 NH NG N I DUNG C N GHI NH X N m v ng và phân bi t rõ các lo i đ th : đ n đ th , đa đ th , đ th vô h ng, đ th có h ng, đ th tr ng s .

X N m v ng nh ng khái ni m c b n v đ th : đ ng đi, chu trình, đ th liên thông.

X Hi u và n m rõ b n ch t c a các ph ng pháp bi u di n đ th trên máy tính. Phân tích u, nh c đi m c a t ng ph ng pháp bi u di n.

X Chuy n đ i các ph ng pháp bi u di n qua l i l n nhau giúp ta hi u đ c cách bi u di n đ th trên máy tính.

BÀI T P CH NG 5

Bài 1. Trong m t bu i g p m t, m i ng i đ u b t tay nhau. Hãy ch ra r ng s l t ng i b t tay nhau là m t s ch n.

Bài 2. M t đ n đ th v i n đnh có nhi u nh t là bao nhiêu c nh?

Bài 3. Hãy bi u di n các đ th G1, G2, G3 d i đây d i d ng ma tr n k . 2 5 2 5 1 4 7 1 4 7 3 6 3 6 a. th vô h ng G1. b. th có h ng G2. B 8 E 5 3 7 4 A 2 D 9 G 1 6 5 9 C 4 F c. th tr ng s G3

Bài 4. Hãy bi u di n các đ th G1, G2, G3 trên d i d ng danh sách c nh.

Bài 6. Xác đnh b c c a các đnh c a các đ th G1, G2, G3 trên.

Bài 7. Hãy t o m t file d li u theo khuôn d ng nh sau:

- Dòng đ u tiên là s t nhiên n là s các đnh c a đ th . - N dòng k ti p là ma tr n k c a đ th .

Vi t ch ng trình chuy n đ i file d li u trên thành file d li u d i d ng danh sách c nh c a đ th .

Bài 8. Hãy t o m t file d li u theo khuôn d ng nh sau:

- Dòng đ u tiên ghi l i s t nhiên n và m là s các đnh và các c nh c a đ th . - M dòng k ti p ghi l i th t đnh đ u, cu i c a các c nh.

Hãy vi t ch ng trình chuy n đ i m t đ th cho d i d ng danh sách c nh thành đ th d i d ng ma tr n k .

Bài 9. M t bàn c 8×8 đ c đánh s theo cách sau:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

M i ô có th coi là m t đnh c a đ th . Hai đnh đ c coi là k nhau n u m t con vua đ t ô này có th nh y sang ô kia sau m t b c đi. Ví d : ô 1 k v i ô 2, 9, 10, ô 11 k v i 2, 3, 4, 10, 12, 18, 19, 20. Hãy vi t ch ng trình t o ma tr n k c a đ th , k t qu in ra file king.out.

Bài 10. Bàn c 8×8 đ c đánh s nh bài trên. M i ô có th coi là m t đnh c a đ th . Hai

đnh đ c g i là k nhau n u m t con mã đ t ô này có th nh y sang ô kia sau m t n c đi. Ví d ô 1 k v i 11, 18, ô 11 k v i 1, 5, 17, 21, 26, 28. Hãy vi t ch ng trình l p ma tr n k c a đ

CH姶愛NG VI: CÁC THUT TOÁN TÌM KIM TRÊN A唄 TH

Có nhi u thu t toán trên đ th đ c xây d ng đ duy t t t c các đnh c a đ th sao cho m i đnh đ c vi ng th m đúng m t l n. Nh ng thu t toán nh v y đ c g i là thu t toán tìm ki m trên đ th . Chúng ta c ng s làm quen v i hai thu t toán tìm ki m c b n, đó là duy t theo chi u sâu DFS (Depth First Search) và duy t theo chi u r ng BFS (Breath First Search). Trên c s c a hai phép duy t c b n, ta có th áp d ng chúng đ gi i quy t m t s bài toán quan tr ng c a lý thuy t đ th . Tóm l i, nh ng n i dung chính đ c đ c p trong ch ng này bao g m:

X Thu t toán tìm ki m theo chi u sâu trên đ th .

X Thu t toán tìm ki m theo chi u r ng trên đ th .

X Tìm các thành ph n liên thông c a đ th .

X Tìm đ ng đi gi a hai đnh b t kì c a đ th .

X Tìm đ ng đi và chu trình Euler

X Tìm đ ng đi và chu trình Hamilton

B n đ c có th tìm hi u sâu h n v tính đúng đ n và đ ph c t p c a các thu t toán trong các tài li u [1] và [2].

Một phần của tài liệu Toan roi rac (Trang 111 - 117)