Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 198 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
198
Dung lượng
3,43 MB
Nội dung
H C VI N CƠNG NGH B U CHÍNH VI N THÔNG - SÁCH H - NG D N H C T P TOÁN R I R C Biên so n : Ths NGUY N DUY PH L u hành n i b HÀ N I - 2006 NG L I GI I THI U Toán r i r c m t l nh v c nghiên c u x lý đ i t ng r i r c dùng đ đ m đ i t ng, nghiên c u m i quan h gi a t p r i r c M t nh ng y u t làm Toán r i r c tr nên quan tr ng vi c l u tr , x lý thông tin h th ng máy tính v b n ch t r i r c Chính lý đó, Tốn h c r i r c m t môn h c b t bu c mang tính ch t kinh n c a ngành Công ngh thông tin i n t Vi n thông Tài li u h ng d n mơn h c Tốn h c r i r c đ c xây d ng cho h đào t o t xa H c vi n Công ngh B u Vi n thơng đ c xây d ng d a c s kinh nghi m gi ng d y môn h c k th a t giáo trình “Tốn h c r i r c ng d ng tin h c” c a Kenneth Rossen Tài li u đ c trình bày thành hai ph n: Ph n I trình bày nh ng ki n th c c b n v lý thuy t t h p thông qua vi c gi i quy t b n tốn c b n là: Bài toán đ m, Bài toán t n t i, Bài toán li t kê Bài toán t i u Ph n II trình bày nh ng ki n th c c b n v Lý thuy t đ th : khái ni m, đ nh ngh a, thu t toán đ th , đ th Euler, đ th Hamilton M t s tốn có ng d ng th c ti n quan tr ng khác c a lý thuy t đ th c ng đ c tr ng gi i quy t Bài tốn tơ màu đ th , Bài tốn tìm đ ng ng n nh t Bài toán lu ng c c đ i m ng Trong m i ph n c a tài li u, chúng tơi c g ng trình bày ng n g n tr c ti p vào b n ch t c a v n đ , đ ng th i cài đ t h u h t thu t toán b ng ngơn ng l p trình C nh m đ t đ c hai m c tiêu cho ng i h c: Nâng cao t toán h c phân tích, thi t k thu t tốn rèn luy n k n ng l p trình v i nh ng thu t toán ph c t p M c dù r t c n tr ng trình biên so n, nhiên tài li u không tránh kh i nh ng thi u sót h n ch Chúng tơi r t mong đ c s góp ý q báu c a t t c đ c gi b n đ ng nghi p M i góp ý xin g i v : Khoa Công ngh Thông tin - H c vi n Cơng ngh B u Vi n thông Hà N i, tháng 05 n m 2006 Ch PH N I: LÝ THUY T T CH ng 1: Nh ng ki n th c c b n H P NG I: NH NG KI N TH C C N i dung c a ch thuy t t p h p Bao g m: B N ng đ c p đ n nh ng ki n th c c b n v logic m nh đ lý Gi i thi u t ng quan v lý thuy t t h p Nh ng ki n th c c b n v logic Nh ng ki n th c c b n v lý thuy t t p h p M ts ng d ng c a logic lý thuy t t p h p tin h c B n đ c có th tìm th y nh ng ki n th c sâu h n chi ti t h n tài li u [1] [2] c a tài li u tham kh o 1.1 GI I THI U CHUNG T h p m t l nh v c quan tr ng c a toán h c r i r c đ c p t i nhi u v n đ khác c a toán h c Lý thuy t T h p nghiên c u vi c phân b ph n t vào t p h p Thông th ng ph n t c a t p h p h u h n vi c phân b chúng ph i tho mãn nh ng u ki n nh t đ nh tu theo u c u c a tốn nghiên c u M i cách phân b đ c coi m t “c u hình c a t h p” Nguyên lý chung đ gi i quy t toán t h p đ c d a nh ng nguyên lý c s nguyên lý c ng, nguyên lý nhân m t s nguyên lý khác, nh ng m t đ c thù không th tách r i c a toán h c t h p vi c ch ng minh ki m ch ng ph ng pháp gi i quy t tốn khơng th tách r i máy tính Nh ng d ng tốn quan tr ng mà lý thuy t t h p đ c p tốn đ m, tốn li t kê, toán t n t i toán t i u Bài toán đ m: d ng toán nh m tr l i câu h i “có c u hình tho mãn u ki n nêu?” Bài toán đ m đ c áp d ng có hi u qu vào nh ng cơng vi c mang tính ch t đánh giá nh xác su t c a m t s ki n, đ ph c t p thu t toán Bài toán li t kê: toán li t kê quan tâm đ n t t c c u hình có th có đ c, v y l i gi i c a đ c bi u di n d i d ng thu t toán “vét c n” t t c c u hình Bài tốn li t kê th ng đ c làm n n cho nhi u toán khác Hi n nay, m t s toán t n t i, toán t i u, toán đ m v n ch a có cách gi i quy t ngồi ph ng pháp li t kê Ph ng pháp li t kê tr nên quan tr ng h n đ c h tr b i h th ng máy tính Ch ng 1: Nh ng ki n th c c b n Bài toán t i u: khác v i toán li t kê, toán t i u ch quan tâm t i c u hình “t t nh t” theo m t ngh a ây m t tốn có nhi u ng d ng th c ti n lý thuy t t h p đóng góp m t ph n đáng k vi c xây d ng thu t toán đ đ a đ c nh ng mơ hình t i u Bài tốn t n t i: n u nh toán đ m th c hi n đ m c u hình có th có, tốn li t kê: li t kê t t c c u hình có th có, tốn t i u ch m t c u hình t t nh t toán t n t i gi i quy t nh ng v n đ nghi v n ngh a k c v n đ có hay khơng m t c u hình c ng ch a bi t Nh ng toán th ng nh ng tốn khó, vi c s d ng máy tính đ ch ng t tốn t n t i hay khơng t n t i nh t (ho c khơng) m t c u hình tr nên h t s c quan tr ng 1.2 NH NG KI N TH C C B N V LOGIC Các qui t c c b n c a Logic cho ta ý ngh a xác c a m nh đ Nh ng qui t c đ c s d ng gi a l p lu n tốn h c khơng Vì m c tiêu c b n c a giáo trình trang b cho sinh viên hi u xây d ng đ c nh ng ph ng pháp l p lu n toán h c đ n, nên s b t đ u nghiên c u toán h c r i r c b ng nh ng ki n th c c b n c a môn logic h c Hi u đ c ph ng pháp l p lu n toán h c có ý ngh a h t s c quan tr ng tin h c Nh ng qui t c c a logic cơng c c s đ có th xây d ng nên ngơn ng l p trình, m ng máy tính, ki m ch ng tính đ n c a ch ng trình nhi u ng d ng quan tr ng khác 1.2.1 nh ngh a & phép toán i t ng nghiên c u c a logic h c nh ng m nh đ M t m nh đ đ kh ng đ nh ho c ho c sai ch không th v a v a sai c hi u m t câu Ví d : Nh ng câu kh ng đ nh sau m t m nh đ : “Hà N i th đô c a Vi t Nam.” 1+1=2 2+2=3 Các m nh đ “Hà N i th đô c a Vi t Nam”, “1 +1 =2 “là nh ng m nh đ đúng, m nh đ “2 +2 =3” sai Nh ng nh ng câu ví d sau s khơng ph i m t m nh đ nh ng câu không cho ta kh ng đ nh c ng ch ng cho ta kh ng đ nh sai “Bây gi m y gi ?” “Hãy suy ngh u cho k l x +1 =2 x+y=z ng” Ch ng 1: Nh ng ki n th c c b n Ta ký hi u nh ng ch A, B, C, D, p, q, r, s nh ng m nh đ Giá tr c a m t m nh đ đ c ký hi u T, giá tr m nh đ sai đ c ký hi u F T p giá tr { T, F } đ c g i giá tr chân lý c a m t m nh đ nh ngh a M nh đ p n v i m nh đ q (ký hi u p ∨ p) m t m nh mà ch nh n giá tr T ch nh t m t hai m nh đ p, q nh n giá tr T M nh đ p ∨ q nh n giá tr F ch c p, q đ u nh n giá tr F nh ngh a M nh đ p h i m nh đ q (ký hi u p ∧ q ) m t m nh đ mà ch nh n giá tr T ch p, q nh n giá tr T M nh đ p ∧ q nh n giá tr F ch ho c p, q, ho c c hai nh n giá tr F nh ngh a Ph đ nh m nh đ p (kí hi u ¬p) m t m nh đ nh n giá tr F ch m nh đ p nh n giá tr T, nh n giá tr F ch p nh n giá tr T nh ngh a M nh đ n lo i c a p q, đ c ký hi u p⊕q, m t m nh đ ch m t p ho c q sai tr ng h p khác l i nh ngh a M nh đ p suy m nh đ q (ký hi u p → q) nh n giá T ch p nh n giá tr F ho c p q nh n giá tr T M nh đ p→q nh n giá tr F ch p nh n giá tr T q nh n giá tr F nh ngh a Hai m nh đ p, q đ c g i kéo theo (ký hi u: p ⇔ q) có giá tr p q có giá tr chân lý sai tr ng h p khác l i Các phép tốn: ∨, ∧, ¬, ⊕,→ ,⇔ có th đ c đ nh ngh a thông qua b ng giá tr chân lý sau: B ng 1.1: B ng giá tr chân lý c a phép tốn ∨, ∧, ¬, ⊕, →,⇔ p q p∨q p∧q ¬p p⊕q p→q p⇔q T T T T F F T T T F T F F T F F F T T F T T T F F F F F T F T T 1.2.2 S t ng đ ng gi a m nh đ M t v n đ h t s c quan tr ng l p lu n toán h c vi c thay th b ng m t m nh đ khác có giá tr chân lý Hai m nh đ có m t giá tr chân lý có th hi u theo cách thông th ng chúng t ng đ ng v ng ngh a Do v y, ta s ti p c n phân lo i m nh đ ph c h p thông qua giá tr chân lý c a chúng nh ngh a M t m nh đ ph c h p mà luôn v i b t k giá tr chân lý c a m nh đ thành ph n c a đ c g i h ng (tautology) M t m nh đ luôn sai v i m i giá tr chân lý c a m nh đ thành ph n c a đ c g i mâu thu n Ch ng 1: Nh ng ki n th c c b n Ví d : m nh đ ph c h p p ∨¬q h ng đúng, p ∧ ¬q mâu thu n giá tr chân lý c a m nh đ luôn đúng, ho c luôn sai nh đ c ch b ng 1.2 B ng 1.2 Ví d v m nh đ h ng & m nh đ mâu thu n p ¬p p ∨¬q p∧¬q T F T F F T T F nh ngh a Hai m nh đ p, q đ c g i t ng đ ng logic v i (ký hi u: p ≡ q) ch c t cho giá tr chân lý c a chúng gi ng Hay m nh đ p→q h ng Ví d : hai m nh đ ¬ (p ∨ q) ¬p ∧ ¬q t chúng đ c th hi n qua b ng sau: ng đ ng logic c t giá tr chân lý c a B ng 1.3 B ng giá tr chân lý đ i v i ¬(p ∨ q) ¬p q p q p∨q ¬(p∨q) ¬p ¬q ¬p∧¬q T T T F F F F T F T F F T F F T T F T F F F F F T T T T Dùng b ng giá tr chân lý đ ch ng minh tính t ng đ ng logic gi a hai m nh đ ph c h p cho ta m t ph ng pháp tr c quan d hi u Tuy nhiên, v i nh ng m nh đ logic ph c h p có k m nh đ c n t i 2k giá tr chân lý đ bi u di n b ng giá tr chân lý Trong nhi u tr ng h p có th ch ng minh tính t ng logic b ng vi c thay th m t m nh đ ph c h p b ng nh ng t ng đ ng logic có tr c B ng ph th c d i đây: ng pháp b ng chân lý, d dàng ch ng minh đ p→ q ≡ ¬p∨ q p⇔q ≡ (p→q)∧(q→p) ¬(¬p) ≡p cs t ng đ ng c a công Ch B ng 1.4 B ng t T NG ng đ ng 1: Nh ng ki n th c c b n ng logic NG TÊN G I Lu t đ ng nh t p∧T≡p p∨F≡p p∨T≡T Lu t nu t p∧F≡F Lu t lu đ ng p∨p≡p p∧p≡p ¬(¬p) ≡ p Lu t ph đ nh kép p∨q≡q∨p Lu t giao hoán p∧q≡q∧p (p ∨ q) ∨ r ≡ p ∨ ( q ∨ r) Lu t k t h p (p ∧ q) ∧ r ≡ p ∧( q ∧ r) p ∨ ( q ∧ r) ≡ (p ∨ q ) ∧ (p ∨ r) Lu t phân ph i p ∧ ( q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r) ¬(p ∧ q ) ≡ ¬p ∨ ¬q Lu t De Morgan ¬(p ∨ q ) ≡ ¬p ∧ ¬q Ví d : Ch ng minh r ng ¬( p ∧ (¬q ∧ q ) t ng đ ng logic v i ¬p ∧ ¬q Ch ng minh: ¬( p ∧ (¬q ∧ q ) ≡ ¬p ∧ ¬(¬p ∧ q ) theo lu t De Morgan th ≡ ¬p ∧ [ ¬(¬p) ∨ ¬q theo lu t De Morgan th ≡ ¬p ∧ [ p ∨ ¬q ] theo lu t ph đ nh kép ≡ (¬p ∧ p ) ∨ (¬p ∧ ¬q) theo lu t phân ph i ≡ F ∨ (¬p ∧ ¬q) ¬p ∧ p ≡ F ≡ ¬p ∧ ¬q M nh đ đ c ch ng minh 1.2.3 D ng chu n t c Các công th c (m nh đ ) t ng đ ng đ c xem nh bi u di n khác c a m t m nh đ d dàng vi t ch ng trình máy tính thao tác cơng th c, c n Ch ng 1: Nh ng ki n th c c b n chu n hóa cơng th c, đ a chúng v d ng bi u di n chu n đ c g i d ng chu n h i M t công th c đ c g i d ng chu n h i n u h i c a m nh đ n Ph ng pháp đ bi n đ i m t công th c b t k v d ng chu n h i b ng cách áp d ng th t c sau: B phép kéo theo (→) b ng cách thay (p→q) b i (¬p→q) Chuy n phép ph đ nh (¬) vào sát ký hi u m nh đ b ng cách áp d ng lu t De Morgan thay ¬(¬p) b i p Áp d ng lu t phân ph i thay cơng th c có d ng (p∨(q∧r)) b i (p∨q)∧(p∨r) Ví d : Ta chu n hóa cơng th c (p→q)∨¬(r∨¬s): (p→q)∨¬(r∨¬s) ≡ (¬p∨q) ∨(¬r∧s) ≡ ((¬p∨q)∨¬r) ∧((¬p∨q)∨s) ≡ (¬p∨q∨¬r)∧(¬p∨q∨s) Nh v y cơng th c (p→q)∨¬(r∨¬s) đ 1.3 V T VÀ L c đ a v d ng chu n h i (¬p∨q∨¬r)∧(¬p∨q∨s) NG T Trong toán h c hay ch ng trình máy tính r t hay g p nh ng kh ng đ nh ch a ph i m t m nh đ Nh ng kh ng đ nh đ u có liên quan đ n bi n Ch ng h n kh ng đ nh: P(x) = “x > 3” không ph i m t m nh đ nh ng t i nh ng giá tr c th c a x = x0 P(x0) l i m t m nh đ Ho c nh ng đo n ch ng trình g p câu l nh: if ( x > ) then x:= x +1; ch ng trình s đ t giá tr c th c a bi n x vào P(x), n u m nh đ P(x) cho giá tr x s đ c t ng lên b i câu l nh x:=x+1, P(x) có giá tr sai giá tr c a x đ c gi nguyên sau th c hi n câu l nh if Chúng ta có th phân tích m i kh ng đ nh thành hai ph n ch ng v ng (hay v t ), câu “x l n h n 3” ta có th coi x ch ng , “l n h n 3” v ng , hàm P(x) đ c g i hàm m nh đ M t hàm m nh đ có th có m t ho c nhi u bi n, giá tr chân lý c a hàm m nh đ t i nh ng giá tr c th c a bi n đ c xác đ nh nh nh ng m nh đ thông th ng Ví d : Cho Q(x, y, z) hàm m nh đ xác đ nh câu x2 = y2 +z2 xác đ nh giá tr chân lý c a m nh đ Q (3, 2, 1), Q ( 5, 4, 3) Gi i: t giá tr c th c a x , y , z vào Q(x,y,z) ta có: Q(3,2,1) m nh đ “32 = 22 + 12” sai Q(3,2,1) m nh đ sai Trong đó, Q (5, 4, 3) m nh đ “52 = 42 + 32” đúng, Q(5,4,3) m nh đ 10 Ch ng 1: Nh ng ki n th c c b n T ng quát, gi s M m t t p h p ph n t M th ng đ c g i tr ng hay mi n xác đ nh c a ph n t thu c M Khi đó, bi u th c P(x) g i v t xác đ nh tr ng M n u thay x b i m t ph n t b t k c a tr ng M P(x) s tr thành m t m nh đ tr ng M Khi t t c bi n c a hàm m nh đ đ u đ c gán nh ng giá tr c th , m nh đ t o s xác đ nh giá tr chân lý Tuy nhiên, có m t ph ng pháp quan tr ng khác đ bi n m t hàm m nh đ thành m t m nh đ mà không c n ph i ki m ch ng m i giá tr chân lý c a hàm m nh đ t ng ng v i giá tr c a bi n thu c tr ng xét Ph ng pháp g i s l ng hoá hay l ng t Chúng ta xét hai l ng t quan tr ng l ng t v i m i (ký hi u:∀), l ng t t n t i (ký hi u:∃ ) nh ngh a L ng t v i m i c a P(x) ký hi u ∀x P(x) m t m nh đ “P(x) v i m i ph n t x thu c tr ng xét” Ví d : Cho hàm m nh đ P(x) = X2 + X + 41 nguyên t Xác đ nh giá tr chân lý c a m nh đ ∀ P(x) v i x thu c không gian bao g m s t nhiên [0 39] Gi i: P(x) v i m i giá tr c a x ∈ [0 39] ⇒ ∀ P(x) Ví d : Cho P(x) hàm m nh đ “x + > x” Xác đ nh giá tr chân lý c a m nh đ ∀ x P(x), không gian s th c Gi i: P(x) v i m i s th c x nên ∀x P(x) nh ngh a L ng t t n t i c a hàm m nh đ P(x) (đ c ký hi u là:∃ x P(x) ) m t m nh đ “T n t i m t ph n t x không gian cho P(x) “ Ví d : Cho P(x) hàm m nh đ “x > 3” Hãy tìm giá tr chân lý c a m nh đ ∃ x P(x) khơng gian s th c Gi i: P(4) “4 > 3” nên ∃ x P(x) Ví d : Cho Q(x) “x + > x” Hãy tìm giá tr chân lý c a m nh đ ∃ x Q(x) không gian s th c Gi i: Q(x) sai v i m i x ∈ R nên m nh đ ∃ x Q(x) sai B ng 1.5: Giá tr chân lý c a l ng t ∀, ∃ ∀x P(x) P(x) v i m i x Có m t giá tr c a x đ P(x) sai ∃x P(x) Có m t giá tr c a x đ P(x) P(x) sai v i m i x D ch nh ng câu thông th ng thành bi u th c logic: D ch m t câu đ c phát bi u b ng ngôn ng t nhiên (câu h i thông th ng) thành m t bi u th c logic có vai trị h t s c quan tr ng xây d ng ngôn ng l p trình, ch ng trình d ch x lý ngơn ng t nhiên Q trình d ch m t câu t ngôn ng t nhiên thành m t bi u th c s làm m t tính t nhiên c a ngôn ng 11 Ch ng 1: Nh ng ki n th c c b n đa s ngôn ng đ u không rõ ràng, nh ng m t bi u th c logic l i r t rõ ràng ch t ch t cú pháp th hi n đ n ng ngh a c a câu i u d n đ n ph i có m t t p h p gi thi t h p lý d a m t hàm xác đ nh ng ngh a cu câu M t câu đ c chuy n d ch thành bi u th c logic, có th xác đ nh đ c giá tr chân lý c a bi u th c logic, thao tác bi u th c logic, bi n đ i t ng đ ng bi u th c logic Chúng ta s minh ho vi c d ch m t câu thơng th nh ng sau Ví d d ch câu “B n không đ tu i” thành bi u th c logic ng thành bi u th c logic thông qua c lái xe máy n u b n cao d i 1.5 mét tr phi b n 18 Gi i: Ta g i p câu : B n đ c lái xe máy q câu : B n cao d r câu : B n 18 tu i Khi đó: Câu h i đ i 1.5m (q ∧ ¬r) → ¬p c d ch là: Ví d : D ch câu “T t c sinh viên h c tin h c đ u h c mơn tốn h c r i r c” Gi i: G i P(x) câu “x c n h c mơn tốn h c r i r c” x đ c xác đ nh không gian c a sinh viên h c tin h c Khi có th phát bi u: ∀ x P(x) Ví d : D ch câu “Có m t sinh viên nhà ký túc xá” l p nh t t t c phịng c a nh t m t Gi i: G i t p sinh viên l p không gian xác đ nh sinh viên x, t p nhà ký túc xá không gian xác đ nh c n nhà y, t p phòng khơng gian xác đ nh phịng z Ta g i P(z,y) “z thu c y”, Q(x,z) “x z” Khi ta có th phát bi u: ∃ x ∃ y ∀ z (P(z,y) → Q(x,z)); 1.4 M T S NG D NG TRÊN MÁY TÍNH Các phép tốn bít: Các h th ng máy tính th ng dùng bit (binary digit) đ bi u di n thơng tin M t bít có hai giá tr chân lý ho c ho c Vì giá tr chân lý c a m t bi u th c logic c ng có hai giá tr ho c (T) ho c sai (F) N u ta coi giá tr có giá tr giá tr sai phép tốn v i bít máy tính đ c t ng ng v i liên t logic M t xâu bít (ho c xâu nh phân) dãy không ho c nhi u bít Chi u dài c a xâu s bít xâu Ví d : Xâu nh 101010011 có đ dài M t s nguyên đu c bi u di n nh m t xâu nh phân có đ dài 16 bít 12 Ch ng 8: M t s toán quan tr ng c a đ th Ch ng trình cài đ t thu t tốn Dijkstra tìm đ ng ng n nh t t m t đ nh đ n t t c đ nh khác c a đ th có h ng v i tr ng s không âm đ c th c hi n nh sau: #include #include #include #include #include #define MAX 50 #define TRUE #define FALSE int n, s, t; char chon; int truoc[MAX], d[MAX], CP[MAX][MAX]; int final[MAX]; void Init(void){ FILE * fp;int i, j; fp = fopen(“ijk1.in”,”r”); fscanf(fp,”%d”, &n); printf(“\n So dinh:%d”,n); printf(“\n Ma tran khoang cach:”); for(i=1; i