CS Study Fun – Khoa học máy tính

Learn & Enjoy …

Phương pháp đơn hình (Simplex method) (1) – Bài toán QHTT, dạng chuẩn tắc và các định lý cơ bản

Posted by tqlong on Tháng Hai 23, 2008

Định nghĩa 1 (Quy hoạch tuyến tính). Bài toán quy hoạch tuyến tính (linear programming) là bài toán tìm cực tiểu sau

\displaystyle\mathrm{Opt}(P)=\min_x\{c^Tx|Ax\geq b\}.

Xem thêm ở bài về bài toán đối ngẫu.

Nhận xét:

  1. Nếu cỡ của ma trận Am\times n, ràng buộc Ax\geq b tương đương với m ràng buộc nhỏ
    a_i^Tx\geq b_i, i=1,\ldots m

    với a_i^T là dòng thứ i của ma trận A.

  2. Để cho tiện, trong loạt bài này ta kí hiệu a_i^T (chữ cái thường) là dòng thứ i của ma trận A, còn cột thứ j của ma trận A kí hiệu là A_j (chữ cái hoa).

Định nghĩa 2 (Dạng chuẩn tắc). Bài toán quy hoạch tuyến tính ở dạng chuẩn tắc (standard form) là bài toán tìm cực tiểu sau:

\displaystyle\mathrm{Opt}(P)=\min_x\{c^Tx|Ax= b,x\geq 0\}

Nhận xét:

  1. Dạng chuẩn tắc có thể đưa về dạng gốc bằng cách thiết lập ma trận như sau
    \displaystyle\mathrm{Opt}(P)=\min_x\{c^Tx|\widehat{A}x\geq \widehat{b}\}

    trong đó \widehat{A}=\left[\begin{array}{r}A\\-A\\I\end{array}\right], \widehat{b}=\left[\begin{array}{r}b\\-b\\ {0}\end{array}\right] ,

  2. Dạng gốc có thể đưa về dạng chuẩn tắc bằng cách thiết lập ma trận như sau
    \displaystyle\mathrm{Opt}(P)=\min_x\{\widehat{c}^Tz|\widehat{A}z= b,z\geq 0\}

    trong đó z=\left[\begin{array}{c}x^+\\x^-\\s\end{array}\right], \widehat{A} = \left[\begin{array}{rrr}A & -A & -I\end{array}\right], \widehat{c} = \left[\begin{array}{rrr}c & -c & 0\end{array}\right].

  3. Như vậy, hai dạng của bài toán quy hoạch tuyến tính là tương đương. Tuy nhiên, trong phương pháp đơn hình, người ta sử dụng dạng chuẩn tắc bởi dạng này có một số tính chất rất thuận lợi cho việc tìm ra điểm cực biên.

Định lý (hàm tuyến tính bị chặn đạt cực trị trong đa diện lồi). Nếu hàm tuyến tính bị chặn dưới trong đa diện lồi P thì nó đạt cực tiểu trong đa diện lồi đó. Đồng thời nếu đa diện lồi không chứa đường thẳng thì hàm tuyến tính đó đạt cực tiểu tại một trong các điểm cực biên.

Chứng minh: Xem trong bài cấu trúc của đa diện lồi.

Hệ quả: Với bài toán quy hoạch tuyến tính ở dạng chuẩn tắc, do điều kiệnx\geq 0 nên đa diện lồi tạo nên bởi các ràng buộc không chứa đường thẳng. Do đó, hàm tuyến tính phải đạt giá trị cực tiểu (nếu có) ở một trong các điểm cực biên.

Định nghĩa (nghiệm cơ sở): Điểm x gọi là nghiệm cơ sở (basic solution) của đa diện lồi P=\{x:Ax\geq b\} nếu có n ràng buộc được kích hoạt tại x độc lập tuyến tính, tức là tồn tại tập chỉ số I=\{i_1, \ldots, i_n\}

a_i^Tx=b_i, i\in I\{a_i, i\in I\} độc lập tuyến tính.

Lưu ý: Nghiệm cơ sở có thể không phải là điểm nằm trong đa diện lồi.

Định nghĩa (nghiệm cơ sở chấp nhận được): Điểm xnghiệm cơ sở chấp nhận được (basic feasible solution) của P nếu x\in Px là nghiệm cơ sở của P.

Định lý (điều kiện của điểm cực biên của đa diện lồi): Cho điểm x là điểm thuộc đa diện lồi P=\{x:Ax\geq b\}, các mệnh đề sau đây tương đương

  1. xđiểm cực biên của P.
  2. xđỉnh của P.
  3. x là nghiệm cơ sở chấp nhận được của P.

