Giới thiệu về thuật toán lập trình

29 1.5K 0
Giới thiệu về thuật toán lập trình

Đ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

Giới thiệu thuật toán Nhập môn lập trình Trình bày: …; Email: …@fit.hcmus.edu.vn Nội dung  Khái niệm thuật toán  Chương trình cài đặt thuật toán  Độ phức tạp thuật toán  Các vấn đề tìm hiểu mở rộng kiến thức nghề nghiệp  Thuật ngữ đọc thêm tiếng Anh 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Khái niệm thuật toán Bài toán thuật giải • • • 9/11/15 Máy tính công cụ đắc lực hỗ trợ người việc tính toán xử lý. Phát biểu toán ngôn ngữ tự nhiên đầu vào cho máy tính. Con người phải mô hình hóa toán thông qua cấu trúc liệu, vốn hỗ trợ ngôn ngữ lập trình, từ sở đến nâng cao mảng, cấu trúc, tập hợp, đồ thị, cây, … Khoa CNTT - ĐH Khoa học tự nhiên Bài toán thuật giải • • 9/11/15 Trên sở mô hình liệu xây dựng, người phải cho máy tính cách thức để giải toán (gọi thuật toán hay giải thuật). Thuật toán hiểu qui trình xử lý bao gồm bước cụ thể thực để giải toán. Khoa CNTT - ĐH Khoa học tự nhiên Các tiêu chuẩn thuật toán • Mỗi thuật toán cần đáp ứng tiêu chuẩn: – Tính hữu hạn: Thuật toán phải kết thúc thực thi sau số lượng hữu hạn bước xử lý. – Tính xác định: Mỗi bước xử lý phải mô tả rõ ràng, xác, không nhập nhằng. – Tồn liệu đầu vào: Thuật toán phải có liệu đầu vào hợp lệ, mô tả rõ ràng. – Tính có kết quả: Thuật toán phải cho kết sở liệu đầu vào hợp lệ. – Tín hiệu quả: Mỗi bước xử lý phải đơn giản với thời gian thực thi hữu hạn. Trong thực tế điều có nghĩa phải thực thi khoảng thời gian chấp nhận được. – 9/11/15 Tính phổ dụng: Thuật toán áp dụng để xử lý họ toán. Khoa CNTT - ĐH Khoa học tự nhiên Mô tả thuật toán • Chúng ta sử dụng bốn cách sau để mô tả thuật toán: – Ngôn ngữ tự nhiên: tiếng Việt, tiếng Anh, … – Lưu đồ. – Mã giả: thường dựa vào cú pháp số ngôn ngữ lập trình thông dụng Pascal, C/C++, … • 9/11/15 – Ngôn ngữ lập trình cấp cao. Không nên sâu vào chi tiết kỹ thuật làm tính trừu tượng thuật toán. Khoa CNTT - ĐH Khoa học tự nhiên Mô tả thuật toán NNTN • Ví dụ tìm số lớn dãy – Bước 1: Đặt số lớn với số nguyên không dấu dãy. – Bước 2: Nếu không số nguyên chuyển sang Bước 4. – Bước 3: Nếu số nguyên lớn số lớn đặt số lớn số nguyên này. Quay Bước 2. – Bước 4: Số lớn số lớn dãy, kết thuật toán. 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Mô tả thuật toán NNLT • Ví dụ tìm số lớn dãy int timSoLonNhat(int a[], int n) { int i, max; for (i = 1; i < n; i++) if (max < a[i]) max = a[i]; return max; } 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên Mô tả thuật toán lưu đồ • Sử dụng khối hình sau: – Các hình chữ nhật biểu thị chị tính toán hay xử lý (nhập, xuất, gán, thực phép tính). – Các hình thoi thể định rẽ nhánh tùy theo biểu thức hình thoi có giá trị (Đ) hay sai (S). – Các mũi tên hướng luồng điều khiển, thể thứ tự thực khối xử lý. 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 10 Xem giáo trình NMLT • Tổ chức liệu cho hàm chương trình • Tổ chức hàm cho chương trình • Chạy thử nghiệm thuật toán 9/11/15 – Dữ liệu nhập, xuất tính toán trung gian – Hàm nhập/xuất, xử lý (cài đặt thuật toán) chương trình chính, kết nối – Chuẩn bị liệu kiểm thử (dữ liệu nhập kết mong đợi) – Chạy thử, ghi nhận kết đánh giá sai Khoa CNTT - ĐH Khoa học tự nhiên 14 Độ phức tạp thuật toán Khái niệm • • Đối với vấn đề đặt tồn nhiều thuật toán xử lý. Ngoài việc phải thuật toán có tính đắn ta phải biết thuật toán tốt giải vấn đề (theo nghĩa chạy nhanh hay độ phức tạp thấp hơn). 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 16 Độ phức tạp thời gian • • 9/11/15 Trong điều kiện hoạt động (dữ liệu đầu vào, tốc độ phần cứng, …) thuật toán cho kết sớm thuật toán tốt nhất. Tuy nhiên, để đảm bảo điều kiện hoạt động đồng khó hệ thống đa nhiệm CPU không dành 100% công suất để phục vụ riêng cho chương trình chạy thử nghiệm. Khoa CNTT - ĐH Khoa học tự nhiên 17 Độ phức tạp thời gian • • Không phải nhóm thuật toán cân đo, đong đếm cách tường minh. Ví dụ tìm số Fibonacci thứ n, biết F0 = F1 = Fn = Fn-1 + Fn-2 n ≥ 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 18 Tìm số Fibonacci thứ n • Thuật toán thứ Mã giả Computing: Fibonacci(n) if n [...]... diễn dữ liệu cũng như trong quá trình xử lý của thuật toán • 9/11/15 Độ phức tạp này thường không được chú ý nhiều Khoa CNTT - ĐH Khoa học tự nhiên 22 Thuật toán hoán đổi giá trị • Hoán đổi giá trị của a và b Thuật toán thứ nhất Thuật toán thứ 2 1 a←a+b 2 a←b b←a–b 3 • temp ← a b ← temp a←a–b Thuật toán thứ nhất tồi hơn thuật toán thứ hai (trên phương diện độ phức tạp về không gian) do cần thêm một... giáo trình NMLT (152-156) • Tham khảo một số ví dụ về đánh giá độ phức tạp lý thuyết của thuật toán tìm kiếm tuyến tính và nhị phân 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 25 Thuật ngữ và bài đọc thêm tiếng Anh Thuật ngữ tiếng Anh • algorithm: cách thức hay qui trình để giải quyết bài toán • algorithmic complexity: độ phức tạp thuật toán • algorithm implementation: cài đặt thuật toán, chuyển thuật toán. .. (max) 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 12 Chương trình cài đặt thuật toán Xem giáo trình NMLT • Tổ chức dữ liệu cho mỗi hàm chương trình • Tổ chức các hàm cho chương trình • Chạy thử nghiệm thuật toán 9/11/15 – Dữ liệu nhập, xuất và tính toán trung gian – Hàm về nhập/xuất, xử lý (cài đặt các thuật toán) và chương trình chính, kết nối – Chuẩn bị các bộ dữ liệu kiểm thử (dữ liệu nhập và kết quả... ĐH Khoa học tự nhiên 14 Độ phức tạp thuật toán Khái niệm • • Đối với một vấn đề đặt ra có thể tồn tại rất nhiều thuật toán xử lý Ngoài việc phải chỉ ra rằng một thuật toán có tính đúng đắn ta còn phải biết thuật toán nào tốt hơn khi giải quyết cùng một vấn đề (theo nghĩa chạy nhanh hơn hay độ phức tạp thấp hơn) 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 16 Độ phức tạp về thời gian • • 9/11/15 Trong cùng... gian thực hiện của hai thuật toán) n Thuật toán 2 40 41 ns 1048 µs 60 61 ns 1 giây 80 81 ns 18 phút 100 101 ns 13 ngày 120 121 ns 36 năm 160 161 ns 7 3.8 × 10 năm 200 9/11/15 Thuật toán 1 201 ns 13 4 × 10 năm Khoa CNTT - ĐH Khoa học tự nhiên 21 Độ phức tạp về không gian • Dựa trên mức độ tiêu thụ tài nguyên của hệ thống (như bộ nhớ, đường truyền, …) để làm cơ sở đánh giá thuật toán • Dựa và cấu trúc... đầu vào, tốc độ phần cứng, …) thì thuật toán nào cho kết quả sớm nhất sẽ là thuật toán tốt nhất Tuy nhiên, để đảm bảo điều kiện hoạt động đồng nhất là rất khó vì trong hệ thống đa nhiệm thì CPU không dành 100% công suất để phục vụ riêng cho chương trình đang chạy thử nghiệm Khoa CNTT - ĐH Khoa học tự nhiên 17 Độ phức tạp về thời gian • • Không phải bất cứ nhóm thuật toán nào cũng có thể được cân đo,... viết trong một NNLT cụ thể, cũng nghĩa với mã hóa thuật toán (algorithm coding) • executable: có thể chạy được • flow chart: lưu đồ, một phương tiện trực quan dùng để mô tả sự hoạt động của thuật toán • natural languages: ngôn ngữ tự nhiên (tiếng Việt, Anh, Pháp, …) • pseudo-code: mã giả, một phương tiện thông dụng được dùng để mô tả và trình bày thuật toán 9/11/15 Khoa CNTT - ĐH Khoa học tự nhiên 27... tả thuật toán bằng lưu đồ • Ví dụ tìm số lớn nhất trong dãy Nhập dãy a0, a1, …, an-1 max ← a0 i←1 Đ S i < n? Đ max

Ngày đăng: 11/09/2015, 13:52

Từ khóa liên quan

Mục lục

  • Slide 1

  • Nội dung

  • Slide 3

  • Bài toán và thuật giải

  • Bài toán và thuật giải

  • Các tiêu chuẩn của thuật toán

  • Mô tả thuật toán

  • Mô tả thuật toán bằng NNTN

  • Mô tả thuật toán bằng NNLT

  • Mô tả thuật toán bằng lưu đồ

  • Mô tả thuật toán bằng lưu đồ

  • Mô tả thuật toán bằng mã giả

  • Slide 13

  • Xem giáo trình NMLT

  • Slide 15

  • Khái niệm

  • Độ phức tạp về thời gian

  • Độ phức tạp về thời gian

  • Tìm số Fibonacci thứ n

  • Tìm số Fibonacci thứ n

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

Tài liệu liên quan