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]
(1)CƠ 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
(2)PHƯƠNG PHÁP THIẾT KẾ THUẬT TOÁN
– THAM LAM –
(3)Nội dung
• Giới thiệu
• Phương pháp • Sơ đồ cài đặt • Các ví dụ
(4)Hình ảnh
1 2
3
(5)Giới thiệu
• Định nghĩa [Tham lam – Greedy]: Tham
lam phương pháp thiết kế thuật toán để tìm nghiệm tốn tối ưu bằng cách xây dựng nghiệm từng bước Tại bước:
– Chúng ta luôn chọn giá trị tốt
thời điểm mà khơng quan tâm đến tương lai (tối ưu cục bộ)
– Chúng ta hy vọng việc chọn tối ưu cục
(6)Phương pháp
• Phát biểu toán: Giả sử toán yêu
cầu tìm phương án X=(x1, x2, …, xn), trong
– xi chọn từ tập Di
– f(X) hàm đánh giá tốt phương
(7)Phương pháp
• Phương pháp Tham lam
– Phương pháp Tham lam xây dựng dần
nghiệm X tốn:
• Ban đầu X=( )
• Giả sử xây dựng (k-1) thành phần
nghiệm (x1, x2, …, xk-1)
• Bây ta mở rộng nghiệm thành (x1, x2, …, xk-1,
(8)Phương pháp
• Phương pháp Tham lam
– Thông thường tập D theo trật
tự tăng dần hay giảm dần theo tiêu chí từ giúp việc chọn giá trị tốt cho xi dễ dàng
• Bước [Sắp xếp]: Sắp xếp liệu D tăng dần hay
giảm dần theo tiêu chí
• Bước [Chọn giá trị tốt nhất]: Với thành phần
(9)Sơ đồ cài đặt
void Greedy1()
{
X=();
for (i=1; i<=n; i++) {
Xác định Di;
xi = SelectBest(Di); } }
(10)Sơ đồ cài đặt
void Greedy2()
{
Sort(D);
for (i=1; i<=n; i++) {
- Chọn v giá trị tốt D và thỏa điều kiện toán
- xi = v;
- Bỏ v khỏi D }
}