1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng tin học đại cương chương 3 ths trần quang hải bằng

18 3 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 621,86 KB

Nội dung

Dùng cho nhóm ngành: Cơng trình + Cơ khí TIN HỌC ĐẠI CƯƠNG Chương 3: Tổng quan Phương pháp giải tốn máy tính bangtqh@utc2.edu.vn Nội dung Khái niệm vấn đề tốn Các bước giải tốn máy tính Thuật toán thuật giải Biểu diễn thuật toán thuật giải Một số thuật toán thường gặp bangtqh@utc2.edu.vn Tin học đại cương - Chương 2.1 Khái niệm toán thuật toán Bài toán – Trong phạm vi tin học, tốn hiểu cơng việc mà ta muốn máy tính thực – yếu tố quan trọng tốn: • Input: liệu đưa vào • Output: kết cần tìm tốn – Vd: Viết dịng chữ hình Bài tốn giải phương trình bậc 2; Bài toán quản lý điểm v.v Thuật toán – Là dãy hữu hạn thao tác xếp theo trình tự xác định cho thực dãy thao tác từ Input tốn ta có Output cần tìm bangtqh@utc2.edu.vn Tin học đại cương - Chương 3 2.2 Các bước giải toán Bước - Xác định toán – Xác định rõ Input Output toán – Cần xác định input, output cách cẩn thận ảnh hưởng tới việc lựa chọn thuật tốn giải Trong tin học, việc xác định input/output cịn phụ thuộc vào ngơn ngữ lập trình sử dụng Bước - Thiết kế thuật toán – Là bước quan trọng để giải toán – Một tốn có nhiều thuật tốn để giải – Cần quan tâm tới tính hiệu thuật toán (về nhớ, thời gian thực v.v) bangtqh@utc2.edu.vn Tin học đại cương - Chương 2.2 Các bước giải toán (tt) Bước – Viết chương trình – Lựa chọn ngơn ngữ lập trình phù hợp với nhu cầu khả thân – Cần tận dụng tiện ích mà IDE (Integrated Deverlopment Environment) Bước – Hiệu chỉnh, làm tinh chương trình – Cần đưa nhiều số liệu khác vào kiểm thử – Đơi cần có kinh nghiệm đầu óc phán đốn lỗi Bước – Viết tài liệu – Là hướng dẫn sử dụng, kết thử nghiệm, mô tả chi tiết thuật toán bangtqh@utc2.edu.vn Tin học đại cương - Chương 2.3 Thuật toán – Thuật giải Định nghĩa: – Thuật toán (algorithm) dãy hữu hạn thao tác xếp theo trình tự xác định cho thực dãy thao tác từ Input tốn ta có Output cần tìm Các đặc trưng thuật toán – – – – Tính hữu hạn Tính xác định Tính đắn Tính chi tiết: thao tác thuật toán phải chặt chẽ, đủ chi tiết để đối tượng thực thuật tốn – Tính phổ dụng bangtqh@utc2.edu.vn Tin học đại cương - Chương Từ giải thuật đến chương trình Giải thuật “phương pháp” Sử dụng giải thuật để giải tố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 Biểu diễn đối tượng xử lý liệu (data) chương trình (có nhiều kiểu liệu với cấu trúc khác nhau) Thuật giải + cấu trúc liệu = chương trình DATA STRUCTURES bangtqh@utc2.edu.vn + ALGORITHMS = PROGRAM Tin học đại cương - Chương Có phải tốn có thuật giải ? Có tốn khơng có giải thuật tổng qt để giải Có tốn chưa có giải thuật hữu hiệu để giải Có tốn chưa có giải thuật tìm lời giải bangtqh@utc2.edu.vn Tin học đại cương - Chương 2.4 Biểu diễn thuật toán Liệt kê bước Sử dụng sơ đồ khối Sử dụng giả ngơn ngữ lập trình bangtqh@utc2.edu.vn Tin học đại cương - Chương Phương pháp liệt kê bước Các thao tác giải thuật liệt kê bước Tại bước, sử dụng ngôn ngữ tự nhiên để diễn tả cơng việc phải làm Bước đứng trước (có số thứ tự nhỏ hơn) thực trước Ưu nhược điểm – Dễ hiểu, dễ làm – Phụ thuộc vào “cách hành văn” người diễn đạt – Với 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 10 Ví dụ Giải thuật “Tìm vị trí xuấ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 11 Biểu diễn thuật toán sơ đồ khối Sử dụng hình khối để minh hoạ cho lệnh hay thao tác Sử dụng mũi tên để diễn đạt thứ tự thực Đây cách diễn đạt khoa học, có tính qn cao Các hình khối – – – – – – Khối bắt đầu Khối kết thúc Khối thao tác cụ thể Khối kiểm tra điều kiện Khối vào/ra liệu Khối gọi chương trình Các ký pháp bangtqh@utc2.edu.vn Tin học đại cương - Chương 12 Các hình khối Gọi chương trình A (ít dùng) Khối bắt đầu kết thúc Begin A End Khối thực thi công việc A Khối kiểm tra điều kiện – Tuỳ thuộc điều kiện (Đúng hay Sai) mà rẽ nhánh thích hợp A Khối input/output Điểm nối Điều kiện Đúng Sai Tin học đại cương - Chương bangtqh@utc2.edu.vn 13 Sơ đồ số cấu trúc Cấu trúc rẽ nhánh Cấu trúc lặp True If… then… while…do… True False False §iỊu KiƯn If… then… else… §óng Xư lý nÕu ®óng repeat…until… Sai Xư lý nÕu sai True False bangtqh@utc2.edu.vn Tin học đại cương - Chương 14 Tính chu vi diện tích HCN Phương pháp liệt kê Sơ đồ khối – 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 Kt thỳc 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 15 Tính chu vi, diện tích tam giác Sơ đồ thuật tốn 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 C,S bangtqh@utc2.edu.vn Tin học đại cương - Chương 16 Biểu diễn thuật tốn giả ngơn ngữ 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 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, rút gọn cho dễ diễn đạt Giả ngơn ngữ đư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 Sử dụng giả ngôn ngữ khiế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 17 Giải thuật tính tổng N số tự nhiê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 18 Thiết kế thuật toán Các bước giải tốn máy tính: – Xác định tốn – Thiết kế giải thuật – Viết chương trình – Hiệu chỉnh, làm tinh – Viết tài liệu Thiết kế giải thuật từ yêu cầu toán, diễn đạt giải thuật giải tốn – Mơ-đun hố việc giải tốn – Tinh chỉnh bước Phân tích giải thuật – Xem xét tiêu chuẩn giải thuật có thoả mãn khơng, có đến mức độ bangtqh@utc2.edu.vn Tin học đại cương - Chương 19 Thiết kế từ xuống Các tốn lớn địi hỏi giải thuật có quy mơ lớn Mơ-đun hố – Bài tốn = nhiều mô-đun – Mô-đun lớn = nhiều mô-đun – Việc giải mô-đun mức thấp “đủ đơn giản” Chia để trị BÀI TOÁN A A1 A2.1 B A2 A2.2 C C1 C2 A2.3 Thiết kế từ xuống (topdown design): Bài toán xem xét từ tổng quát đến chi tiết bangtqh@utc2.edu.vn Tin học đại cương - Chương 20 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 21 Phương pháp tinh chỉnh bước Phương pháp tinh chỉnh bước (stepwise refinement) – Ban đầu, sử dụng ngôn ngữ tự nhiên để diễn tả cơng việc giải thuật – Các bước sau, công việc chi tiết hố dần dần, ngơn ngữ tự nhiên thay giả ngôn ngữ – Cuối cùng, giả ngôn ngữ chuyển sang ngôn ngữ lập trình Đặc điểm – Thể 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 22 Bài toán xếp dãy số (tăng dần) Phác thảo “thô” với “ý tưởng bản” – “Từ dãy số chưa xếp, tìm số nhỏ đưa lên đầu” – Lặp lại quy trình tới dãy chưa xếp trở thành rỗng Ban đầu, dãy chưa xếp dãy cho, dãy xếp rỗng Lưu trữ dãy “mảng” (danh sách số), đưa số nhỏ (aj) lên đầu danh sách đổi chỗ với số Đổi chỗ – Số trung gian := aj – aj := số – Số : = số trung gian …, cuối ta chương trình với ngơn ngữ cụ thể bangtqh@utc2.edu.vn Tin học đại cương - Chương 23 Phân tích thuật tốn Tính đắn – Chạy thử nghiệm, đối chiếu kết phát tính sai – Dùng cơng cụ tốn học để chứng minh tính đắn Tính đơn giản – Giải thuật hiểu, dễ lập trình khơng? Tính hiệu – Đơn giản chưa hiệu – Đối với nhiều tốn, tính hiệu 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 phải có độ phức tạp (thời gian) tính tốn chấp nhận Tính hữu hạn dừng – Chứng minh, suy luận – Chạy thử bangtqh@utc2.edu.vn Tin học đại cương - Chương 24 Độ phức tạp thuật toán Độ phức tạp thời gian: – Là thời gian máy tính sử dụng để giải toán theo giải thuật xét (với input có kích thước xác định) – Có thể biểu diễn thơng qua số lượng phép tính dùng thuật tốn Độ phức tạp khơng gian – Là dung lượng nhớ cần thiết mà máy tính sử dụng để giải toán theo giải thuật xét (với input có kích thước xác định) Ví dụ: – Bài tốn tìm số lớn dãy số a1, a2,…,aN – Nếu coi phép so sánh số thuật toán cần đơn vị thời gian Độ phức tạp thời gian thuật toán n-1 (nếu bangtqh@utc2.edu.vn Tin học đại cương - Chương 25 Độ phức tạp thuật toán (tt) Bài tốn tính giá trị đa thức: P(x) = anxn + an-1xn-1 + … + a1x + a0 Thuật toán Thuật toán S = a0; For i = To n S = S + ai*x0i S = a0; For i = To n S = S*x0 + an-i Số phép tính(* + ) là: n(n+3)/2 bangtqh@utc2.edu.vn Khi x = x0 Số phép tính(* + ) là: 2n Tin học đại cương - Chương 26 Độ phức tạp thuật toán (tt) Hàm thể độ phức tạp thuật toán – Để so sánh độ phức tạp thuật toán người ta coi độ phức tạp thuật toán cấp hàm biểu thời gian thực thuật toán Định nghĩa Big-O – hàm f(n) có cấp thấp hàm g(n) tồn C > số tự nhiên n0 cho |f(n)| ≤ C|g(n)| với n ≥ n0 Ta viết f(n) = O(g(n)) hay cịn nói hàm f(n) thỏa mãn quan hệ Big-O với g(n) – vd: f(n) = n(n+3)/2 g(n) = n2 f(n) = O(g(n)) = O(n2) f(n) ≤ g(n) với n≥3 bangtqh@utc2.edu.vn Tin học đại cương - Chương 27 Độ phức tạp thuật toán (tt) Định nghĩa – thuật tốn có độ phức tạp f(n) f(n) = O(g(n)) ta nói thuật tốn đồng thời có độ phức tạp “O lớn g(n)” – tốn có thuật tốn với độ phức tạp O(g1(n)) O(g2(n)) mà bậc g1(n) thấp bậc g2(n) ta nói thuật toán hiệu thuật toán – Một cách tổng quát: f(n) = aknk + ak-1nk-1+ +a1n+a0 f(n) = O(nk) (f1 + f2)(n) = O(max(|g1(n)|,|g2(n)|), (f1f2)(n)) = O(g1(n)g2(n)) bangtqh@utc2.edu.vn Tin học đại cương - Chương 28 Độ phức tạp thuật toán (tt) Các thuật ngữ thường dùng bangtqh@utc2.edu.vn Tin học đại cương - Chương 29 Độ phức tạp thuật toán (tt) Độ phức tạp thuật toán Thời gian thực bangtqh@utc2.edu.vn Tin học đại cương - Chương 30 2.5 Một số thuật tốn thường gặp Bài tốn tìm kiếm – Thuật tốn tìm kiếm tuyến tính – Thuật tốn tìm kiếm nhị phân Bài tốn tìm số USCLN số – Thuật toán lặp, kiểm tra giá trị từ 1,2, ,min(a, b) – Thuật tốn phân tích số nguyên cho thành thừa số nguyên tố – Thuật toán euclide Bài toán xếp dãy tăng/giảm dần – – – – Thuật toán bọt (bubble sort) Thuật toán chọn trực tiếp (selection sort) Thuật toán chèn trực tiếp (insertion sort) Thuật toán vun đống (heap sort) bangtqh@utc2.edu.vn Tin học đại cương - Chương 31 2.5 Một số thuật toán thường gặp Thuật toán đệ quy – Định nghĩa: Một thuật toán gọi đệ quy giải tốn cách rút gọn liên tiếp toán ban đầu tới toán đồng dạng với liệu đầu vào nhỏ – Ví dụ: • • • • • Bài tốn tính n! Bài tốn tìm số thứ n dãy số Fibonaci Bài tốn tìm USCLN số a, b Bài tốn tìm kiếm nhị phân Bài tốn tháp Hà Nội bangtqh@utc2.edu.vn Tin học đại cương - Chương 32 Bài tập Vẽ sơ đồ biểu diễn thuật toán tìm trung bình cộng dãy số a1, a2, …, an 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 Vẽ sơ đồ biểu diễn thuật toán đếm xem dãy số a1, a2, …, an có cặp có số liên tiếp (vd: a2, a3) thỏa điều kiện tích chúng chia hết tổng chúng Vẽ sơ đồ khối biểu diễn thuật tốn kiểm tra xem số ngun N có số nguyên tố hay không? Tin học đại cương - Chương bangtqh@utc2.edu.vn 33 Bài tập (tt) Hãy vẽ sơ đồ thuật tốn tìm in số số nguyên tố dãy số a1, a2, ,aN Hãy vẽ sơ đồ thể thuật tốn tính giá trị biểu thức x + x + x + + x N Hãy vẽ sơ đồ thuật tốn tìm số phần tử dãy a1, a2, ,aN có cặp (ai, aj) với i≠j thỏa điều kiện ai+aj = x Hãy vẽ sơ đồ thể thuật toán đổi số nguyên dương N sang hệ đếm số (hệ nhị phân) Hãy vẽ sơ đồ thể thuật tốn giải phương trình bậc ax2+ bx + c = Hãy vẽ sơ đồ thể toán tìm tích ma trận Amxn Bnxp Hãy vẽ sơ đồ thể thuật tốn tìm độ dài đường gấp khúc qua N điểm mặt phẳng M1(x1, y1), M2(x2, y2), ,Mn(xn, yn) Vẽ sơ đồ thể thuật toán xếp lại dãy số a1, a2, ,an theo thứ tự giảm dần Vẽ sơ đồ thể thuật tốn tìm phần tử dãy a1, a2, ,an thỏa điều kiện = ai-1 + ai-2 + + a2+ a1 10 Vẽ sơ đồ thể thuật tốn tìm trung bình cộng phần tử số phương dãy a1, a2, ,aN bangtqh@utc2.edu.vn Tin học đại cương - Chương 34 bangtqh@utc2.edu.vn Tin học đại cương - Chương 35 ... • • • • Bài tốn tính n! Bài tốn tìm số thứ n dãy số Fibonaci Bài tốn tìm USCLN số a, b Bài tốn tìm kiếm nhị phân Bài toán tháp Hà Nội bangtqh@utc2.edu.vn Tin học đại cương - Chương 32 Bài tập... cộng phần tử số phương dãy a1, a2, ,aN bangtqh@utc2.edu.vn Tin học đại cương - Chương 34 bangtqh@utc2.edu.vn Tin học đại cương - Chương 35 ... bangtqh@utc2.edu.vn Tin học đại cương - Chương 2.4 Biểu diễn thuật toán Liệt kê bước Sử dụng sơ đồ khối Sử dụng giả ngơn ngữ lập trình bangtqh@utc2.edu.vn Tin học đại cương - Chương Phương pháp

Ngày đăng: 08/12/2022, 21:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN