Toán rời rạc chương 5 bài toán liệt kê

50 411 0
Toán rời rạc chương 5  bài toán liệt kê

Đ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

TOÁN R I R C CH NG BÀI TOÁN LI T KÊ Lecturer: PhD Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University N I DUNG CH NG 5.1 Gi i thi u toán 5.2 Nh c l i ki n th c đ quy 5.3 Sinh hoán v - Sinh t h p 5.4 Thu t toán quay lui Bài toán x p h u 5.5 Bài t p ch ng @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.1 Gi i thi u toán (1/3)  C n có gi i thu t đ l nl c u hình quan tâm  t xây d ng đ BÀI TOÁN LI T KÊ i v i toán li t kê, c n đ m b o nguyên t c:  Không đ c l p l i m t c u hình  Không đ c b sót m t c u hình  Khó kh n c a ph ng pháp s “bùng n t h p”! c t t c @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.1 Gi i thi u toán (2/3) Ví d 5.1:  Cho t p h p s a1, a2, , an s M Hãy tìm t t c c a dãy s {an} cho t ng s ph n t p k ph n t t t p b ng M Gi i ví d 5.1  S t p k ph n t  C n t s c a t p g m n ph n t C(n,k) C(n,k) t p k ph n t đ l y nh ng t p có t ng ph n t b ng M  th c hi n đ c toán c n li t kê c u hình @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.1 Gi i thi u toán (3/3) Ví d 5.2:  M t ng i bán hàng t i thành ph Ng i có th b t đ u hành trình c a t i m t thành ph nh ng ph i qua thành ph theo b t k th t mà ng i mu n Hãy ch l trình ng n nh t mà ng i có th Gi i ví d 5.2  Có t t c 7! = 5040 cách c a ng i bán hàng  Tuy nhiên 5040 cách ph i t toàn b đ ch m t hành trình ng n nh t @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nh c l i ki n th c đ quy (1/9) 5.2.1 nh ngh a b ng đ quy (1/4)  Trong th c t , nhi u đ i t m t cách t t  K ng mà khó có th đ nh ngh a ng minh, nh ng l i d dàng đ nh ngh a đ i ng qua thu t đ nh ngh a đ i t ng qua đ c g i k thu t đ qui (recursion)  Các gi i thu t đ qui th  b c phân tích  b c thay th ng ng đ c xây d ng qua hai b cl i @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University c: 5.2 Nh c l i ki n th c đ quy (2/9) 5.2.1 nh ngh a b ng đ quy (2/4) Ví d 5.2.3: tính t ng S(n) = + + + n  Gi i quy t toán:  B  c phân tích: tính toán đ c S(n), c n tính S(n-1), sau tính S(n) = S(n-1) +n   Và cu i S(1) có k t qu  B c thay th ng  Xu t phát t c l i: S(1) thay th ng c l i xác đ nh S(n):  S(1) =  S(2) = S(1) +   S(n) = S(n - 1) + n @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nh c l i ki n th c đ quy (3/9) 5.2.1 nh ngh a b ng đ quy (3/4) Ví d 5.2.4:  nh ngh a hàm b ng đ quy: f(n) = n! Phân tích th c hi n:  Ta có f(0) =  Vì (n+1) ! = 2.3 n(n+1) = n! (n+1), nên ta có: f(n+1) = ( n+1) f(n) v i n nguyên d @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University ng 5.2 Nh c l i ki n th c đ quy (4/9) 5.2.1 nh ngh a b ng đ quy (4/4) Ví d 5.2.5: T p h p đ nh ngh a b ng đ quy: nh ngh a đ quy t p xâu: Gi s  b ch Khi * đ * t p xâu c đ nh ngh a b ng đ quy nh sau: *,   wx *n uw xâu r ng * x * @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.2 Nh c l i ki n th c đ quy (5/9) 5.2.2 Gi i thu t đ quy (1/5) Khái ni m:  M t thu t toán đ c g i đ quy n u gi i toán b ng cách rút g n toán ban đ u thành toán t ng t nh v y sau m t s h u h n l n th c hi n  Trong m i l n th c hi n, d li u đ u vào ti m c n t i t p d li u d ng 10 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Gi i thu t quay lui Bài toán s p h u (2/15) 5.4.1 Gi i thu t quay lui (2/9)  Chú ý: i m quan tr ng c a thu t toán ph i ghi nh  t i m i c qua, nh ng kh n ng th đ tránh trùng b l p  Nh ng thông tin c n đ c l u tr theo c x p (stack) 36 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University c u ng n 5.4 Gi i thu t quay lui Bài toán s p h u (3/15) 5.4.1 Gi i thu t quay lui (3/9) Gi mã c a gi i thu t quay lui, xác đ nh ph n t th i: void Try( int i ) { int j; for ( j = 1; j < ni; j ++) { if ( ) { if (i==n) ; else Try(i+1); } } } 37 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Gi i thu t quay lui Bài toán s p h u (4/15) 5.4.1 Gi i thu t quay lui (4/9) Ví d 5.4.1: Li t kê dãy nh phân đ dài n G i ý: i d ng b1,b2, bn bi{0,1}  Bi u di n dãy nh phân d  Th t c đ quy đ xác đ nh bi, bi = ho c bi = L u ý: giá tr m c nhiên đ c ch p nh n mà không ph i tho mãn u ki n 38  Th t c kh i t o n, kh i t o bi n đ m s k t qu có đ  Th t c in k t qu @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University c 5.4 Gi i thu t quay lui Bài toán s p h u (5/15) 5.4.1 Gi i thu t quay lui (5/9) Ví d 5.4.1 (ti p): Li t kê dãy nh phân đ dài n Gi i thích b ng đ th : Cây tìm ki m l i gi i li t kê dãy nh phân đ dài 39 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5.4 Gi i thu t quay lui Bài toán s p h u (6/15) 5.4.1 Gi i thu t quay lui (6/9) Ví d 5.4.1 (ti p): Li t kê dãy nh phân đ dài n Mã ch ng trình: #include #include using namespace std; void Result(int *B, int n){ for(int i=0;i[...]... Sinh t h p (20/20) 5. 3.3 Sinh các t h p (9/9) Ví d 5. 3.7: Li t kê các t h p ch p 3 t t p 1, 2, 3, 4, 5 L i gi i:  Ta có:  Áp d ng thu t toán b t đ u t t h p {1, 2, 3} ta thu đ h p c n tìm: 1 2 3 1 2 4  1 2 5  1 3 4  1 3 5  1 45 2342 35 2 45 3 45 34 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University c t t c các t 5. 4 Gi i thu t quay lui Bài toán s p h u (1/ 15) 5. 4.1 Gi i thu t quay... Don Technical University 5. 2 Nh c l i ki n th c đ quy (8/9) 5. 2.2 Gi i thu t đ quy (4 /5) Ví d 5. 2.8: Thu t toán đ quy tính n!  o n mã c a gi i thu t: long factorial( int n){ if (n ==1) return 1; else return n * factorial(n-1); } 13 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5. 2 Nh c l i ki n th c đ quy (9/9) 5. 2.2 Gi i thu t đ quy (5/ 5) Ví d 5. 2.9: Thu t toán đ quy tính s fibonacci... University 5. 3 Sinh hoán v - Sinh t h p (7/20) 5. 3.2 Sinh các hoán v (3/9) Ví d 5. 3.2:  Xét t p A = 1, 2, 3, 4, 5 , khi đó:  Hoán v 231 45 c a t p là đi tr  vì nh ng hoán v này trùng nhau c hoán v 2 351 4, hai v trí đ u tiên, nh ng s 1 trí th ba c a hoán v đ u nh h n s 5 c ng v sau  Hoán v 4 153 2 là đi tr 21 c 52 143 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University v v trí th ba c a hoán 5. 3.. .5. 2 Nh c l i ki n th c đ quy (6/9) 5. 2.2 Gi i thu t đ quy (2 /5) Ví d 5. 2.6: Tính an b ng gi i thu t đ quy, v i m i s th c a và s t nhiên n  o n mã c a gi i thu t: double power( float a, int n ){ if ( n==0 ) return 1; else return a *power(a,n-1); } 11 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5. 2 Nh c l i ki n th c đ quy (7/9) 5. 2.2 Gi i thu t đ quy (3 /5) Ví d 5. 2.7: Thu t toán. .. Quy Don Technical University 5. 3 Sinh hoán v - Sinh t h p (4/20) 5. 3.1 Gi i thi u thu t toán sinh (4/4) Trong ví d 5. 3.1, gi mã thu t toán sinh k ti p đ trong th t c sau: void Next_Bit_String( int *B, int n ){ i = n; while (bi == 1 ) { bi = 0 i = i-1; } bi = 1; } 18 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University c mô t 5. 3 Sinh hoán v - Sinh t h p (5/ 20) 5. 3.2 Sinh các hoán v (1/9)... University 5. 3 Sinh hoán v - Sinh t h p (17/20) 5. 3.3 Sinh các t h p (4/9) Thu t toán li t kê t p con k ti p m ph n t c a t p n ph n t : void Next_Combination( int *A, int n){ i = n; while ( ai == n-k+i) i = i -1; ai = ai + 1; for ( j = i+1; j an-1 (và an-1 ...N I DUNG CH NG 5. 1 Gi i thi u toán 5. 2 Nh c l i ki n th c đ quy 5. 3 Sinh hoán v - Sinh t h p 5. 4 Thu t toán quay lui Bài toán x p h u 5. 5 Bài t p ch ng @Copyrights by Dr Ngo... else Try(i+1); } } 45 @Copyrights by Dr Ngo Huu Phuc, Le Quy Don Technical University 5. 4 Gi i thu t quay lui Bài toán s p h u (12/ 15) 5. 4.2 Bài toán s p h u (1/4) Bài toán: Li t kê t t c cách x... University 5. 5 Bài t p ch ng Bài Li t kê t t c t p c a t p 1, 2, ,n Bài Li t kê t t c xâu nh phân đ dài n có t ng bít b ng k≤n Bài Li t kê t t c xâu nh phân đ dài không ch a hai s liên ti p Bài Li t kê

Ngày đăng: 06/12/2015, 20:49

Từ khóa liên quan

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

Tài liệu liên quan