Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
525,64 KB
Nội dung
TIN H C ð I CƯƠNG Chương 3: Lý thuy t thu t toán bangtqh@utc2.edu.vn N i dung Khái ni m thu t tốn Chương trình máy tính, ngơn ng l p trình Tính ch t c a thu t tốn Các cách bi u di n thu t toán Thi t k phân tích thu t tốn Đ quy thu t toán đ quy M t s toán tìm ki m, s p x p đơn gi n Bài t p bangtqh@utc2.edu.vn Tin h c đ i cương - Chương Thu t tốn gì? Thu t toán, thu t gi i, hay gi i thu t, ñ u dùng đ ch m t thu t ng ti ng Anh có tên ALGORITHM Chúng ta s tìm hi u: q Thu t tốn theo cách hi u thông thư ng q Các thao tác thu t toán q Đ nh nghĩa thu t toán tin h c bangtqh@utc2.edu.vn TinTinchĐ ci đ i cương - Chương h cương - Chương 3 3/51 Thu t tốn - cách hi u thơng thư ng q B t c cơng u c u c n ph i đư c gi i quy t m t cách khoa h c Theo nghĩa r ng, khái ni m “thu t toán” (algorithm) đư c s d ng m i nơi, khơng riêng lĩnh v c tin h c q Theo cách hi u thơng tư ng Thu t tốn m t lo t thao tác (operation) có th t (order) nh m gi i quy t m t yêu c u q Ví d : “Thu t tốn n u cơm” – Bư c 0: Ư c lư ng g o c n thi t – Bư c 1: Vo g o – Bư c 2: Cho g o nư c thích h p vào n i cơm n(NCĐ) – Bư c 3: C m n, chuy n ch ñ “cook” – Bư c 4: Ch ñ n NCĐ chuy n sang ch ñ “warm” – Bư c 5: Ch thêm 10 phút n a – Bư c 6: Cơm chín, k t thúc bangtqh@utc2.edu.vn Tin h c đ i cương - Chương Trò chơi quân q Ch n quân ng u nhiên b 52 quân q Yêu c u: Hãy tìm quân l n nh t s quân hi n có – M i l n ch ñư c l t quân s quân – Ghi l i trình tìm ki m theo m i bư c bangtqh@utc2.edu.vn Tin h c đ i cương - Chương Trò chơi quân … Quân l n nh t là: bangtqh@utc2.edu.vn Tin h c đ i cương - Chương Trò chơi quân (tt) So sánh bangtqh@utc2.edu.vn Quân l n nh t: Tin h c đ i cương - Chương Trò chơi quân (tt) So sánh bangtqh@utc2.edu.vn Quân l n nh t: Tin h c đ i cương - Chương Trò chơi quân (tt) So sánh bangtqh@utc2.edu.vn Quân l n nh t: Tin h c đ i cương - Chương Trò chơi quân (tt) So sánh bangtqh@utc2.edu.vn Quân l n nh t: Tin h c đ i cương - Chương 10 Các thao tác thu t toán q Thao tác tu n t (sequential operation): M t công vi c đư c xác đ nh rõ ràng, th c hi n xong chuy n sang công vi c khác q Thao tác ki m tra u ki n (conditional operation): Ki m tra u ki n đưa có tho mãn hay không đ quy t đ nh thao tác ti p theo q Thao tác l p (iterative operation): Quay tr l i bư c dãy thao tác – M t thao tác có th đư c l p l p l i nhi u l n t i m t u ki n đư c tho mãn bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 11 Đ nh nghĩa gi i thu t – (Cách 1) q Gi i thu t m t dãy câu l nh ch t ch rõ ràng xác đ nh m t trình t thao tác m t đ i tư ng cho sau m t s bư c h u h n th c hi n, ta thu đư c k t qu mong mu n – Câu l nh (statement): đơn v thao tác, tính tốn, x lý – Trình t rõ ràng (well-ordered): th c hi n xong bư c m i chuy n sang bư c khác, không nh p nh ng – Đ i tư ng (object): d ki n c a toán, d li u trung gian, k t qu ,… – K t qu (result): Thông tin, l i gi i cho toán,… bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 12 Đ nh nghĩa gi i thu t – Cách q Gi i thu t b t c th t c tính tốn (computational procedure) nh n d li u vào (input) tr thông tin (output) q Gi i thu t dãy thao tác x lý d li u đ có đư c thơng tin mong mu n q Ví d : “Bài tốn s p x p dãy s ” – Input: Dãy s – Output: Dãy s ñã s p x p INPUT bangtqh@utc2.edu.vn ALGORITHM Tin h c đ i cương - Chương OUTPUT 13 Chương trình máy tính q Máy tính? – Làm theo “l nh” c a ngư i – Đi m m nh tính tốn v i t c đ cao (hàng t phép tính giây) q Làm th đ “ra l nh” cho máy tính? – L p chương trình cho máy tính q Chương trình ? – Nói cho máy tính bi t ph i làm gì, th nào,… bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 14 Ngơn ng l p trình q Mu n “ra l nh” cho máy tính: – S d ng m t “ngơn ng ” chung language) ngơn ng l p trình (programming – L p trình (computer programming) • Dùng ngơn ng l p trình l p nên chương trình ho t đ ng cho máy tính q Các th h c a ngơn ng l p trình – Th h (b c th p): ngôn ng máy, assembly – Th h 2: G n v i ngôn ng t nhiên hơn, ph c v nh ng nhu c u l p trình nh t đ nh (FORTRAN, COBOL, ALGOL,… ) – Th h 3: G n gũi, v n (PASCAL, C, C++,…) – Th h 4: Truy v n, h tr quy t đ nh, l p trình trí tu nhân t o (SQL, LISP, PROLOG,…) bangtqh@utc2.edu.vn T Tin h c đ i cương - Chương 15 gi i thu t đ n chương trình q Gi i thu t ch “phương pháp” q S d ng gi i thu t th đ gi i quy t toán – C n ph i có máy tính – L p trình: Mơ t (cài đ t) gi i thu t lên máy tính q Bi u di n đ i tư ng x lý b i d li u (data) chương trình (có nhi u ki u d li u v i c u trúc khác nhau) q Thu t gi i + c u trúc d li u = chương trình DATA STRUCTURES bangtqh@utc2.edu.vn + ALGORITHMS = Tin h c đ i cương - Chương PROGRAM 16 Chương trình vi t b ng ngôn ng bangtqh@utc2.edu.vn C Tin h c đ i cương - Chương 17 “Gi i thu t n u cơm” q Gi i thu t n u cơm (đ phịng trư ng h p có thêm khách) – Bư c 0: Ư c lư ng s g o c n thi t – Bư c 1: Vo g o – Bư c 2: Cho g o nư c thích h p vào n i cơm n(NCĐ) – Bư c 3: C m n, chuy n ch ñ “cook” – Bư c 4: Ch ñ n NCĐ chuy n sang ch ñ “warm” – Bư c 5: Ch thêm 10 phút n a – Bư c 6: Cơm chín N u khơng có thêm khách sang bư c – Bư c 7: Quay l i bư c – Bư c 8: K t thúc q Nh n xét: Bư c thao tác ki m tra u ki n bư c thao tác l p bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 18 Các tính ch t c a thu t tốn q Tính h u h n d ng – M t thu t toán b t kỳ ph i đ m b o d ng sau m t s h u h n bư c q Tính đ n – Thu t toán ph i đ m b o gi i quy t toán m t cách đ n, cho k t qu “chính xác” “đ y đ ” theo yêu c u q Tính đơn gi n hi u qu – Đơn gi n: D hi u, d l p trình – Hi u qu : Tiêu t n th i gian tài nguyên máy tính bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 19 Các tính ch t c a thu t tốn (tt) q Tính xác đ nh: – M i thao tác th c hi n thu t toán ph i đư c xác đ nh rõ ràng, khơng gây hi u l m q Tính ph d ng: – M i thu t toán ph i đ m b o gi i quy t đư c nhi u toán đ ng d ng, nhi u b s li u khác q Ln có ñ i lư ng vào (input/output) – M i thu t toán đ u ph i minh h a cách nh n s li u vào đ tính tốn (input) sau thơng báo k t qu tìm đư c (output) bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 20 Phương pháp li t kê t ng bư c q Các thao tác c a gi i thu t đư c li t kê t ng bư c q T i m i bư c, s vi c ph i làm d ng ngôn ng q Bư c đ ng trư c (có s trư c th t t nhiên đ di n t cơng nh hơn) đư c th c hi n q Ưu c m – D hi u, d làm – Ph thu c vào “cách hành văn” c a ngư i di n đ t – V i nh ng gi i thu t ph c t p, cách di n đ t tr nên rư m rà – … bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 23 Ví d q Gi i thu t “Tìm v trí xu t hi n đ u tiên c a m t s nguyên dãy s nguyên ñã cho”: – Bư c 1: Nh p dãy s nguyên a1, a2, …., aN – Bư c 2: Nh p s nguyên s – Bư c 3: Gán v trí p ban đ u = v trí i xét = p = 0, i=1 – Bư c 4: So sánh v i s • N u =s ghi nh n v trí p = i Sang Bư c • N u ≠ s i < N gán i=i+1 l p l i bư c 4, ngư c l i sang Bư c – Bư c 5: N u p ≠ đưa v trí c n tìm p, ngư c l i thơng báo khơng tìm th y giá tr s dãy s cho – Bư c 6: K t thúc bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 24 Bi u di n thu t toán b ng sơ đ kh i q S d ng hình kh i đ minh ho cho l nh hay thao tác q S d ng mũi tên đ di n đ t th t th c hi n q Đây cách di n đ t khoa h c, có tính nh t quán cao q Các hình kh i b n – – – – – – Kh Kh Kh Kh Kh Kh i b t đ u i k t thúc i thao tác c th i ki m tra u ki n i vào/ra d li u i g i chương trình q Các ký pháp bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 25 Các hình kh i b n q Kh i b t đ u k t thúc q G i chương trình A (ít dùng) Begin A End q Th c hi n công vi c A A q Ki m tra u ki n – Tuỳ thu c u ki n (Đúng hay Sai) mà r nhánh thích h p q Vào/ra d li u Đi u ki n Đúng Sai bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 26 M t s c u trúc b n q C u trúc r nhánh q C u trúc l p while…do… If… then… §iỊu KiƯn If… then… else… §óng Xư lý nÕu ®óng repeat…until… Sai Xư lý nÕu sai bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 27 Tính chu vi di n tích HCN q Phương pháp li t kê – B1 Nh p hai c nh a,b – B2 Tính chu vi • C = 2*(a+b) – B3 Tính di n tích • S = a*b – B4 In chu vi C – B5 In di n tích S – K t thúc q S kh i Begin Đọc cạnh a,b C := 2*(a+b) S := a*b In C,S End bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 28 Lưu đ thu t gi i tính t ng N s t q Cách nhiên ñ u tiên q Cách bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 29 Tính chu vi, di n tích tam giác q Lưu đ thu t toán q Phương pháp li t kê – B1 Nh p c nh a,b,c – B2 Ki m tra xem a,b,c có ph i ba c nh tam giác khơng • N u (a+b>c) (b+c>a) (a+c>b) sang bư c • N u khơng thơng báo “khơng t o thành tam giác” k t thúc – B3 Tính chu vi C = (a+b+c) – B4 Tính n a chu vi p = C/2 – B5 Tính di n tích tam giác theo cơng th c Hê-rơng • S= p * ( p − a ) * ( p − b) * ( p − c) p *( p − a) *( p − b) *( p − c) – B6 In k t qu C,S bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 30 Bi u di n thu t tốn b ng gi ngơn ng q Gi ngôn ng – D a ngôn ng l p trình b c cao – G n v i ngơn ng t nhiên c a ngư i – Ví d : • Ngơn ng gi Pascal (t a Pascal) có ký pháp gi ng v i ngơn ng l p trình Pascal, đư c rút g n cho d di n đ t q Gi ngôn ng đư c đưa v i m c đích di n đ t gi i thu t cho g n v i ngơn ng l p trình ngôn ng t nhiên q S d ng gi ngôn ng n vi c chuy n t gi i thu t sang chương trình d dàng bangtqh@utc2.edu.vn Tin h c đ i cương - Chương Gi i thu t tính t ng N s t 31 nhiên ñ u tiên Nh p N i:=0 S:=0 REPEAT S:=S+i i:=i+1 UNTIL (i>N) In S bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 32 Thi t k phân tích thu t tốn q Q trình vi t chương trình gi i tốn: – Phân tích yêu c u toán – Thi t k gi i thu t – Vi t chương trình – Ch y th , đánh giá q Thi t k gi i thu t t yêu c u c a m t toán, di n đ t m t gi i thu t gi i quy t toán – Mơ-đun hố vi c gi i quy t toán – Tinh ch nh t ng bư c q Phân tích gi i thu t – Xem xét tiêu chu n c a gi i thu t có đư c tho mãn khơng, n u có ñ n m c đ bangtqh@utc2.edu.vn Thi t k t Tin h c đ i cương - Chương 33 xu ng q Các toán l n địi h i gi i thu t có quy mơ l n q Mơ-đun hố – Bài tốn = nhi u mô-đun – Mô-đun l n = nhi u mô-đun – Vi c gi i quy t m t mơ-đun m c th p nh t “đ đơn gi n” Chia đ tr BÀI TOÁN A A1 A2.1 B A2 A2.2 C C1 C2 A2.3 q Thi t k t xu ng (topdown design): Bài toán đư c xem xét t t ng quát đ n chi ti t bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 34 Bài tốn gi i phương trình b c GI I PHƯƠNG TRÌNH B C II NH P H S TRƯ NG H P SUY BI N X LÝ TRƯ NG H P KHÔNG SUY BI N TÍNH DELTA bangtqh@utc2.edu.vn HI N TH K T QU TÍNH NGHI M THEO DELTA Tin h c đ i cương - Chương 35 Phương pháp tinh ch nh t ng bư c q Phương pháp tinh ch nh t ng bư c (stepwise refinement) – Ban đ u, s d ng ngơn ng t nhiên đ di n t nh ng cơng vi c c a gi i thu t – Các bư c sau, công vi c đư c chi ti t hoá d n d n, ngơn ng t nhiên đư c thay th d n d n b ng gi ngôn ng – Cu i cùng, gi ngơn ng đư c chuy n sang ngơn ng l p trình q Đ c m – Th hi n rõ ý tư ng thi t k t xu ng – G n li n vi c thi t k gi i thu t v i vi c l p trình bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 36 S p x p dãy theo th t tăng d n q Phác th o “thô” v i nh ng “ý tư ng b n” – “T dãy s chưa đư c s p x p, tìm s nh nh t ñưa lên ñ u” – L p l i quy trình t i dãy chưa đư c s p x p tr thành r ng q Ban đ u, dãy chưa s p x p dãy ñã cho, dãy s p x p r ng q Lưu tr dãy b ng “m ng” (danh sách s ), ñưa s nh nh t (aj) lên đ u danh sách ñ i ch v i s đ u tiên q Đ i ch – S trung gian := aj – aj := s ñ u tiên – S ñ u tiên : = s trung gian q …, cu i ta đư c chương trình v i ngơn ng bangtqh@utc2.edu.vn c th Tin h c đ i cương - Chương 37 Phân tích gi i thu t q Tính đ n – Ch y th nghi m, ñ i chi u k t qu phát hi n đư c tính sai – Dùng cơng c tốn h c đ ch ng minh tính đ n q Tính đơn gi n – Gi i thu t có d hi u, d l p trình khơng? q Tính hi u qu – Đơn gi n chưa ch c hi u qu – Đ i v i nhi u tốn, tính hi u qu quan tr ng, gi i thu t đơn gi n l i gây t n tài nguyên, ch y ch m – Th i gian tính tốn ð ph c t p tính tốn – Nh ng gi i thu t hi u qu ph i có đ ph c t p (th i gian) tính tốn ch p nh n đư c q Tính d ng – Ch ng minh, suy lu n – Ch y th bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 38 Đ quy gi i thu t đ quy q M t đ i tư ng đ quy n u bao g m ho c đư c đ nh nghĩa b i q Ví d : – Trong chương trình th i s vơ n, đơi ta th y l i hình nh c a hình phía sau phát viên – Đ nh nghĩa s t nhiên: • s t nhiên • N s t nhiên n u N-1 s t nhiên – Đ nh nghĩa giai th a: • 0! = • N! = N(N-1)! bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 39 Gi i thu t đ quy q L i gi i c a tốn T có đư c d a l i gi i m t tốn T’ l i gi i m t l i gi i đ quy gi i thu t g i gi i thu t đ quy q Bài toán T’ ph i nh tốn T q Ví d “Bài tốn tính N!” Tính 3! – Tn = tính N! • Tính Tn-1 = tính (N-1)! Tính 2! 3! = x 2! – Tính Tn-2 = (N-2)! » … Tính 1! 2! = x 1! – Tn-1 = Tn-2 x (N-1) • Tn = Tn-1 x N bangtqh@utc2.edu.vn Tính 0! = 1! = x 0! Tin h c đ i cương - Chương 40 Bài toán “Tháp Hà N i” q Có c c A,B,C q Có N đĩa t i c c A N – Kích thư c đĩa khác – Đĩa to đ t dư i đĩa bé A q C c B,C khơng có đĩa q u c u – Chuy n N đĩa t c c A sang c c C – M i l n ch ñư c chuy n m t đĩa t c c sang c c khác – Không đư c x p đĩa to lên đĩa bé B C bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 41 Bài toán “Tháp Hà N i” – L i gi i đ quy q Đánh s đĩa theo th t t dư i lên q N uN=1 – Chuy n đĩa nh t (đĩa 1) t c t A sang c t C q N uN=2 – Chuy n đĩa t c t A sang c t B – Chuy n đĩa t c t A sang c t C – Chuy n đĩa t c t B sang c t C q N b t kỳ – Chuy n N-1 đĩa t c c A sang c c B – Chuy n đĩa t c c A sang c c C – Chuy n N-1 đĩa t c c B sang c c C bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 42 M t s toán tìm ki m, s p x p q Tìm giá tr l n nh t, nh nh t c a dãy s ? – Cho m t dãy s – Hãy cho bi t giá tr l n nh t nh nh t c a dãy s ? q Tìm v trí xu t hi n c a m t s m t dãy s ? – Cho m t dãy s m t dãy s – Ch v trí xu t hi n c a s ñã cho dãy? q S p x p dãy s – Cho m t dãy s – S p x p dãy theo th t tăng (gi m) d n? bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 43 Tìm giá tr l n nh t, nh nh t q Ý tư ng – Gán cho giá tr l n nh t (nh nh t) gi ñ nh giá tr c a ph n t ñ u tiên dãy – Duy t dãy tìm ph n t l n (nh hơn) giá tr l n nh t gi ñ nh ghi nh n ph n t l n (nh hơn) làm giá tr l n nh t (nh nh t) gi ñ nh m i – Duy t xong dãy, giá tr l n nh t (nh nh t) gi đ nh giá tr c n tìm bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 44 Lưu đ thu t gi i (tìm giá tr l n nh t) BEGIN Nh p N, A A dãy s có N ph n t Gi ñ nh giá tr l n nh t ph n t ñ u tiên Max := A[1] i := L n lư t so sánh tìm ph n t gi ñ nh m i i>N Đ K t thúc dãy, ph n t gi đ nh giá tr l n nh t In Max S Max a[j] Chuy n sang s p x p dãy ti p theo Đ tmp:=a[i] a[i]:=a[j] a[j]:=tmp In a END bangtqh@utc2.edu.vn Đ i ch a[i] a[j] Tin h c đ i cương - Chương 49 Bài t p: Nêu ý tư ng + Lưu đ gi i thu t q Tìm t t c v trí xu t hi n c a ph n t X dãy A – Input: Dãy s A, ph n t X – Output: Các v trí xu t hi n c a X A q Đ m s ph n t âm/không âm c a dãy s A – Input: Dãy s A – Output: S lư ng ph n t âm, s lư ng ph n t khơng âm A q Tính n! b ng gi i thu t l p – Input: n – Output: n! bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 50 Bài t p – Bi u di n thu t toán b ng sơ đ kh i q V sơ ñ bi u di n thu t tốn tìm trung bình c ng c a dãy s a1, a2, …, an q V sơ ñ bi u di n thu t tốn tìm TBC s ch n chia h t cho dãy s a1, a2, …, an q V sơ ñ bi u di n thu t toán đ m xem dãy s a1, a2, …, an có c p có ch s liên ti p (vd: a2, a3) th a u ki n tích chúng chia h t t ng c a chúng q V sơ ñ kh i bi u di n thu t toán ki m tra xem s nguyên N có s nguyên t hay không? bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 51 ... u thơng thư ng q Các thao tác thu t toán q Đ nh nghĩa thu t toán tin h c bangtqh@utc2.edu.vn TinTinchĐ ci đ i cương - Chương h cương - Chương 3 3/51 Thu t toán - cách hi u thông thư ng q B t... đ tr BÀI TOÁN A A1 A2.1 B A2 A2.2 C C1 C2 A2 .3 q Thi t k t xu ng (topdown design): Bài toán đư c xem xét t t ng quát đ n chi ti t bangtqh@utc2.edu.vn Tin h c đ i cương - Chương 34 Bài toán gi... Tin h c đ i cương - Chương Trò chơi quân … Quân l n nh t là: bangtqh@utc2.edu.vn Tin h c đ i cương - Chương Trò chơi quân (tt) So sánh bangtqh@utc2.edu.vn Quân l n nh t: Tin h c đ i cương - Chương