− Đọc tài liệu tham khảo: 1, 3, 4 Bài giảng: Một số vấn đề cơ sở tiếp Chương, mục: 2 Mục đích, yêu cầu: Giới thiệu cho sinh viên nắm được các khái niệm độ phức tạp của thuật toán, một số
Trang 1BỘ MÔN DUYỆT
Chủ nhiệm Bộ môn
Ngô Thành Long
ĐỀ CƯƠNG CHI TIẾT BÀI GIẢNG
(Dùng cho 60 tiết giảng)
Học phần: PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT Nhóm môn học:
Bộ môn: Hệ thống thông tin Khoa: Công nghệ thông tin
Thay mặt nhóm môn học
Tống Minh Đức
Thông tin về nhóm môn học
Địa điểm làm việc: Các ngày trong tuần tại phòng làm việc Khoa S4.1307 Địa chỉ liên hệ: Khoa Công nghệ Thông tin, Học viện KTQS
Điện thoại: 069.515.329, 069.515.333, 0984-485-888
Email: tmduc08@gmail.com, tinhdt@mta.edu.vn,
Bài giảng: Một số vấn đề cơ sở
Chương, mục:
Mục đích, yêu cầu:
Giới thiệu cho sinh viên nắm được các khái niệm về thuật toán, độ phức tạp của thuật toán, các khái niệm về độ tăng của hàm
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
1.1 Khái niệm thuật toán
- Định nghĩa
- Các tính chất
- Ví dụ minh họa
1.2 Biểu diễn thuật toán
- Sơ đồ khối Ký hiệu Ví dụ minh họa
Trang 2- Giả mã Yêu cầu Ví dụ minh họa.
- Chất lượng biểu diễn
1.3 Tính đúng đắn và hiệu quả của thuật toán
- Phương pháp kiểm tra, chứng minh tính đúng đắn của thuật toán;
- Đánh giá tính hiệu quả của thuật toán
1.4 Độ tăng của hàm
- Định nghĩa
- Các tính chất
- Ví dụ minh họa
Bài tập: Tìm phần tử lớn nhất, nhỏ nhất của dãy
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán; Tìm hiểu các tiêu chí đánh giá Máy Turing
− Đọc tài liệu tham khảo: 1, 3, 4
Bài giảng: Một số vấn đề cơ sở (tiếp)
Chương, mục:
2
Mục đích, yêu cầu:
Giới thiệu cho sinh viên nắm được các khái niệm độ phức tạp của thuật toán, một số kỹ thuật lập trình và cấu trúc dữ liệu lựa chọn
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
1.5 Khái niệm độ phức tạp
Trang 3Khái niệm Các lớp.
Thuật toán Euclid Định lý Lamé
Lớp P và NP
2.1 Kỹ thuật tuần tự
- Ý tưởng
- Ví dụ minh họa: tìm xâu con dài nhất các ký tự liên tiếp khác nhau
2.2 Kỹ thuật tổ chức theo cấu trúc
- Ý tưởng
- Ví dụ minh họa: tính tích của hai số nguyên lớn
2.3 Kỹ thuật đệ quy và lặp
- Phương pháp kiểm tra, chứng minh tính đúng đắn của thuật toán;
- Ví dụ tính ước số chung lớn nhất của hai số nguyên dương
2.4 Lựa chọn cấu trúc dữ liệu thích hợp
- Ý tưởng
Ví dụ xác định tên năm theo lịch âm
Ví dụ minh họa
Bài tập (1 tiết):
Tìm nghiệm của phương trình f(x) = 0 Tìm giá trị gần đúng của √a, a>0
Thảo luận (1 tiết):
− Phân biệt chính xác input, output của bài toán và trong mô tả thuật toán
− Kiểm tra tính đúng đắn của thuật toán
− Đánh giá một số thuật toán
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4, 8
Bài giảng: Giải thuật sắp xếp
Trang 4Chương, mục:
3
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được mục đích, ý nghĩa của việc sắp xếp Nắm được lần lượt các ý tưởng, thuật toán sắp xếp cụ thể, phân tích được trường hợp thuật toán chạy tốt, trường hợp tồi nhất phụ thuộc dữ liệu đầu vào
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của các thuật toán
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
3.1 Bài toán sắp xếp
- Phát biểu bài toán
- Đánh giá tốt nhất
3.2 Sắp xếp chọn, chèn, nổi bọt
- Ý tưởng
- Thuật toán
- Ví dụ minh họa
- Số phép so sánh, số lần đổi chỗ các phần tử
3.3 Thuật toán sắp xếp phân đoạn
- Ý tưởng
- Thuật toán
- Ví dụ minh họa
- Số phép so sánh, số lần đổi chỗ các phần tử
Bài tập (1 tiết):
Thực hiện sắp xếp bằng số trên một mảng cho trước
Thảo luận (1 tiết):
Đánh giá các trường hợp xấu nhất, tốt nhất, trung bình; Cách áp dụng giải quyết bài toán thực tế
- Yêu cầu SV chuẩn bị:
Trang 5Sinh viên tìm hiểu trước nội dung bài.
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4
Bài giảng: Giải thuật sắp xếp (tiếp)
Chương, mục:
4
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được mục đích, ý nghĩa của việc sắp xếp Nắm được lần lượt các ý tưởng, thuật toán sắp xếp cụ thể, phân tích được trường hợp thuật toán chạy tốt, trường hợp tồi nhất phụ thuộc dữ liệu đầu vào
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của các thuật toán
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
3.4 Thuật toán sắp xếp hòa nhập
- Ý tưởng Thuật toán
- Ví dụ minh họa Đánh giá
3.5 Thuật toán sắp xếp vun đống
- Ý tưởng Thuật toán
Ví dụ minh họa Đánh giá
Bài tập (1 tiết):
Thực hiện sắp xếp bằng số trên một mảng cho trước
Trang 6Thảo luận (1 tiết):
Đánh giá các trường hợp xấu nhất, tốt nhất, trung bình; Cách áp dụng giải quyết bài toán thực tế
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4
Bài giảng: Giải thuật sắp xếp (tiếp)
Chương, mục:
5
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được mục đích, ý nghĩa của việc sắp xếp Nắm được lần lượt các ý tưởng, thuật toán sắp xếp cụ thể, phân tích được trường hợp thuật toán chạy tốt, trường hợp tồi nhất phụ thuộc dữ liệu đầu vào
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của các thuật toán
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
3.6 Thuật toán sắp xếp theo cơ số
- Ý tưởng Thuật toán
- Ví dụ minh họa Đánh giá
3.7 Bài toán hòa nhập hai file lớn
Trang 7- Ý tưởng Thuật toán.
- Ví dụ minh họa Đánh giá
Bài tập (1 tiết):
Phân tích và cài đặt thuật toán hòa nhập 2 file lớn
Thảo luận (1 tiết):
Đánh giá các trường hợp xấu nhất, tốt nhất, trung bình; Cách áp dụng giải quyết bài toán thực tế
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4
Bài giảng: Giải thuật tìm kiếm
Chương, mục:
6
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được một số thuật toán tìm kiếm
cơ bản Phân tích được trường hợp thuật toán sử dụng phụ thuộc dữ liệu đầu vào
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của các thuật toán
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
4.1 Thuật toán tìm kiếm tuần tự
Trang 8- Ý tưởng Thuật toán.
- Ví dụ minh họa Đánh giá
4.2 Thuật toán tìm kiếm nhị phân
- Ý tưởng Thuật toán
- Ví dụ minh họa Đánh giá
Bài tập (1 tiết):
Phân tích và cài đặt thuật toán tìm kiếm, so sánh với tìm kiếm tuần tự + chi phí sắp xếp
Thực hành (1 tiết):
- Viết chương trình cho các thuật toán được nêu trong bài Kiểm
nghiệm hiệu quả của thuật toán
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4
Bài giảng: Giải thuật tìm kiếm (tiếp)
Chương, mục:
7
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được một số thuật toán tìm kiếm nâng cao Phân tích được trường hợp thuật toán sử dụng phụ thuộc dữ liệu đầu vào
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của các thuật toán
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Trang 9Phòng học.
- Nội dung chính:
4.3 Một số bài toán tìm kiếm
- Tìm kiếm dựa trên quy hoạch động
- Tìm kiếm dựa trên đệ quy
Tìm kiếm dựa trên phân chia vùng tìm kiếm
Bài tập (1 tiết):
Phân tích và cài đặt thuật toán tìm kiếm, so sánh với tìm kiếm tuần tự + chi phí sắp xếp
Thực hành (1 tiết):
- Viết chương trình cho các thuật toán được nêu trong bài Kiểm
nghiệm hiệu quả của thuật toán
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4
Bài giảng: Kỹ thuật chia để trị
Chương, mục:
8
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được một số thuật toán dựa trên
kỹ thuật chia để trị
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của các thuật toán
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
Trang 104 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
5.1 Ý tưởng và lược đồ tổng quát
- Ý tưởng
- Lược đồ tổng quát
- Ví dụ minh họa
5.2 Thiết kế thuật toán sắp xếp
- Sắp xếp nổi bọt
- Sắp xếp phân đoạn
Sắp xếp hòa nhập
Bài tập (1 tiết):
Cài đặt các thuật toán
Thảo luận(1 tiết):
Đánh giá hiệu quả, thời gian chạy các thuật toán
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4
Bài giảng: Kỹ thuật chia để trị (tiếp)
Chương, mục:
9
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được một số thuật toán dựa trên
kỹ thuật chia để trị
Trang 11Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của các thuật toán
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
5.3 Thiết kế thuật toán tìm kiếm
- Tìm kiếm tuần tự
- Tìm kiếm nhị phân
- Một số bài toán tìm kiếm trên cây
Bài tập (1 tiết):
Cài đặt các thuật toán
Thực hành (1 tiết):
Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 3, 4
Bài giảng: Thao tác với danh sách
Chương, mục:
10
Mục đích, yêu cầu:
Trang 12Mục đích: Giới thiệu cho sinh viên nắm được một số thao tác trên danh sách liên kết và sử dụng danh sách liên kết vào giải bài toán cụ thể
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của thuật toán so với sử dụng mảng
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
6.1 Một số cấu trúc danh sách tuyến tính
- Cấu trúc mảng
- Cấu trúc danh sách liên kết
6.2 Thêm, bớt phần tử trên danh sách đơn
Bài tập (1 tiết):
Cài đặt các thuật toán
Thực hành (1 tiết):
Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 8
Bài giảng: Thao tác với danh sách (tiếp)
Chương, mục:
Trang 13Tiết thứ: 41-44 Tuần thứ: 11
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được một số thao tác trên danh sách liên kết và sử dụng danh sách liên kết vào giải bài toán cụ thể
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của thuật toán so với sử dụng mảng
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
6.3 Thuật toán tính giá trị của biểu thức
- Biểu thức dạng trung tố
- Biểu thức dạng hậu tố
6.4 Tính toán với số lớn
- Cộng, trừ hai số lớn
- Nhân hai số lớn
Bài tập (1 tiết):
Cài đặt các thuật toán
Thực hành (1 tiết):
Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 8
Trang 14Bài giảng: Thao tác với cấu trúc cây
Chương, mục:
12
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được một số thao tác trên cấu trúc cây và sử dụng cấu trúc cây vào giải bài toán cụ thể
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của thuật toán so với sử dụng mảng, so sánh thời gian chạy với các cấu trúc khác
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
7.1 Xây dựng cây nhị phân tìm kiếm
- Thủ tục thêm một phần tử
- Xây dựng cây nhị phân tìm kiếm cho một dãy khóa
7.2 Duyệt cây
- Duyệt cây nhị phân
- Duyệt cây tổng quát
Bài tập (1 tiết):
Cài đặt các thuật toán, ghi thứ tự duyệt cây
Thực hành (1 tiết):
Thao tác xóa phần tử trên cây, cây cân bằng
- Yêu cầu SV chuẩn bị:
Sinh viên tìm hiểu trước nội dung bài
- Chi chú:
Trang 15− Giáo viên chuẩn bị một số minh họa về đánh giá thuật toán qua thực nghiệm
− SV tự học: Viết chương trình cho các thuật toán được nêu trong bài Kiểm nghiệm hiệu quả của thuật toán
− Đọc tài liệu tham khảo: 6, 7
Bài giảng: Thao tác với cấu trúc cây (tiếp)
Chương, mục:
13
Mục đích, yêu cầu:
Mục đích: Giới thiệu cho sinh viên nắm được một số thao tác trên cấu trúc cây và sử dụng cấu trúc cây vào giải bài toán cụ thể
Yêu cầu: Sinh viên viết chương trình thử nghiệm cho các thuật toán, chạy với bộ dữ liệu số lớn, phân tích sự ảnh hưởng thời gian của thuật toán so với sử dụng mảng, so sánh thời gian chạy với các cấu trúc khác
- Hình thức tổ chức dạy học
Giới thiệu lý thuyết
- Thời gian:
4 tiết
- Địa điểm:
Phòng học
- Nội dung chính:
7.3 Xây dựng cây nhị phân Huffman
- Xây dựng cây Huffman
- Đánh giá hiệu quả
7.4 Cây cân bằng
- Chỉnh nút
- Đánh giá hiệu qủa
Bài tập (1 tiết):
Cài đặt các thuật toán
Thực hành (1 tiết):
- Xây dựng cây nhị phân tìm kiếm
- Xây dựng cậy Huffman