Bài giảng Cấu trúc dữ liệu giải thuật: Phân tích thiết kế giải thuật bao gồm những nội dung về từ bài toán đến chương trình, các kỹ thuật thiết kế giải thuật như chia để trị, quay lui. Ngoài ra, bài giảng còn đưa ra một số bài tập liên quan tới vấn đề này. | Phân tích thiết kế giải thuật Phạm Nguyên Khang, Đỗ Thanh Nghị Khoa CNTT – Đại học Cần Thơ {pnkhang,dtnghi}@ 2 Nội dung • Mục tiêu • Từ bài toán đến chương trình • Các kỹ thuật thiết kế giải thuật – – Chia để trị Quay lui ● ● – – Vét cạn Nhánh cận Háu ăn/Tham ăn/Tham lam/ (Greedy) Quy hoạch động • Bài tập 3 Mục tiêu • Biết các kỹ thuật thiết kế giải thuật: từ ý tưởng cho đến giải thuật chi tiết. • Hiểu rõ nguyên lý của các kỹ thuật phân tích thiết kế giải thuật. • Vận dụng kỹ thuật phân tích thiết kế để giải các bài toán thực tế: các bài toán dạng nào thì có thể áp dụng được kỹ thuật này. 4 Từ bài toán đến chương trình Thiết kế Lập trình Đánh giá Bài toán thực tế Giải thuật Kỹ thuật thiết kế giải thuật: Chia để trị, quy hoạch động, háu ăn, nhánh cận, Giải thuật tốt Kỹ thuật phân tích đánh giá giải thuật: •Độ phức tạp của giải thuật •Cải tiến GT #include Chương trình Ngôn ngữ lập trình: •PASCAL, C/C++, JAVA, 5 Kỹ thuật chia để trị (ý tưởng) • Yêu cầu: – Cần phải giải bài toán có kích thước n. • Phương pháp: – – – Ta chia bài toán ban đầu thành một số bài toán con đồng dạng với bài toán ban đầu có kích thước nhỏ hơn n. Giải các bài toán con được các lời giải con Tổng hợp lời giải con lời giải của bài toán ban đầu. •. Chú ý: – – Đối với từng bài toán con, ta lại chia chúng thành các bài toán con nhỏ hơn nữa. Quá trình phân chia này sẽ dừng lại khi kích thước bài toán đủ nhỏ mà ta có thể giải dễ dàng Gọi là bài toán cơ .