2.4.1. Thuật toán giải (RKP)
Trong phần này, ta xét bài toán (RKP(I,Γ)) được ký hiệu đơn giản là (RKP). Ngoài ra tất cả các dữ liệu {wi}i∈I,{wi}i∈I và b được giả thiết là nguyên, không âm. Điều đó chỉ ra rằng thuật toán quy hoạch động có thể giải bài toán chiếc túi cổ điển vẫn được áp dụng.
2.4.1.1. Thuật toán lặp
Trong thuật toán sau đây, giá trị của Γ tăng dần cho tới khi phương án tối ưu của bài toán (RKP(I,Γ)) là phương án của bài toán (SKP).
Đầu vào: Bài toán (RKP(I,Γ)), giá trị ε > 0 đủ bé. Đầu ra: Phương án xấp xỉ tối ưu với độ chính xác ε.
Bước 1. Đặt k = 0.
Bước 2. Giải bài toán (RKP(I, k)), được phương án tối ưu là x(k). Bước 3. Đặt I0 = I(x(k)). Xác định Γ0 là giá trị lớn nhất của {0, ...,|I0|} sao cho x(k) là phương án của bài toán (RKP(I0,Γ0)).
Bước 4. Tính cận dưới B ≤ P P
i∈I0wi ≤ b
Nếu B ≥ 1−ε, thì x(k) là phương án của (SKP). Dừng lại. Ngược lại, sang bước 5.
Bước 5. Gán k := Γ0 + 1, trở lại bước 2.
Chú ý rằng tại bước 4, ta có P Pi∈I0 wi ≤ b = P(w.x(k) ≤ b). Do vậy thuật toán sẽ dừng chỉ với một phương án của (SKP). Ngoài ra, x(k) là phương án của (RKP(I0, k)) (xem lại Bổ đề 2.3.2.1), chúng ta có Γ0 ≥ k. Do vậy, việc tăng chỉ số k tại mỗi vòng lặp đảm bảo sự hội tụ của thuật toán (thực ra khi k = n= |I| xác suất để x(n) là phương án, bằng 1, thuật toán dừng ở bước 4, do đó k không thể vượt quá giá trị này).
2.4.1.2. Bổ đềThuật toán nêu trên sẽ cho ta một phương án của(SKP) bằng cách giải nhiều nhất là n+ 1 bài toán tối ưu hoá chiếc túi.
Chú ý. Trước hết, từ bước lặp k, không cần phải xem xét bài toán (RKP(I, l)), với k + 1 ≤ l ≤ Γ0. Thực ra x(k) đã là phương án của (RKP(I,Γ0)) từ khi nó là phương án của (RKP(I0,Γ0)). Đó là lý do mà ta xem xét trực tiếp Γ0+ 1 từ bước 5. Mặt khácΓ0 tại bước 3 có thể tính toán trong thời gian tuyến tính. Thực tế thì Γ0 là giá trị tối ưu của bài toán
max {Γ} với điều kiện
X i∈I0 wi + max S⊆I0: |S|=Γ X i∈S (wi −wi) ≤ b Γ ∈ {0, ..., n}.
Điều đó là đủ để xem xét tập S = ∅ và điền đầy đủ các chỉ số của biến thiên trọng lượng (wi−wi). Ngay khi P
i∈S(wi−wi) > b−P
ta có được Γ0 = |S|+ 1.
Để tính cận dưới B tại bước 4, chúng ta có thể tham khảo các ví dụ về cận xác suất trong [6]. Chất lượng của cận sẽ có ảnh hưởng trực tiếp lên số lần lặp của thuật toán. Đồng thời lưu ý rằng nếu |I0| = Γ0 thì xác suất để được phương án là 1 và thuật toán dừng (Bổ đề 2.3.2.1).
2.4.2. Độ phức tạp của bài toán (RKP).
2.4.2.1. Định lý.Bài toán (RKP) thuộc lớp NP-khó (tồn tại thuật toán đa thức không đơn định giải nó).
Chứng minh. Trong trường hợp đặc biệt Γ = 0, đó là bài toán chiếc túi cổ điển với dữ liệu trọng lượng ai = wi. Do vậy, với bài toán chiếc túi cổ điển là N P-khó nên bài toán RKP, trong trường hợp này, là N P-khó.
Mặt khác, thuật toán quy hoạch động cổ điển vẫn có thể chấp nhận để giải bài toán (RKP). Ký hiệu (RKPk(Γ, h)) là bài toán (RKP) với tham số Γ ∈ {0, ..., n} và dung lượng h ∈ {1, ..., b}, xét chỉ với các phần tử trong
Ik = {1, ..., k}, mọi k ∈ I. Ký hiệu Fk(Γ, h) là giá trị tối ưu của hàm mục tiêu ở bước k. Không mất tổng quát ta giả sử rằng các phần tử của I được sắp xếp, tức là với i < j thì (wi −wi) ≤ (wj −wj).
Với mỗi k, chúng ta giả sử rằng h < 0 thì Fk(., h) = −∞. Với k = 1, F1 xác định như sau: nếu Γ = 0 thì F1(0, h) = 0, với h < w1 c1, với h ≥ w1, nếuΓ ≥1 thì F1(Γ, h) = 0, với h < w1 c1, với h ≥ w1.
Xét h ∈ {1, ..., b} và Γ ∈ {1, ..., n}. Vậy giá trị tối ưu của hàm mục tiêu bài toán (RKPk(Γ, h)) được tính theo công thức
Chúng ta hãy chứng minh rằng Fk(Γ, h) là giá trị tối ưu của hàm mục tiêu bài toán (RKPk(Γ, h)). Kết quả rõ ràng với k = 1. Ta xét với k ≥ 2.
Trước hết, chúng ta chỉ ra rằng mỗi phương án x(k−1) ∈ {0; 1}k−1 của bài toán (RKPk−1(Γ, h)) hoặc bài toán (RKPk−1(Γ − 1, h− wk)) có thể mở rộng thành phương án x(k) ∈ {0; 1}k của bài toán (RKPk(Γ, h)) bằng cách bổ sung thêm toạ độ thứ k cho x(k−1).
Nếu x(k−1) là phương án của (RKPk−1(Γ, h)) thì toạ độ x(kk) = 0 để x(k)
là phương án của bài toán (RKPk(Γ, h)).
Nếu x(k−1) là phương án của(RKPk−1(Γ−1, h−wk)) thì toạ độ x(kk) = 1 để x(k) là phương án của bài toán (RKPk(Γ, h)). Từ đó chúng ta có
X i∈Ik wix(ik) + maxn X i∈S (wi −wi)xi(k) : S ⊆ Ik,|S| ≤Γo = X i∈Ik−1 wix(ik−1) +wk + maxn X i∈S (wi−wi)x(ik−1) : S ⊆ Ik−1,|S| ≤Γ−1 o .
Điều này được suy ra từ giả thiết về biến trọng lượng. Kết hợp lại ta được
X i∈Ik−1 wix(ik−1)+ maxn X i∈S (wi−wi)x(ik−1) : S ⊆ Ik−1,|S| ≤Γ−1 o ≤h−wk.
Từ đây cho thấy x(k) là phương án của bài toán (RKPk(Γ, h)).
Ngược lại, giả sử x(k) là phương án của(RKPk(Γ, h)), k−1toạ độ đầu là phương án của bài toán (RKPk−1(Γ, h)) hoặc của bài toán (RKPk−1(Γ− 1, h−wk)). Ký hiệu x(k) là phương án của (RKPk(Γ, h)). Giả sử x(k−1) ∈ {0; 1}k−1 là vectơ lấy k −1 toạ độ đầu của x(k). Lúc có thể xảy ra:
(a) x(kk) = 0, vậy thì x(k−1) là phương án của (RKPk−1(Γ, h)).
(b) x(kk) = 1, vậy thì chúng ta có thể chứng minh bằng phản chứng. Ta coi x(k−1) là phương án của (RKPk−1(Γ−1, h−wk)). Giả sử rằng tồn tại
S ⊆ Ik−1 với |S| = Γ−1 sao cho
X
i∈Ik−1
wix(ik−1)+ X
i∈S
Đặt S0 = S ∪ {k}, chúng ta có X i∈Ik wix(ik) +X i∈S0 (wi−wi)x(ik) = = X i∈Ik wix(ik) +X i∈S (wi −wi)xi(k)+ (wk −wk) = X i∈Ik−1 wix(ik−1) +X i∈S (wi −wi)x(ik−1) +wk > h.
Do vậy x(k) không thể là phương án của bài toán (RKPk(Γ, h)).
Cuối cùng, chúng ta sẽ chỉ ra rằng tập hợp các vectơ bao gồm k − 1 toạ độ đầu trong phương án x(k) của bài toán (RKPk(Γ, h)) là như nhau đối với tất cả các phương án của riêng từng bài toán (RKPk−1(Γ, h)) và (RKPk−1(Γ−1, h−wk)). Từ đó chúng ta có
Fk(Γ, h) = max{Fk−1(Γ, h);ck+Fk−1(Γ−1, h−wk)}.
Từ đó cho thấy để tìm Fn(Γ, b) có thể tính toán với độ phức tạp thời gian đa thức theo thuật toán không đơn định O(nΓb).
Từ Bổ đề 2.4.1.2 và Định lý 2.4.2.2 ta có hệ quả sau:
Hệ quả. Thuật toán nêu trên chạy trong thời gian đa thức không đơn định nhờ việc sử dụng thuật toán quy hoạch động.
Chú ý rằng trong trường hợp với i ∈ I, wi = w > 0và (wi−wi) =δ > 0, người ta đã chứng minh Mệnh đề sau đây:
2.4.2.2. Mệnh đề. Giả sử với mọi i ∈ I, wi = w > 0 và (wi −wi) =
δ >0. Khi đó phương án tối ưu x∗ của (RKP(I,Γ)) thoả mãn
X i∈I x∗i = min{n; [b−Γδ/w]}, nếu Γ(w +δ) ≤ b [b/(w+δ)], các trường hợp khác.
trong đó ký hiệu [a] là phần nguyên của a. 2.4.3. Ví dụ. (xem [3])
Xét bài toán max n f = 10 X i=1 ixi : 10 X i=1 wixi ≤ 80;x∈ {0; 1}10o,
trong đó tất cả các trọng lượng wi phân bố đều trên đoạn [8,12], nghĩa là
wi = 8, wi = 12, với mọi i ∈ I = {1,2, ...,10} và δ = 4. Giả sử lấy ε= 0,1, tức là chúng ta cần tìm x của bài toán chiếc túi với xác suất tối thiểu là 90%. Chú ý rằng theo giả thiết xác suất đã nêu, xác suất P P
i∈I0 wi ≤b
được biết theo sự phân tích đối với tất cả các tập con I0 ⊆ I. Sau đây, ta ký hiệu e(i) = (e(ji)) là vectơ 0-1, với ei(i) = 1 và e(ji) = 0, i 6= j. Ta có:
• k = 0: Từ Mệnh đề 2.4.2.2, chúng ta biết rằng P i∈Ix(0)i = [80/8] = 10, và do vậy x(0) = P10 i=1e(i). Chúng ta có Γ0 = [(80 − 10∗ 8)/4] = 2, tính được P P10 i=1wi ≤ 80= 0 (chỉ tình huống có thể là w = w). • k = 1: Từ Mệnh đề 2.4.2.2, P i∈Ix(1)i = [(80 − 4)/8] = 9, và do vậy x(1) = P10 i=2e(i). Chúng ta có Γ0 = [(80 − 9 ∗ 8)/4] = 2, tính được P P10 i=2wi ≤ 80 = 0,001< 1−0,1 = 0,9. • k = 3: Từ Mệnh đề 2.4.2.2, P i∈Ix(3)i = [(80 − 12)/8] = 8, và do vậy x(3) = P10 i=3e(i). Chúng ta có Γ0 = [(80 − 8 ∗ 8)/4] = 4, tính được P P10 i=3wi ≤ 80 = 0,5< 0,9. • k = 5: Từ Mệnh đề 2.4.2.2, P i∈Ix(5)i = [(80−20)/8] = 7, và do vậy x(5) = P10 i=4e(i). Chúng ta tính được P P10 i=4wi ≤ 80 = 0,99... > 0,9. Dừng lại. Trả lời x(5) là phương án của (RKP(I,Γ)), do vậy nó là phương án tối ưu của (SKP).
Từ đó, để tìm x(5) = (x(5)i ) ta giải bài toán max{f = 10 X i=1 ix(5)i : 10 X i=1 x(5)i = 7;x ∈ {0; 1}10}.
Dễ dàng ta nhận được phương án tối ưu là: x∗ = (0,0,0,1,1,1,1,1,1,1), với maxf = 4 + 5 + 6 + 7 + 8 + 9 + 10 = 28.
Kết luận
Kết quả nghiên cứu, thực hiện đề tài, Luận văn đã giải quyết được một số vấn đề như sau:
1. Trình bày một cách hệ thống những khái niệm và kiến thức cơ sở nhằm phục vụ cho việc nghiên cứu các vấn đề có liên quan trong luận văn. Cụ thể đã trình bày
+ Một số vấn đề cơ bản về xác suất thống kê toán học,
+ Bài toán quy hoạch tuyến tính và bài toán quy hoạch tuyến tính ngẫu nhiên,
+ Bài toán quy hoạch nguyên và bài toán chiếc túi cổ điển với thuật toán quy hoạch động.
2. Trình bày bài toán chiếc túi với ràng buộc ngẫu nhiên và bài toán tương đương.
3. Phát biểu và chứng minh một số tính chất của bài toán đang xét. Từ đó nêu ra thuật toán giải tương ứng.
4. Phát biểu và chứng minh về tính phức tạp của của thuật toán đã nêu. 5. Đưa ra ví dụ bằng số để thể hiện hiệu quả của thuật toán.
Khi có điều kiện cho phép, chúng tôi sẽ cố gắng tiếp tục nghiên cứu: ◦ Xây dựng phần mềm giải bài toán bằng thuật toán đã nêu.
Tài liệu tham khảo
[1]. Nguyễn Văn Quảng, (2007), Giáo trình xác suất thống kê, NXB Đại học Quốc gia Hà Nội.
[2]. Trần Xuân Sinh, (2005), Các phương pháp ngẫu nhiên giải bài toán quy hoạch, Bài giảng dùng cho Cao học chuyên ngành Xác suất Thống kê toán học, Đại học Vinh.
[3]. Trần Xuân Sinh, Nguyễn Thị Thanh Hiền, Nguyễn Văn Hưng (2009), Một lớp bài toán đầu tư tài chính, Tạp chí Khoa học, Đại học Vinh, Tập XXXVIII, Số 2A (2009), 55-61.
[4]. Nguyễn Duy Tiến - Vũ Viết Yên (2001), Lý thuyết xác suất, NXB Giáo dục, Hà Nội.
[5]. Nguyễn Đức Nghĩa, (1994), Tối ưu hoá, Trường Đại học Bách khoa Hà Nội.
[6]. D. Bertsimas and M. Sim, (2004), The Price of Robustness, Oper. Res., Vol.52, No1(2004), 35-53.
[7]. X. Chen, M. Sim and P. Sun, (2005),A Robust Optimization Perspective of Stochastic Programming, Submitted to Oper. Res.
[8]. O. Klopfenstein and D. Nace, (2006),A Robust Approach to the Chance- constrained Knapsack Problem, 60205 Compiègne Cedex, France.