Tải bản đầy đủ - 0 (trang)
Phương pháp tham lam

Phương pháp tham lam

Tải bản đầy đủ - 0trang

c. Mơ tả thuật tốn

 

Input: A[1..n]







Output: S {tập lời giải}

Procedure Thamlam(A, n)

S:=

While A do

Begin

x:=chon(A);

A:=A-{x};

If (S {x} chấp nhận được) then

S:= S {x}

End;



d. Một số bài toán

Bài toán 1: bài toán trả tiền của máy rút tiền tự động ATM













Trong máy rút tiền tự động ATM, ngân hàng đã chuẩn bị sẵn các loại tiền có

mệnh giá 100.000 đồng, 50.000 đồng, 20.000 đồng và 10.000 đồng.

Giả sử mỗi loại tiền đều có số lượng khơng hạn chế.

Khi có một khách hàng cần rút một số tiền n đồng (tính chẵn đến 10.000 đồng,

tức là n chia hết cho 10000).

Hãy tìm một phương án trả tiền sao cho trả đủ n đồng và số tờ giấy bạc phải trả

là ít nhất.

















Gọi X = (X1, X2, X3, X4) là một phương án trả tiền. Trong đó:

X1 là số tờ giấy bạc mệnh giá 100.000 đồng

X2 là số tờ giấy bạc mệnh giá 50.000 đồng

X3 là số tờ giấy bạc mệnh giá 20.000 đồng

X4 là số tờ giấy bạc mệnh giá 10.000 đồng.

X1 + X2 + X3 + X4 nhỏ nhất và

X1*100.000 + X2*50.000 + X3*20.000 + X4*10.000=n











Để có số tờ giấy bạc phải trả (X1 + X2 + X3 + X4) nhỏ nhất thì các tờ giấy bạc

mệnh giá lớn phải được chọn nhiều nhất.

Trước hết ta chọn tối đa các tờ giấy bạc mệnh giá 100.000 đồng, nghĩa là X1 là

số nguyên lớn nhất sao cho X1 * 100.000 ≤ n. Tức là X1 = n DIV 100.000.

Xác định số tiền cần rút còn lại là hiệu n – X1 * 100000 và chuyển sang chọn

loại giấy bạc 50.000 đồng,…



Bài toán 2: Bài tốn cái ba lơ











Cho một cái ba lơ có thể đựng một trọng lượng W và n loại đồ vật.

Mỗi đồ vật i có một trọng lượng gi và một giá trị vi (số lượng khơng hạn chế).

Tìm một cách lựa chọn các đồ vật đựng vào ba lô: chọn các loại đồ vật nào, SL

mỗi loại sao cho tổng trọng lượng không vượt quá W và tổng giá trị là lớn nhất.



Phương pháp

1. Tính đơn giá= giá trị/trọng lượng cho các loại đồ vật.

2. Xét các loại đồ vật theo thứ tự đơn giá từ lớn đến nhỏ.

3. Với mỗi đồ vật được xét sẽ lấy một số lượng tối đa mà trọng lượng còn lại của

ba lơ cho phép.

4. Xác định trọng luợng còn lại của ba lơ và quay lại bước 3 cho đến khi khơng

còn có thể chọn được đồ vật nào nữa.



4. Quy hoạch động











Giới thiệu phương pháp

Phương pháp thực hiện

Một số bài tốn



Giới thiệu phương pháp











Kĩ thuật chia để trị thường dẫn tới một giải thuật đệ quy  có một số giải thuật có

độ phức tạp thời gian mũ, tuy nhiên, thường chỉ có một số đa thức các bài tốn

con  một số bài tốn con nào đó đã giải nhiều lần.

Tránh việc giải một số bài toán con nhiều lần  tạo một bảng lưu trữ kết quả các

bài toán con và khi cần chúng ta sẽ sử dụng kết quả đã được lưu trong bảng mà

không cần phải giải lại bài tốn đó.

Lấp đầy bảng kết quả các bài tốn con theo một quy luật nào đó để nhận được kết

quả của bài toán ban đầu được gọi là quy hoạch động (dynamic programming).



Ví dụ: Tính phần tử thứ n của dãy số Fibonaci

Function F(n: integer): integer;

Begin



If n≤ 2 then F:=1

else F:= F(n-1)+F(n-2);



End;







Theo quy hoạch động:



Function F(n: integer): integer;

var i: integer; a: array[1..100] of integer;

Begin

a[1]:=1; a[2]:=1;

For i:=3 to n do

a[i]:=a[i-1]+a[i-2];

F:= a[n];

End;







Phương pháp quy hoạch động sẽ khơng đem lại hiệu quả trong các trường hợp

sau:



– Khơng tìm được cơng thức truy hồi.

– Số lượng các bài toán con cần giải quyết và lưu giữ kết quả là rất lớn.

– Sự kết hợp lời giải của các bài toán con chưa chắc cho ta lời giải của bài toán ban đầu.



Phương pháp thực hiện













Phân tích bài tốn (biểu diễn bài toán dưới dạng một bài toán nhiều mức)

Xây dựng giải pháp đệ quy (lập công thức truy hồi)

Lập bảng (sử dụng các mảng để tính tốn các giá trị theo kiểu dưới-lên)

Tổng hợp kết quả (kiến tạo một lời giải cho bài tốn từ các thơng tin đã tính

tốn)



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Phương pháp tham lam

Tải bản đầy đủ ngay(0 tr)

×