bài giảng tin học đại cương chương 3 lý thuyết thuật toán trần quang hải bằng

26 943 0
bài giảng tin học đại cương chương 3 lý thuyết thuật toán trần quang hải bằng

Đ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

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

Ngày đăng: 21/10/2014, 09:50

Từ khóa liên quan

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

Tài liệu liên quan