Chương 1 - Các khái niệm cơ bản. Nội dung chính trong chương này gồm: Giới thiệu, các bước xây dựng chương trình, cấu trúc dữ liệu và thuật toán, đánh giá độ phức tạp thuật toán, biểu diễn thuật toán, giải thuật đệ quy,... Mời các bạn cùng tham khảo.
! Hình CẤU TRÚC DỮ LIỆU tính điểm: CC: 10% " Điểm GK: 20% " Điểm thi: 70% ! Bài tập lớn ! Test Bài tập lớn " Điểm Web: //sites.google.com/site/trinhxuan *Tài liệu học tập: ! Giáo # Hiểu trình bắt buộc # Biết trình Cấu trúc liệu – Khoa CNTT, Viện ĐH Mở HN – Lưu hành nội khái niệm CTDL Thuật toán CTDL bản: Mảng, Danh sách # Hiểu vận dụng số CTDL đặc biệt: Hàng đợi, Ngăn xếp, Cây, Đồ thị " Đỗ Xuân Lôi, “Cấu trúc liệu giải thuật”, NXB Khoa học kỹ thuật " Introduction to Algorithms – The cormen # Hiểu áp dụng số thuật tốn bản: Tìm kiếm, Sắp xếp, … *Nội dung môn học CTDL – Khoa CNTH – Viện ĐH Mở HN cách đánh giá độ phức tạp thuật tốn # Nắm trình tham khảo CTDL – Khoa CNTH – Viện ĐH Mở HN CTDL – Khoa CNTH – Viện ĐH Mở HN Mục đích mơn học " Giáo ! Giáo SV ! Cách Khoa Công nghệ thông tin Email: trinhxuan@gmail.com Thời lượng: 60 tiết – LT CTDL – Khoa CNTH – Viện ĐH Mở HN thức thi: BTL " Nhóm CTDL – Khoa CNTH – Viện ĐH Mở HN STT SỐ TIẾT NỘI DUNG GIẢNG DẠY Đánh giá Thuật Tốn - Phân cơng BTL TK SX x TK SX x Thực hành mảng - Test x 5 DSLK Đơn x Thực hành DSLK Đơn - Test x Danh sách liên kết đôi x Stack - Queue x Cây x 10 Cây - Test x 11 Đồ thị x 12 Test BTL – Đánh giá sơ - TH x CTDL – Khoa CNTH – Viện ĐH Mở HN Y/C Đọc TL Ghi Các buổi Thực hành mang máy tính cá nhân thực hành Lưu ý sử dụng Phòng máy Yêu cầu kiến thức cần có ! Xem ! Sử dụng điều hịa: Phải đăng ký phí ! Tổng số buổi thực hành: 03 buổi ! Tổng phí phải nộp: 600.000đ (200.000/1 buổi) " Phí ! Lớp ! Nội Cấu trúc chương trình Khai báo biến " Nhập/xuất liệu " Cấu trúc điều khiển " Mảng " Chuỗi " Chương trình – hàm " Cấu trúc " Con trỏ " File " … " " tính sinh viên: 10.000đ/3 buổi trưởng thu giúp ! Cách thức thực hiện: " Buổi " Buổi 1: Thu thập nguyên vọng sử dụng điều hòa 2+3: Thu tiền sử dụng điều hòa ! Nguyên tổng hợp lại ngôn ngữ C dung cần tổng hợp lại: tắc số theo số nhiều CTDL – Khoa CNTH – Viện ĐH Mở HN CTDL – Khoa CNTH – Viện ĐH Mở HN I Giới thiệu ! Các CHƯƠNG I: bước để xây dựng toán tin học máy tính Bài tốn thực tế u cầu CÁC KHÁI NIỆM CƠ BẢN Giải thuật Thuật toán Xây dựng toán tin học thực chất chuyển toán thực tế thành toán giải máy tính CTDL – Khoa CNTH – Viện ĐH Mở HN #include … Lập trình Thiết kế Chương trình • Ngơn ngữ lập trình: • PASCAL, • C/C++, • JAVA, • Visual Basic • … CTDL – Khoa CNTH – Viện ĐH Mở HN 10 Xác định toán II Các bước xây dựng chương trình Xác định tốn # Xác định xem ta phải giải vấn đề gì? # Xác định yêu cầu cần thực toán $ thao tác cần thực Tìm CTDL biểu diễn tốn Tìm thuật tốn # Các tốn tin học cần phải lời giải tốt khơng lời giải địi hỏi nhiều thời gian chi phí Lập trình Kiểm thử Tối ưu chương trình CTDL – Khoa CNTH – Viện ĐH Mở HN 11 CTDL – Khoa CNTH – Viện ĐH Mở HN 12 Tìm CTDL biểu diễn tốn Tìm thuật tốn % Xác định input output toán % Input: liệu đầu vào % Output: Kết mong muốn đạt % Xác định hệ thống chặt chẽ rõ ràng quy tắc để từ Input có Output % Xác định dãy thao tác CTDL đầu vào để giải yêu cầu toán Các tiêu chuẩn: # Biểu diễn đầy đủ thông tin nhập xuất toán # Phải phù hợp với thao tác thuật toán mà ta lựa chọn để giải tốn # Cài đặt máy tính với ngơn ngữ lập trình xác định CTDL – Khoa CNTH – Viện ĐH Mở HN Đảm bảo # Mỗi bước thao tác rõ ràng # Không rơi vào q trình vơ hạn # Sau thực bước phải cho kết # Phải đảm bảo cài đặt chương trình 13 Lập trình # Kiểm tra lỗi chương trình # Lỗi & Lỗi cú pháp & Lỗi cài đặt & Lỗi thuật tốn # Thơng thường ta khơng nên cụ thể hóa tồn chương trình mà nên tiến hành theo phương pháp tinh chế bước # Lập test để kiểm thử # Nguyên tắc % Ban đầu, thể thuật toán với bước tổng thể, bước nêu lên công việc phải thực % Một công việc đơn giản đoạn chương trình học thuộc ta tiến hành viết mã lệnh ngơn ngữ lập trình % Một cơng việc phức tạp ta lại chia thành công việc nhỏ để lại tiếp tục với cơng việc nhỏ # Nguyên tắc xây dựng test & Bắt đầu với test nhỏ, đơn giản, & Tiếp theo test nhỏ, chứa giá trị đặc biệt tầm thường & Các test phải đa dạng, tránh lặp lặp lại & Có vài test lớn 15 CTDL – Khoa CNTH – Viện ĐH Mở HN 16 III CTDL Thuật tốn Tối ưu chương trình ! Xây # Đặt mục tiêu viết chương trình cho đơn giản, chạy kết đúng, sau ta xem lại chỗ viết chưa tốt tối ưu lại mã lệnh để chương trình ngắn hơn, chạy nhanh dựng toán cần: định Cấu trúc liệu " Xác ! Đối tượng liệu dùng toán $ Tổ chức biểu diễn đối tượng " Xác # Khơng nên viết tới đâu tối ưu tới đó, chương trình có mã lệnh tối ưu thường phức tạp khó kiểm sốt định Thuật tốn ! Các u cầu xử lý đối tượng $ Xác định xây dựng thao tác xử lý đối tượng # Tiêu chuẩn tối ưu & Tính tin cậy & Tính uyển chuyển & Tính sáng & Tính hữu hiệu CTDL – Khoa CNTH – Viện ĐH Mở HN 14 Kiểm thử # Xác định ngơn ngữ lập trình sử dụng CTDL – Khoa CNTH – Viện ĐH Mở HN CTDL – Khoa CNTH – Viện ĐH Mở HN CTDL + Thuật tốn = Chương trình Structure Data + Algorithm = Program 17 CTDL – Khoa CNTH – Viện ĐH Mở HN 18 a Cấu trúc liệu – Structure Data ! Cấu trúc liệu cách để tổ chức lưu thông tin đối tượng tốn (thực tế) vào máy tính cho sử dụng cách hiệu ! Các kiểu cấu trúc liệu bản: " Mảng, Bản ghi " Danh sách liên kết, Ngăn xếp, Hàng đợi " Cây " Đồ thị CTDL – Khoa CNTH – Viện ĐH Mở HN 19 b Thuật tốn - Algorithm: xác ! Tính rõ ràng ! Tính khách quan ! Tính phổ dụng ! Tính kết thúc Output CTDL – Khoa CNTH – Viện ĐH Mở HN 21 CTDL – Khoa CNTH – Viện ĐH Mở HN 22 a Độ phức tạp không gian: IV Đánh giá độ phức tạp thuật tốn ! Các tiêu chí lựa chọn thuật toán: Thuật toán đơn giản, dễ hiểu " Thuật toán dễ cài đặt (dễ viết chương trình) " Thuật tốn cần nhớ " Thuật tốn chạy nhanh ! Là tổng số chi phí mặt không gian (bộ nhớ) cần thiết sử dụng cho thuật toán $ đánh giá dựa vào tổng số nhớ khai báo cho biến " ! => để đánh giá thuật toán dựa vào độ phức tạp thuật tốn ! Chi phí nhớ gồm: liệu vào - input " Lưu liệu - output " Lưu kết trung gian - temp " Lưu ! Độ phức tạp thuật toán thể qua: gian " Thời gian " Không CTDL – Khoa CNTH – Viện ĐH Mở HN 20 ! Tính tốn, cịn gọi giải thuật " là qui tắc hay qui trình cụ thể nhằm giải vấn đề số bước hữu hạn, " hoặc cho kết (output) từ tập hợp liệu đưa vào (input) Thuật toán CTDL – Khoa CNTH – Viện ĐH Mở HN * Tính chất thuật toán ! Thuật Input Các yếu tố xác định kiểu CTDL: " Tên kiểu CTDL " Miền giá trị " Kích thước lưu trữ " Tập toán tử (thao tác) thực kiểu liệu ! Các tiêu chuẩn đánh giá CTDL: " Phản ảnh thực tế " Phù hợp với thao tác xử lý " Tiết kiệm tài nguyên hệ thống ! Một cấu trúc liệu thiết kế tốt cho phép: " Thực nhiều phép toán, " Sử dụng tài nguyên, " Thời gian xử lý không gian nhớ tốt ! 23 CTDL – Khoa CNTH – Viện ĐH Mở HN 24 b Độ phức tạp thời gian: VD: Xác định độ phức tạp thuật toán int sum (int n) { int sum, i ; sum = 0; i = 1; ! tổng thời gian cần thiết để hồn thành thuật tốn đánh giá dựa vào số lượng thao tác sử dụng thuật toán dựa liệu đầu vào ! Các thao tác xem xét: " Phép so sánh " Phép cộng, trừ, nhân, chia, … " Phép toán thay đổi " Phép gán " Phép trả lại giá trị " … ! Khi xét độ phức tạp thuật toán tập trung vào độ phức tạp tính tốn (độ phức tạp thời gian) ! Được CTDL – Khoa CNTH – Viện ĐH Mở HN n Unit (n Comparison) while (i < n) { sum = sum + i; i = i+ 1; } return sum; } x (n-1) Unit x (n-1) Unit Unit T"(n)"="1+1+n+2*(n+1)+2*(n+1)+1"="5n"+"1"" 25 CTDL – Khoa CNTH – Viện ĐH Mở HN 26 *Phân loại đánh giá: VD: Xác định độ phức tạp khơng gian thời gian thuật tốn 5" int Sum (int n) { int sum ; sum =0; 10 13 Best Case for ( int i =0 ; i