Bài giảng cơ sở lập trình nâng cao đh ngoại ngữ TP HCM

337 1K 0
Bài giảng cơ sở lập trình nâng cao   đh ngoại ngữ TP HCM

Đ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

TRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP.HCM KHOA CÔNG NGHỆ THÔNG TIN CƠ SỞ LẬP TRÌNH NÂNG CAO Biên soạn: Ths.Tôn Quang Toại TonQuangToai@yahoo.com TPHCM, NĂM 2013 Mục tiêu môn học  Mục tiêu cần đạt - Nắm vững số phương pháp Thiết kế thuật toán để giải bài toán tin học - Nắm vững một số phương pháp Tối ưu hóa chương trình Nội dung môn học           Chương 1: Độ phức tạp thuật toán Chương 2: Ôn tập kỹ thuật xử lý File – Mảng – Xâu ký tự Chương 3: Lập trình Đệ quy Chương 4: Phương pháp Quay lui Chương 5: Phương pháp Nhánh cận Chương 6: Phương pháp Chia để trị Chương 7: Phương pháp Tham lam Chương 8: Phương pháp Quy hoạch động Chương 9: Phương pháp Hình học Chương 10: Tối ưu hóa chương trình Tài liệu tham khảo  Books 1. Vũ Đình Hòa, Đỗ Trung Kiên, “Thuật toán độ phức tạp thuật toán”, NXB ĐHSP, 2007 2. Steven S. Skiena, “The Algorithm Design Manual”, Springer , 2008 3. Art Lew, Holger Mauch, “Dynamic Programming – A Computational Tool”, Springer, 2007 4. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, “Introduction to Algorithms”, 2009 5. Jon Bentley, “Writing Efficient Programs”, Prentice-Hall, 1982 6. Jon Bentley, “Programming Pearls”, Addison Wesley, 2000 Chương ĐỘ PHỨC TẠP CỦA THUẬT TOÁN Nội dung  Độ phức tạp thuật toán  Ước lượng độ phức tạp thuật toán ĐỘ PHỨC TẠP CỦA THUẬT TOÁN Thời gian thực thuật toán  Phân tích thuật toán: Phân tích thuật toán xác định lượng tài nguyên cần thiết để thực thi thuật toán: • Thời gian thực thuật toán • Bộ nhớ cần thực thuật toán  Tiêu chí thường dùng để đánh giá thuật toán thời gian thực thuật toán. Thời gian thực thuật toán  Mục tiêu phân tích thuật toán • So sánh để chọn thuật toán chạy nhanh • Tìm yếu điểm thuật toán để Cải tiến thuật toán tốt  cách “đo” thời gian thực thuật toán • Thời gian thực thực tế • Thời gian thực lý thuyết (Phân tích thuật toán) Thời gian thực thuật toán  Thời gian thực thực tế: Dựa thực tế chạy thuật toán tình (mili second, second, minute, hour, day) Kết luận: Thuật toán nhanh, thuật toán chậm 10 Dùng phương pháp Quy hoạch động – Bảng tra (lookup table)  Dùng phương pháp Quy hoạch động – Bảng tra (lookup table) • Những giá trị dùng nhiều lần, cần tính lần lưu lại bảng (gọi bảng lookup) • Khi cần giải lại toán giải tra bảng lookup 322 Dùng phương pháp Quy hoạch động – Bảng tra (lookup table)  Ví dụ: Tính n n n C , C , C , ., C n n n! C = k !(n − k )! k n  Cách 1: Cách thông thường • Tính k! • Tính tổ hợp: Gọi tính giai thừa • Tính k Cn 323 Dùng phương pháp Quy hoạch động – Bảng tra (lookup table) Cải tiến  Cách 2: Dùng bảng lookup • Dùng bảng (n+1) phần tử a[0], a[1], ., a[n] để tính lưu a[i]=i! a[ n] C = ∀k = 0, n a[k ]* a[n − k ] k n 324 Tận dụng công thức  Sử dụng công thức thay cho vòng lặp  Tính toán giấy trước lập trình  Tìm mối quan hệ bước tính trước bước tính sau 325 Tận dụng công thức  Ví dụ: Tính tổng S sau: s (n) = + + . + n int TinhTong(int n) { int s; s=0; int TinhTong(int n) { int s; int i; for (i=1; i[...]... – Kích thước dữ liệu – Đặc điểm của dữ liệu • • • • Tốc độ của máy tính Ngôn ngữ lập trình Chương trình dịch cho ngôn ngữ lập trình Hệ điều hành để thực hiện chương trình 11 Thời gian thực hiện thuật toán  Thời gian thực hiện thực tế: Dựa trên thực tế khi chạy các thuật toán được viết trên: • Cùng ngôn ngữ lập trình, cùng trình biên dịch • Cùng hệ thống máy tính • Cùng bộ dữ liệu vào chuẩn Kết luận:... phép toán cơ bản trong thuật toán sẽ được thực hiện bao nhiêu lần • Kích thước dữ liệu vào Kết luận + Thuật toán nào nhanh, thuật toán nào chậm + Tìm ra những nơi cần cải tiến thuật toán 13 Thời gian thực hiện thuật toán  Phép toán cơ bản: Một phép toán được gọi là cơ bản nếu thời gian thực hiện của nó bị chặn trên bởi một hằng số (chỉ phụ thuộc cách cài đặt được sử dụng – ngôn ngữ lập trình, máy... Kí hiệu O-lớn O(1) O(log(n)) O(n) O(n.log(n)) O(n2), O(n3), … O(2n), O(an) O(n!) Tên thường gọi Hằng Logarit Tuyến tính n.log(n) Bình phương, lập phương, … Đa thức Mũ Giai thừa 29 ƯỚC LƯỢNG ĐỘ PHỨC TẠP CỦA THUẬT TOÁN Phân loại câu lệnh trong một ngôn ngữ lập trình  Câu lệnh đơn thực hiện một thao tác • Lệnh gán đơn giản (không chứa lời gọi hàm trong biểu thức) • Đọc/ghi đơn giản • Câu lệnh chuyển... cin, printf, scanf … 14 Thời gian thực hiện thuật toán  Định nghĩa [Thời gian thực hiện thuật toán]: Gọi T(n) là số phép toán cơ bản khi thực hiện thuật toán với kích thước dữ liệu vào n T(n) được gọi là thời gian thực hiện thuật toán  Chú ý: Thuật toán có nhiều loại phép toán cơ bản nên chúng ta có thể thực hiện đánh theo một trong hay cách: • Đánh giá thời gian chạy trên từng loại phép toán • Tổng . CƠ SỞ LẬP TRÌNH NÂNG CAO Biên soạn: Ths.Tôn Quang Toại TonQuangToai@yahoo.com TPHCM, NĂM 2013 TRƯỜNG ĐẠI HỌC NGOẠI NGỮ - TIN HỌC TP. HCM KHOA CÔNG NGHỆ THÔNG TIN 2 Mục. liệu – Đặc điểm của dữ liệu • Tốc độ của máy tính • Ngôn ngữ lập trình • Chương trình dịch cho ngôn ngữ lập trình • Hệ điều hành để thực hiện chương trình 12 Thời gian thực hiện thuật toán  Thời gian. toán  Phép toán cơ bản: Một phép toán được gọi là cơ bản nếu thời gian thực hiện của nó bị chặn trên bởi một hằng số (chỉ phụ thuộc cách cài đặt được sử dụng – ngôn ngữ lập trình, máy tính,

Ngày đăng: 24/09/2015, 10:23

Từ khóa liên quan

Mục lục

  • Slide 1

  • Mục tiêu môn học

  • Nội dung môn học

  • Tài liệu tham khảo

  • Slide 5

  • Nội dung

  • Slide 7

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Thời gian thực hiện thuật toán

  • Độ phức tạp thuật toán

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

Tài liệu liên quan