Chứng minh:

1\Rightarrow 3“: Xem trong bài cấu trúc của đa diện lồi.

3\Rightarrow 2“: Nếu x là nghiệm cơ sở chấp nhận được, tức là tồn tại I=\{i_1, \ldots, i_n\}

a_i^Tx=b_i, i\in I\{a_i, i\in I\} độc lập tuyến tính.

Chọn c= \displaystyle -\sum_{i\in I} a_i, ta sẽ chứng minh hàm tuyến tính c^Tx đạt cực đại duy nhất trên P tại x. Thật vậy, xét một điểm y\in P, ta có

c^Ty=\displaystyle -\sum_{i\in I} a_i^Ty\leq \displaystyle -\sum_{i\in I} b_i = -\sum_{i\in I} a_i^Tx=c^Tx

Như vậy, hàm tuyến tính c^Tx đạt cực đại trên P tại x. Đồng thời ta cũng thấy dấu bằng không thể xảy ra trong bất đẳng thức này nếu y\neq x, vì nếu như vậy, ta sẽ có a_i^Ty=b_i,\forall i\in I, nhưng do \{a_i, i\in I\} độc lập tuyến tính nên điểm thỏa mãn n đẳng thức này chỉ có duy nhất 1 điểm x. Vậy c^Ty<c^Tx,\forall y\in P, y\neq x, tức là x là đỉnh của P.

2\Rightarrow 1“: Xem trong bài siêu phẳng đỡ và điểm cực biên.

Nhận xét:

  1. Định lý chứng tỏ 3 khái niệm điểm cực biên, đỉnh, nghiệm cơ sở chấp nhận được là tương đương trong đa diện lồi. Ta có thể sử dụng các tính chất của cả ba khái niệm này cùng lúc.
  2. Điểm cực biên là khái niệm có tính chất hình học (điểm không nằm giữa hai điểm nào trong tập) rất khó kiểm tra (vì phải kiểm tra mọi cặp điểm) còn nghiệm cơ sở chấp nhận được lại là khái niệm rất dễ kiểm tra bằng thuật toán (điểm có n ràng buộc được kích hoạt).

Hệ quả: Do số tổ hợp chập n của m là hữu hạn nên ta có một thuật toán đơn giản sau để giải bài toán quy hoạch tuyến tính (dạng gốc)

  1. Lần lượt chọn từng bộ n ràng buộc, kiểm tra tính độc lập tuyến tính.
  2. Nếu bộ ràng buộc không độc lập tuyên tính quay lại bước 1 chọn bộ ràng buộc khác.
  3. Nếu bộ ràng buộc độc lập tuyến tính, giải hệ phương trình tương ứng của bộ ràng buộc này (coi như các ràng buộc được kích hoạt) để tìm ra nghiệm cơ sở x^* .
  4. Kiểm tra xem x^* có là nghiệm cơ sở chấp nhận được hay không? Nếu đúng thì tính giá trị của hàm tại điểm này, so sánh với giá trị tốt nhất đang có và thay đổi giá trị này nếu cần. Sau đó quay lại bước 1 chọn bộ ràng buộc khác.

Nhận xét:

  1. Thuật toán này không phải là thuật toán hiệu quả vì số lượng n ràng buộc trong m ràng buộc tăng theo hàm mũ.
  2. Tuy nhiên, thuật toán này chứng tỏ bài toán QHTT là bài toán giải được (decidable), nghĩa là thuật toán luôn dừng và cho ra kết quả (chỉ ra nghiệm hoặc chỉ ra không có nghiệm).

Định lý (điều kiện của nghiệm cơ sở của đa diện lồi ở dạng chuẩn tắc): Cho đa diện lồi P=\{x:Ax=b,x\geq 0\} và giả sử \{a_i^T, i=1,\ldots,m\} độc lập tuyến tính, điểm x là nghiệm cơ sở của P nếu và chỉ nếu tồn tại bộ chỉ số B(i),i=1,\ldots, m sao cho

  1. Ma trận B=\left[\begin{array}{rrr}A_{B(1)}&\ldots&A_{B(m)}\end{array}\right] gồm các cột tương ứng của ma trận A là ma trận khả nghịch.
  2. x_j=0,\forall j\neq B(1),\ldots,B(m).

Ta gọi ma trận Bma trận cơ sở tương ứng của x.
Chứng minh:

