Ta tìm giá trị tốt nhất trong dữ liệu đã được sắp xếp trong bước 1 và thỏa điều kiện của bài toán để gán cho xi.[r]
Trang 1CƠ SỞ LẬP TRÌNH
NÂNG CAO
Biên soạn: Ths.Tôn Quang Toại TonQuangToai@yahoo.com
TPHCM, NĂM 2013
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2PHƯƠNG PHÁP THIẾT KẾ
THUẬT TOÁN – THAM LAM –
Chương 7
Trang 3Nội dung
• Giới thiệu
• Phương pháp
• Sơ đồ cài đặt
• Các ví dụ
• Ưu điểm và khuyết điểm
Trang 4Hình ảnh
1
2
3
4 5
Trang 5Giới thiệu
• Định nghĩa [Tham lam – Greedy]: Tham
lam là một phương pháp thiết kế thuật
toán để tìm nghiệm của bài toán tối ưu
bằng cách xây dựng nghiệm dần dần
từng bước Tại mỗi bước:
thời điểm đó mà không quan tâm đến tương lai (tối ưu cục bộ)
tại mỗi bước sẽ cho tối ưu toàn cục
Trang 6Phương pháp
• Phát biểu bài toán: Giả sử bài toán yêu cầu tìm phương án X=(x1, x2, …, xn),
trong đó
án X (f là hàm mục tiêu hay hàm chi phí)
Trang 7Phương pháp
• Phương pháp Tham lam
nghiệm X của bài toán:
• Ban đầu X=( )
• Giả sử đã xây dựng được (k-1) thành phần của nghiệm (x1, x2, …, xk-1)
• Bây giờ ta mở rộng nghiệm thành (x1, x2, …, xk-1, xk) bằng cách chọn xk là giá trị tốt nhất trong tập
Dk
Trang 8Phương pháp
• Phương pháp Tham lam
tự tăng dần hay giảm dần theo tiêu chí nào đó
từ đó giúp việc chọn giá trị tốt nhất cho xi sẽ
dễ dàng hơn
• Bước 1 [Sắp xếp]: Sắp xếp dữ liệu D tăng dần hay giảm dần theo tiêu chí nào đó
• Bước 2 [Chọn giá trị tốt nhất]: Với mỗi thành phần
xi Ta tìm giá trị tốt nhất trong dữ liệu đã được sắp xếp trong bước 1 và thỏa điều kiện của bài toán để gán cho xi
Trang 9Sơ đồ cài đặt
{
X=();
for (i=1; i<=n; i++) {
Xác định Di;
xi = SelectBest(Di); } }
• Sơ đồ 1:
Trang 10Sơ đồ cài đặt
{
Sort(D);
for (i=1; i<=n; i++)
{
- Chọn v là giá trị tốt nhất trong D và
thỏa điều kiện bài toán
- xi = v;
- Bỏ v khỏi D }
}
• Sơ đồ 2: