Các kỹ thut lập trình nâng cao
Trnh Tấn Đt
Khoa CNTT - Đi Hc i Gòn
Email: trinhtandat@sgu.edu.vn
Website: https://sites.google.com/site/ttdat88/
Ni dung
Gii thiu khái nim thut toán/ thut gii độ phức tp thut toán.
Các kỹ thut lp trình nâng cao
Kỹ thut chia để tr (divide and conquer)
Kỹ thut quy hoch đng (dynamic programming)
oBài toán dãy con tăng dài nhất (không liên tiép)
oBài toán Balô: loại 1 2
Kỹ thut tham lam (greedy)
Kỹ thut quay lui (backtracking)
Gii thiu
Tng quan về thut toán.
Thut toán ?
Tp hp hữu hn các hướng dn ràng để gii quyết mt bài toán(vn
đ).
Mở rng(máy tính): mt dãy hu hn các bước không mp mờ
th thc thi đưc, quá trình hành đng theo các bước này phi dng
cho được kết quả như mong mun.
Tính cht bn ca thut toán:
oXác định = không mập mờ + thực thi đưc
oHu hạn
oĐúng
Gii thiu
Ví d:
Một lp hc cn chn lp trưởng theo các bước:
1. Lp danh sách sinh viên
2. Sp tht
3. Chn người đứng đu làm lp trưởng
Danh sách cn gì?
Sp theo thtnào? (tăng gim, tiêu chí nào)
Nếu trùng tiêu chí thì gii quyết ra sao?
Gii thiu
Sa lại:
a) Lp danh sách theo: hn, ngày tháng năm sinh, điểm các môn, điểm trung bình
cuối năm.
b) Sp xếp theo ĐTB giảm. Nếu ĐTB bằng nhau cùng hng.
c) Nếu có 01 HS đứng đầu chọn, ngược lại chọn người có điểm toán cao nht, nếu
không chọn được bốc thăm.
Phân biệt mp mvà lựa chọn có quyết định:
Mp m thiếu thông tin hoặc có nhiều lựa chọn nhưng không đủ điều kiện quyết
định, ví dụ: ớc 1, 2.
La chọn có quyết định hn toàn xác định duy nht trong điều kiện c th ca
vn đề, ví dụ ớc c.