\Rightarrow“: Giả sử (1) và (2) đều xảy ra, ta sẽ chứng minh x là nghiệm cơ sở của P. Thật vậy, các ràng buộc được kích hoạt tại x

a_i^Tx=b_i,\forall  i=1,\ldots, m

x_j=e_j^Tx=0,\forall j\neq B(1),\ldots,B(m)

với e_j=\left[\begin{array}{rrrrr}0&\ldots&1&\ldots&0\end{array}\right]^T là véc tơ thứ j trong hệ cơ sở của hệ tọa độ Đềcác.

Các véctơ e_j không thể là tổ hợp tuyến tính của các véctơ a_i vì nếu như vậy, tức là tồn tại (\lambda_1,\ldots,\lambda_m)\neq 0 sao cho

\displaystyle\sum_{i=1}^m\lambda_i a_i^T=e_j^T

Suy ra

\displaystyle\sum_{i=1}^m\lambda_i b_i^T=0 ,

với b_i^T là các dòng của Bj\neq B(1),\ldots,B(m), suy ra mâu thuẫn vì B khả nghịch. Vậy tại xn ràng buộc độc lập tuyến tính, hay x là nghiệm cơ sở của P.

\Leftarrow“: Giả sử x là nghiệm cơ sở của P, do có n ràng buộc độc lập tuyến tính được kích hoạt nên x là điểm duy nhất mà cả n ràng buộc này được kích hoạt. Giả sử các chỉ số B(1),\ldots,B(k) là các chỉ số mà x_{B(i)}\neq 0, i=1,\ldots, k. Rõ ràng k\leq m vì có ít nhất n-m ràng buộc dạng x_j\geq 0 được kích hoạt (do chỉ có m ràng buộc dạng a_i^Tx=b_i, i=1,\ldots,m đã được kích hoạt). Ta có

Ax = \displaystyle\sum_{i=1}^n x_i A_i=\sum_{i=1}^k x_{B(i)} A_{B(i)}=b

Ta sẽ chứng minh các cột A_{B(1)},\ldots, A_{B(k)} độc lập tuyến tính. Thật vậy, giả sử tồn tại bộ số \lambda_{B(i)}, i=1,\ldots,k không đồng thời bằng {0} sao cho

\displaystyle\sum_{i=1}^k\lambda_{B(i)} A_{B(i)}=0

Suy ra nếu đặt \lambda=\left[\begin{array}{rrr}\lambda_1&\ldots&\lambda_n\end{array}\right]^T sao cho \lambda_i = 0, \forall i\neq B(1),\ldots, B(k) thì

A(x+\lambda) = \displaystyle\sum_{i=1}^k (x_{B(i)}+\lambda_{B(i)}) A_{B(i)}=b

Nghĩa là véc tơ x không phải là véc tơ duy nhất kích hoạt n ràng buộc độc lập tuyến tính, mâu thuẫn. Vậy các cột A_{B(1)},\ldots, A_{B(k)} độc lập tuyến tính. Hơn nữa, do m hàng của ma trận A độc lập tuyến tính nên không gian tuyến tính tạo bởi các cột của A phải là \mathbb{R}^m. Suy ra, nếu k<m ta có thể chọn thêm các cột A_{B(k+1)},\ldots,A_{B(m)} khác để tạo nên một bộ cơ sở của \mathbb{R}^m. Bộ chỉ số B(1),\ldots, B(m) rõ ràng thỏa mãn hai điều kiện (1) và (2).

Nhận xét: Đối với bài toán QHTT ở dạng chuẩn tắc, thuật toán trên có thể biến đổi như sau:

  1. Chọn một bộ chỉ số B(1),\ldots,B(m). Kiểm tra xem ma trận B có khả nghịch không.
  2. Nếu ma trận B khả nghịch, tính x_B=B^{-1}b với
    x_B=\left[\begin{array}{rrr}x_{B(1)}&\ldots&x_{B(m)}\end{array}\right] .
  3. Kiểm tra điều kiện x_B\geq 0, nếu đúng thì đặt x_j=0,\forall j\neq B(1),\ldots,B(m). Khi đó x là nghiệm cơ sở chấp nhận được của P.
  4. Tính giá trị của hàm mục tiêu tại x, thay đổi giá trị tốt nhất hiện tại nếu cần. Rồi chuyển về bước 1 chọn bộ chỉ số khác.
About these ads

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

 
Theo dõi

Get every new post delivered to your Inbox.

%d bloggers like this: