Danh mục

Bài giảng Phân tích thiết kế giải thuật: Chương 1 - Trịnh Huy Hoàng

Số trang: 72      Loại file: ppt      Dung lượng: 554.50 KB      Lượt xem: 14      Lượt tải: 0    
Hoai.2512

Phí tải xuống: 1,000 VND Tải xuống file đầy đủ (72 trang) 0
Xem trước 8 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mời các bạn tham khảo bài giảng Phân tích thiết kế giải thuật: Chương 1 do Trịnh Huy Hoàng biên soạn sau đây để bổ sung thêm kiến thức về các phương pháp phân tích thuật toán. Bài giảng phục vụ cho các bạn chuyên ngành Công nghệ thông tin và những bạn quan tâm tới lĩnh vực này.
Nội dung trích xuất từ tài liệu:
Bài giảng Phân tích thiết kế giải thuật: Chương 1 - Trịnh Huy Hoàng Chương 1: Các phương pháp phân tích thuật toán Trịnh Huy Hoàng Khoa Công nghệ thông tin Đại học Sư phạm TPHCM 1 Nội dung  Một số kiến thức Toán cần thiết  Thuật toán là gì?  Vai trò của phân tích thuật toán  Các phương pháp phân tích thuật toán  Bộ khung cho quá trình phân tích thuật toán – Mã giả – RAM – Thời gian thực hiện chương trình – Độ phức tạp của chương trình 2 Một số kỹ thuật Toán học thường dùng  Chứng minh qui nạp – Chứng minh mệnh đề đúng với trường hợp đầu tiên (n=n0) – Giả sử mệnh đề đúng đến trường hợp thứ k (n=k) – Chứng minh mệnh đề đúng với trường hợp thứ k+1 (n=k+1) – Kết luận mệnh đề đúng với mọi trường hợp (mọi n >= n0) 3 Một số kỹ thuật Toán học thường dùng (tt)  Các tổng dãy số thường dùng n n(n 1) Dãy số học i n (n 1) (n 2) ... 2 1 0 i 0 2 n xn 1 1 Dãy hình học xi if x   1 i 0 x ­1 i 1 x if |x|  Thuật toán là gì?  “Thuật toán là một thủ tục tính toán được định nghĩa rõ ràng để biến đổi các đầu vào thành các đầu ra nhằm đạt được quan hệ đầu vào – đầu ra mong muốn” Input Algorithm Output  Ví dụ: input: Dãy số. output: Dãy số đã được sắp xếp thứ tự. 5 Thuật toán là gì? (tt)  “Nếu cho trước một bài toán, thì một cách giải bài toán được phân định ra thành một số hữu hạn bước, có kết thúc cuối cùng và đạt được kết quả mong muốn gọi là thuật toán” (Vũ Đức Thi, 1999) 6 Vai trò của việc phân tích thuật toán  Phân tích thuật toán = Xác định các đặc trưng liên quan đến hiệu năng. (Dự đoán tài nguyên được yêu cầu.) – Thời gian, bộ nhớ, đường truyền … – Thời gian thi hành (running time) là quan tâm chính bởi nó là tài nguyên quan trọng nhất và không thể phục hồi.  Tại sao phải phân tích thuật toán? – Chọn cách hiệu quả nhất trong số các thuật toán có thể có cho cùng một vấn đề. – Liệu một giải pháp tốt nhất có thời gian thi hành chấp nhận được trong thực tế hay không? – Liệu một thuật toán đã được tối ưu hay chưa? – Liệu có một thuật toán nào khác tốt hơn không? 7 Phân tích thực nghiệm  Dựa trên thời gian thực thi của thuật toán đã được cài đặt trên các đầu vào cụ thể.  Phụ thuộc vào môi trường phần cứng (vi xử lý, xung nhịp đồng hồ, RAM, đĩa cứng,…) và phần mềm (hệ điều hành, ngôn ngữ lập trình, biên dịch hoặc thông dịch,…) 8 Phân tích thực nghiệm (tt)  Hạn chế: – Các thực nghiệm chỉ được tiến hành trên một số các đầu vào để kiểm tra. Chúng cần phải có tính đại diện cao. – Rất khó để so sánh tính hiệu quả của hai thuật toán trừ khi chúng chạy trên cùng một môi trường phần cứng và phần mềm. – Cần phải cài đặt và thi hành thuật toán 9 Ý tưởng  Có một bộ khung phân tích thỏa – Xem xét tất cả đầu vào có thể – Cho phép đánh giá hiệu quả tương đối của hai thuật toán bất kỳ độc lập với môi trường phần cứng và phần mềm – Có thể được tiến hành bằng cách nghiên cứu mô tả cấp cao của thuật toán mà không cần phải thật sự cài đặt và thi hành thuật toán đó 10 Mục tiêu  Liên kết mỗi thuật toán với một hàm f(n) để đặc trưng thời gian thực thi của thuật toán đó với n là kích thước đầu vào.  Cũng là mục tiêu của môn học 11 Các thành phần của bộ khung  Một ngôn ngữ: để mô tả các thuật toán  Một máy tính: để thi hành các mô tả thuật toán bởi ngôn ngữ ở trên  Một độ đo: để biểu đạt thời gian thực thi của bản mô tả thuật toán trên máy tính 12 Ngôn ngữ: ngôn ngữ mã giả  Mô tả thuật toán ở cấp cao để người đọc có thể hiểu đồng thời rõ ràng cô đọng súc tích.  Dựa trên các cấu thành chung của ngôn ngữ C, C++, Java. 13 Cấu thành của mã giả  Biểu thức: – kí hiệu toán học chuẩn – phép gán là “←” – so sánh bằng là “=“.  Khai báo hàm: – Algorithm Tên_Thuật_Toán(tham số 1, tham số 2,…)  Cấu trúc điều kiện: – If điều_kiện then Các hành động 14 Cấu thành của mã giả (tt)  Vòng lặp while: – While điều_kiện do Các hành động  Vòng lặp repeat: – Repeat Các hành động – Until điều_kiện  Vòng lặp for – For định_nghĩa_biến_tăng do Các hành động 15 Cấu thành của mã giả (tt)  Truy xuất mảng: – A[i]: phần tử thứ i của mảng A. Bắt đầu từ 0. – Lưu ý phần tử đầu tiên của mảng có nghĩa là phần tử 1.  Gọi hàm: – tên_hàm(các_tham_số)  Kết thúc hàm: – Return giá_trị: trả về giá trị cho hàm gọi hàm này 16 Ví dụ: Tìm phần tử lớn nhất của mảng  Algorithm arrayMax(A, n):  Input: Một mảng A lưu n >=1 số nguyên  Output: Phần tử lớn nhất trong A  currentMax ← A[1]  for i ← 2 to n do  if currentMax < A[i] then  cur ...

Tài liệu được xem nhiều: