0
Tải bản đầy đủ (.pdf) (107 trang)

Thuật toán quy hoạch tuyến tính

Một phần của tài liệu GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN PHỦ ĐỈNH NHỎ NHẤT (Trang 59 -65 )

Trong phần này ta giới thiệu các thuật toán xấp xỉ sử dụng quy hoạch tuyến tính [3][17]. Ý tưởng của cách tiếp cận này đó là bài toán quy hoạch có liên quan tới bài toán phủ đỉnh nhỏ nhất là NP – khó. Do đó, ta có thể quy dẫn bài toán tối ưu hóa NP – đầy đủ bất kỳ về quy hoạch nguyên (Integer Linear Problem – ILP), “nới lỏng” nó về một bài toán quy hoạch tuyến tính (Linear Problem – LP) bằng cách loại bỏ các ràng buộc tính nguyên, giải bài toán quy hoạch tuyến tính, và sau đó “làm tròn” lời giải quy hoạch tuyến tính thành một lời giải cho bài toán quy hoạch gốc.

3.3.3.1. Bài toán quy hoạch tuyến tính nguyên và quy hoạch tuyến tính nới lỏng

Định nghĩa: quy hoạch tuyến tính nguyên là bài toán quy hoạch tuyến tính trong đó đòi hỏi thêm tất cả các biến đều phải là nguyên.

Giống như trong quy hoạch tuyến tính, các ràng buộc trong bài toán quy hoạch nguyên tạo thành một đa diện. Tuy nhiên, tập các phương án chấp nhận được là tập tất cả các điểm có tọa độ nguyên bên trong đa diện chứ không phải toàn bộ đa diện này. Do đó, miền chấp nhận được không phải là miền lồi. Hơn nữa, lời giải tối ưu có thể không nằm trên các điểm cực biên của hình đa diện mà phải tìm tại điểm cực biên của bao lồi của tất cả các điểm nguyên trong miền chấp nhận.

Hình 3.6. Miền chấp nhận được của bài toán quy hoạch tuyến tính

Thông thường, khi thiết kế các thuật toán xấp xỉ dựa trên quy hoạch tuyến tính, ta thực hiện theo cách tiếp cận sau:

1. Quy dẫn bài toán về một bài toán quy hoạch nguyên (ILP).

2. Nới lỏng các ràng buộc tính nguyên, tức là cho phép các biến có thể nhận giá trị không nguyên để thu được bài toán quy hoạch tuyến tính nới lỏng LP.

3. Giải bài toán quy hoạch tuyến tính nới lỏng LP, thu được lời giải tối ưu với các biến có giá trị thường là không nguyên.

4. “Làm tròn” các lời giải phân số này để thu được một lời giải nguyên chấp nhận được.

Ở đây, lời giải tối ưu của LP không nhất thiết phải nguyên. Nhưng vì miền chấp nhận được của LP rộng hơn miền chấp nhận được của ILP nên giá trị tối ưu của LP không tồi hơn giá trị tối ưu của ILP. Tức là giá trị tối ưu của LP là cận dưới cho giá trị tối ưu của bài toán ILP. Lời giải được làm tròn không nhất thiết là tối ưu cho bài toán

ban đầu nhưng trong một số trường hợp người ta chứng minh được rằng nó không khác nhiều so với lời giải tối ưu.

Dưới đây là cách tiếp cận quy hoạch tuyến tính cho bài toán phủ đỉnh nhỏ nhất. Phát biểu bài toán MVCP dưới dạng các ràng buộc tuyến tính:

Cho đồ thị có trọng số G = (V, E) với các đỉnh có trọng số wi, cần tìm một tập con các đỉnh có tổng trọng số nhỏ nhất sao cho mỗi cạnh của đồ thị đều kề với một đỉnh trong tập con.

a. Quy hoạch tuyến tính biến Bun

Cho một hàm mục tiêu tuyến tính và tập các ràng buộc tuyến tính, tìm một phép gán các giá trị 0, 1 cho các biến sao cho tất cả các ràng buộc tuyến tính đều được thỏa mãn và hàm mục tiêu được tối ưu. Bài toán quy hoạch tuyến tính biến Bun là bài toán NP – đầy đủ.

Đầu tiên ta quy dẫn bài toán phủ đỉnh nhỏ nhất về một bài toán quy hoạch nguyên. Ta đưa vào các biến xi nhận giá trị 1 hoặc 0 tương ứng với việc đỉnh i thuộc hay không thuộc phủ đỉnh. Bài toán phủ đỉnh với trọng số nhỏ nhất có thể phát biểu dược dạng bài toán quy hoạch tuyến tính biến Bun sau đây:

Tìm min của hàm i Vw xi i

với các ràng buộc xixj 1;( , )i j E

xi

0, 1 ;

 i V

Ràng buộc cơ bản của bài toán mô tả yêu cầu mỗi cạnh của đồ thị phải có ít nhất một đầu mút trong phủ đỉnh.

b. Quy hoạch tuyến tính nới lỏng

Bài toán quy hoạch tuyến tính nới lỏng của một bài toán quy hoạch tuyến tính nguyên thu được bằng cách loại bỏ các ràng buộc về tính nguyên của các biến

Để thu được một bài toán quy hoạch tuyến tính ta nới lỏng ràng buộc thứ hai về dạng: [0,1];

i

Bài toán quy hoạch tuyến tính nới lỏng có dạng Tìm min i i

i Vw x


với điều kiện xixj 1;( , )i j E

1xi0; i V

Định đề: Nếu x1 là lời giải tối ưu của bài toán LP nới lỏng và x2 là lời giải tối ưu của

ILP thì 1 2

i i i i

i Vw x i Vw x

 

.

Ví dụ: Xét bài toán tìm phủ đỉnh nhỏ nhất với đồ thị gồm 3 đỉnh như sau

Min x1x2x3

Với điều kiện

 

1 2 2 3 3 1 1 2 3 1 1 1 , , 0,1 x x x x x x x x x       

Hình 3.7. Bài toán quy hoạch tuyến tính nguyên tương đương

Dạng quy hoạch tuyến tính của bài toán

Min x1x2x3

Với điều kiện

2

1

1 2 2 3 3 1 1 2 3 1 1 1 1 , , 0 x x x x x x x x x        

Hình 3.8. Bài toán quy hoạch tuyến tính tương đương

Tất cả các đỉnh đều có trọng số là 1. Do đó, phủ đỉnh bất kỳ đều phải có ít nhất hai đỉnh, nên phủ đỉnh nhỏ nhất có trọng số là 2 và ở đây là phương án tối ưu có trọng số bằng 2. Bài toán LP có phương án là x1 = x2 = x3 = ½ và giá trị hàm mục tiêu là 3/2 < 2.

Gọi x* là phương án tối ưu của bài toán quy hoạch tuyến tính nới lỏng. Phần còn lại là thực hiện làm tròn lời giải dạng phân số này. Nguyên tắc làm tròn như sau:

 với mọi giá trị *

1 / 2

i

x thì ta đặt xi = 1 và đỉnh i được đưa vào phủ đỉnh S.

 với mọi giá trị *

1 / 2

i

x thì ta đặt xi = 0 và đỉnh i không được đưa vào phủ đỉnh. Toàn bộ ý tưởng trên gọi là thuật toán làm tròn giải bài toán phủ đỉnh

3.3.3.2. Thuật toán quy hoạch tuyến tính làm tròn cho bài toán phủ đỉnh

Thuật toán: VERTEXCOVER (V, E)

1. Xây dựng LP nới lỏng cho đồ thị (V, E).

2. Giải bài toán LP trong thời gian đa thức để tìm ra vector x* làm nhỏ nhất hàm

1

n i xi

.

4. for i = 1 to n do 5. if * 1 / 2 i x then S=S

 

i ; 6. return S.

Tuy nhiên câu hỏi đặt ra là liệu S có là một phủ đỉnh hay không và độ lớn của w(S) so với phủ đỉnh nhỏ nhất được đánh giá như thế nào?

Chứng minh S là một phủ đỉnh Xét cạnh e = (i, j) nào đó. Vì x*i + x*j 1, như vậy sẽ có * 1 / 2 i x hoặc * 1 / 2 j x , do đó sau khi làm tròn sẽ có hoặc i hoặc j thuộc phủ đỉnh S.

Chứng minh trọng số của phủ đỉnh S trả về bởi quy hoạch tuyến tính làm tròn nhỏ hơn hoặc bằng 2 lần trọng số phủ đỉnh tối ưu.

Gọi w*LP là giá trị tối ưu cho LP nới lỏng và S là phủ đỉnh thu được sau phép làm trong x*. Gọi S* là phủ đỉnh nhỏ nhất.

w*LPw(S*) vì S* là phủ đỉnh nhỏ nhất của bài toán nên nó tương ứng với một lời giải chấp nhận được của ILP, do đó cũng là lời giải chấp nhận được của LP.  w*LP = * * i i i i iw x i Sw x

 

 Vì x*i 1 / 2 với mọi giá trị i thuộc S, ta có *

i i (1 / 2) i (1 / 2) ( )

i Sw x i Sw w S

 

Như vậy trọng số của phủ đỉnh S trả về bởi quy hoạch tuyến tính làm tròn luôn nhỏ hơn hoặc bằng 2 lần trọng số của phủ đỉnh tối ưu. Thuật toán ở trên là thuật toán 2 – xấp xỉ cho bài toán phủ đỉnh có trọng số. Khi trọng số các đỉnh bằng 1 thì bài toán là bài toán phủ đỉnh cho đồ thị không có trọng số.

Một phần của tài liệu GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN PHỦ ĐỈNH NHỎ NHẤT (Trang 59 -65 )

×