Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

Bài 2

BÀI TOÁN QUY HOẠCH TUYẾN TÍNH VÀ PHƯƠNG PHÁP ĐƠN HÌNH

2.4 Phương pháp đơn hình


2.4.1 Mô tả hình học của phương pháp đơn hình
Xuất phát từ một đỉnh x0 (phương án cực biên) của miền ràng buộc D, có ba trường hợp có
thể xảy ra:
1. Trên mọi cạnh của miền ràng buộc xuất phát từ đỉnh x0, hàm mục tiêu đều không
tăng, trong trường hợp này do tính chất tuyến tính của hàm mục tiêu, x0 sẽ là nghiệm
tối ưu.
2. Có một cạnh vô hạn theo đó hàm mục tiêu tăng. Khi đó hàm mục tiêu sẽ tăng đến
  theo cạnh này, vậy bài toán không có nghiệm hữu hạn.
3. Mọi cạnh từ đỉnh x0, theo đó hàm mục tiêu tăng, đều là cạnh hữu hạn. Đi theo một
cạnh như thế này, ta sẽ đến một đỉnh x1 kề với x0 tại đó hàm mục tiêu sẽ có giá trị
lớn hơn.
Quá trình sẽ lặp lại với đỉnh x2.
Thuật toán đơn hình chính là mô tả bằng phương pháp đại số của phương pháp hình học trên.
2.4.2 Cơ sở của phươngpháp
Cơ sở của thuật toán đơn hình được Dantzig công bố năm 1947 có tên gọi là phương pháp
đơn hình. Sở dĩ có tên gọi như vậy vì những bài toán đầu tiên được giải bằng phương pháp
đó có các ràng buộc dạng:
n

x
j 
j  xj   j  ,n

mà tập các điểm x  Rn thỏa mãn các ràng buộc trên là một đơn hình trong không gian n
chiều Rn
Đường lối chung của phương pháp
Phương pháp đơn hình của Dantzig dựa trên 2 nhận xét sau:

1
- Nếu một QHTT có phương án tối ưu thì có ít nhất một đỉnh tối ưu (đỉnh ta gọi là
phương án cực biên).
- Miền ràng buộc D có một số hữu hạn đỉnh
Từ đó ta có thể xây dựng một thuật toán hữu hạn để giải QHTT (có một số hữu hạn bước
lặp gọi là thuật toán hữu hạn)
Thuật toán hữu hạn gồm 2 giai đoạn:

 Giai đoạn 1: Tìm một phương án cực biên xuất phát x và cơ sở của nó

 Giai đoạn 2: Kiểm tra điều kiện tối ưu cho phương án cực biên x với cơ sở A j; jJ
vừa xây dựng được
 Nếu điều kiện tối ưu được thỏa mãn thì phương án x là phương án tối ưu

 Nếu không thì ta chuyển sang phương án cực biên x’ với cơ sở mới A’j; jJ’
và ta lại kiểm tra điều kiện tối ưu cho phương án cực biên x’
Cứ tiếp tục như vậy sau một số hữu hạn bước lặp, hoặc ta nhận được một phương án tối ưu
hoặc ta gặp tình huống hàm mục tiêu không bị chặn và bài toán không có phương án tối ưu.
Cơ sở của thuật toán
Xét bài toán QHTT dưới dạng chính tắc

<c,x>  max (4.1)


Ax = b (4.2)
X 0 (4.3)

Trong đó A là ma trận kích thước mn và giả sử rằng hạng của ma trận là m.
Giả sử x là phương án cực biên nào đó,ta ký hiệu J* = {j : xj >0}

Vì các vectơ Aj với j  J* là độc lập tuyến tính nên J *  m.

Định nghĩa 3.1: Phương án cực biên x được gọi là không thoái hóa nếu J * = m, gọi là
thoái hóa nếu J * < m.

Giả sử đã tìm được phương án cực biên xuất phát và giả sử ta đánh số các biến với dụng ý
là để tất cả các biến cơ sở lên trước còn các biến phi cơ sở viết sau
Phương án cực biên xuất phát
2
x = (x1, x2,... , xm, 0,..., 0)

Khi đó xj > 0 với j  ,m được gọi là các biến cơ sở


với các véctơ cơ sở là

  


     
  
A    Am   
A   
... ... .... ... J = 1,2,..., m
     
  

Phương án cực biên x thỏa mãn hệ ràng buộc


m

x A
j 
j j b (4.4)

Với giá trị hàm mục tiêu là


m

c x
j 
j j  z (4.5)

 zk 
 
 z k 
 ... 
Mỗi véctơ phi cơ sở Ak =   k = ,n
 z jk 
 ... 
 
 zmk 

đều biểu diễn một cách duy nhất qua các véctơ cơ sở:
m
Ak  z j 
jk A j ; k  ,n (4.6)

Ta tính các đại lượng sau


m
zk  z j 
jk c j (4.7)

Ta tính các ước lượng mà ta gọi là  k như sau:

3
m
Δk  zk  ck  z
j 
jk ck  ck (4.8)

Định lý 2.7: Phương án cực biên x = (x1, x2,..., xm, 0,... , 0) của QHTT là tối ưu nếu

 k  0 với  k (4.9)

Chú ý 1: Nếu phương án cực biên x không thoái hóa (có đúng m thành phần dương) thì
điều kiện (4.9) là điều kiện cần để x là phương án tối ưu. Nghĩa là ta có thể phát biểu như sau:
Điều kiện cần và đủ để phương án cực biên không thoái hóa x là phươngán tối ưu là:

 k  0 với  k = 1, n .

Chú ý 2: Nếu Aj là một véctơ cơ sở thì  j =0

Thật vậy: từ công thức biểu diễn các véctơ qua cơ sở (4.6), ta thay Ak bởi Aj ta có
zjj = 1; Aj = zjjAj
m

Thay vào (4.8) ta có: Δ j  z j  c j  z


j 
jj c j  c j  z jj c j  c j  

Do đó điều kiện tối ưu (4.9) có thể viết lại là:  k  0 với  k J.

Định lý 2.8: Nếu tồn tại chỉ số k J mà  k   thì phương án cực biên x là chưa tối ưu.

Ta có thể chuyển đến phương án cực biên mới x’ với cơ sở là Aj với jJ’ tốt hơn (theo
nghĩa hàm mục tiêu)
Chứng minh:

Nhân (4.6) và (4.7) với một số  > 0 ta có


m m

θ z
j 
jk A j  θAk  θz
j 
jk A j  θAk   (4.10)

và θz
j 
jk c j  θzk Thêm vào hai vế của đẳng thức này một lượng -ck ta được

4
m m

θz
j 
jk c j  θck  θzk  θck  θz
j 
jk c j  θck  θ(z k  ck )

m
 θz
j 
jk c j  θck  θΔk (4.11)

Lấy (4.4) trừ (4.18) vế với vế ta được


m m m

 A x  θA z
j 
j j
j 
j jk  θAk  b   A (x
j 
j j  θz jk )  θAk  b (4.12)

Lấy (4.5) trừ (4.19) ta được


m m

 c x  θz
j 
j j
j 
jk c j  θck  z  θΔk (4.13)

Nếu các hệ số của các véctơ Aj, j  1, m và Ak trong (4.20) không âm, khi đó ta có một
phương án mới x’ mà đối với nó hàm mục tiêu có giá trị

z’= z0 - k (4.14)

Vì các xj > 0; j  1, m  có thể chọn > 0 sao cho


 x ' j  x j  z jk  ; j  , m (4.15)

 x'k    

Vì k < 0 nên từ (4.22) ta có z’= z0 - k ta có z’ > z0


điều đó chứng tỏ rằng phương án x’ tốt hơn phương án x.
Định lý đã được chứng minh xong.

Từ (4.23) ta thấy đối với chỉ số k mà k < 0, tồn tại z jk   với jJ thì giá trị  dương lớn
nhất còn thỏa mãn (4.23) là


 xj 
 x
   min  | z jk     r
j ,m  z jk
  z rk

Nếu thay  trong (4.20) và (4.22) bởi 0 thì thành phần thứ r bằng 0: xr - 0zrk = 0
Ta có phương án cực biên mới x’ với các thành phần là:
5
 xr
 x j  z z jk ; j  r
 rk
x 'j  
 xr ; jr
 zrk

' xr
Ta có xr  xr  z zrk   , nghĩa là biến x’r là biến phi cơ sở, do đó véctơ Ar cũng trở
rk

thành vectơ phi cơ sở (vì bị đẩy ra khỏi cơ sở)

x’k = > 0 trở thành biến cơ sở, do đó véctơ Ak trở thành véctơ cơ sở

Vậy ta có cơ sở mới Aj; jJ’ = J\{r}{k}

Chú ý 3: Nếu tồn tại k J sao cho zjk  0 thì hàm mục tiêu không bị chặn và bài toán
không có phương án tối ưu.

Thật vậy trong trường hợp này hệ thức 4.23 luôn được thỏa mãn với  > 0, cho   +
càng thỏa mãn tốt, khi đó ta sẽ có một cạnh vô hạn vì x’  , trên cạnh đó giá trị hàm
mục tiêu

 
z'  z   θ 
Chú ý 4: Để giảm bớt số bước lặp dẫn đến phương án tối ưu, Dantzigđề nghị chọn

Δs  minΔk|Δk   và đưa s vào cơ sở, lúc đó


 xj 
 x
θ s  min  |z js     r  Ar bị đẩy ra khỏi cơ sở  các thành phần của
 z js
  z rk

phương án mới có dạng

 xr
 x j  z z js ; j  r
 rs
x' j  
 xr ; (4.16)
j r
 z
 rs

Δk  z '
'
jk c j  ck J’= J \ {r} {s} (4.17)
j J

6
2.4.3 Thuật toán đơn hình
Giả sử ta đã đưa bài toán QHTT về dạng chính tắc

<c,x> = z  max

 Ax  b

x   (4.18)

Giai đoạn 1: Tìm phương án cực biên xuất phátx và cơ sở của nó Aj ; jJ
Giai đoạn 2:
Bước 1: Xác định các thành phần trong bảng đơn hình đầu tiên

- Với mỗi kJ xác định các hệ số khai triển zjk theo công thức

Ak   z jk A j (4.19)
j J

- Tính giá trị hàm mục tiêu và tính các ước lượng của biến xk theo công thức
m

z
m
zk  z
j 
jk c j và
Δk  zk  ck 
j 
jk ck  ck (4.20)

Bước 2: Nếu với kJ k  0  x là nghiệm tối ưu, dừng. Trái lại chuyển sang bước 3

Bước 3: Nếu (k  J)k < 0 và với j có zjk 0 bài toán QHTT không có nghiệm tối ưu
(hàm mục tiêu không bị chặn trên), dừng. Trái lại chuyển sang bước 4
Bước 4: Tìm vectơ đưa ra khỏi cơ sở

Đối với mỗi k  J sao cho k< 0, đều tồn tại j  J: zjk> 0  chọn
Δs  minΔk|Δk   (4.21)

Đưa véctơ Asvào cơ sở.


Bước 5: Tìm vectơ đưa vào cơ sở

 x j  xr (4.22)
θ
Tính: s  min  |z js   
 z js  zrs

Đưa véc tở Ar ra khỏi cơ sở

7
Bước 6: Xây dựng phương án cực biên mới x’ mà các thành phần của nó được tính theo
 xr
 x j  z z js ; j  r
 rs
x' 
công thức j  x r
 ; jr

 z rs

với cơ sở J’ = J \ {r}  {s}.

 z rk
 z jk  z js ; jr
 z rs
' z 'jk 
Tính cáchệ số z jk theo công thức  z rk ; jr

 z rs

Quay trở lại khởi đầu của bước 2 và tiếp tục giải bài toán cho đến khi nhận được phương
án tối ưu hoặc phát hiện bài toán không có phương án tối ưu
2.4.4 Công thức đổi cơ sở và bảng đơn hình
Công thức đổi cơ sở
Ta xét các công thức chuyển từ phương án cực biên x với cơ sở J sang phương án cực
biên x’ với cơ sở J’.
Công thức (4.24) là công thức tính các thành phần của x’.
Ta thiết lập công thức tính z’jk.


 
As 

z js A j   
Ta có:
jJ
= z rs Ar  z js A j  Ar   As 
z rs   z js A j  (4.31)

jJ,j  r  j J
 j r 

Mặt khác

Ak  z
j J
jk A j  z
jJ,j  r
jk A j  z rk Ar (4.32)

Thay biểu thức của Ar từ (4.31) vào (4.32) ta có

8
 
z rk  
Ak  z jk A j 
z
 As 
rs 
 z js A j 

jJ,j  r  j J 
 jr 

 z  z
Ak    z jk  rk z js A j  rk As
jJ,j  r 
z rs  z rs

đây là công thức biểu diễn các cột của ma trận A qua cơ sở mới J’ = J \ {r}  {s}
Bởi vậy ta có:

 zrk
 z jk  z z js ; jr (4.33)
 rs
z 'jk 
 zrk ; jr
 zrs
(4.34)
Sau đó ta tính  k 
'
z
jJ'
'
jk c j ck

Bảng đơn hình


Để dễ tính toán, trong mỗi bước lặp ta thiết lập một bảng đơn hình như sau:

cj Cơ sở Phương c1 c2 ... cj ... cr ... cm ... ck ... cs ... cn


án
A1 A2 ... Aj ... Ar ... Am ... Ak ... As ... An

c1 A1 x1 1 0 0 0 0 z1k z1s z1n

c2 A2 x2 0 1 0 0 0 z2k z2s z2n

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

cj Aj xj 0 0 1 0 0 zjk zjs zjn

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

9
cr Ar xr 0 0 1 0 zrk zrs zrn

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

cm Am xm 0 0 0 1 zmk zms zmn

f 0 0 ... 0 ... 0 ... 0 k ... s ... n

 Nếu tất cả các số trong dòng cuối của tổng đều  0 thì phương án đang xét là tối ưu,
bài toán giải xong.

Nếu dòng cuối có những số âm thì xem thử có cột nào cắt dòng cuối ở một số âm mà
mọi số trong cột đó đều  0 hay không.

+ Nếu có thì theo chú ý 3  bài toán không có phương án tối ưu. Dừng thuật toán
+ Nếu không thì chọn cột s sao cho

s = min{k| k<0}
Cột s được gọi là cột xoay, các phần tử zjs gọi là phần tử xoay. Đưa véctơ As vào cơ sở
Sau đó chọn dòng r sao cho

xr  x j 
θr   min  |z js   
zrs  z js 

Dòng r gọi là dòng xoay. Véctơ Ar bị đẩy ra khỏi sơ sở


Phần tử zrs (giao của dòng xoay và cột xoay) được gọi là phần tử trục.
Ta chuyển sang bảng mới với phương án mới x’ như sau:

 Thay cs và As cho cr và Ar

 Chia tất cả các phần tử của dòng xoay r cho phần tử trục (phần tử trục = 1). Dòng
chứa kết quả của phép chia gọi là dòng chính (vì ta dựa vào đó để tính kết quả
của các dòng khác). Tính giá trị cho các dòng ở bảng mới

Dòng mới = Dòng cũ tương ứng - Dòng chính  Phần tử xoay

Các vị trí còn lại của cột xoay bằng 0.

10
Lưu ý: Thuật toán đơn hình cho việc giải bài toán min chi khác bài toán max ở 2 đặc điểm:

- Nếu k < 0 với  k thì x là phương án tối ưu

- s = max{k| k>0}

- Nếu  k sao cho k > 0 và với  j có zjk < 0 thì bài toán không có phương án tối
ưu. Thuật toán dừng
2.5 Các dạng thuật toán đơn hình
2.5.1 Trường hợp QHTT dưới dạng chuẩn với ràng buộc  và vế phải không âm

c1x1 + c1x2 +... +cnxn max

a x  a x  ...  a x  b
     n n 
a
  x  a x
   ...  a x
n n  b 

...
a x  a x  ...  a x  bm
 m  m  mn n
 x j   ,j  ,n

Ta có m ràng buộc  nên ta đưa vào m biến phụ

xn+1  0 ; xn+2  0;..., xn+m  0


Ta chuyển bài toán về dạng tương đương sau

c1x1 + c1x2 +... +cnxn + 0 xn+1 + 0xn+2 +... +0xn+m  max

a x  a x  ...  a x  x  b
     n n n  

a  x  a  x   ...  a n xn  xn    b

...
a x  a x  ...  a x  xn  m  bm
 m  m   mn n
 x j   ,j  ,n  m

Ta có phương án cực biên xuất phát:


tạm cho x1 = 0, x2 = 0,..., xn = 0; là các biến phi cơ sở
thì ta có xn+1 = b1, xn+2 = b2,... , xn+m = bm; là các biến cơ sở với các véctơ cơ sở là

11
  
     
  
An   ; An    ; An  m  
... ... ...
    
 
   

Ta lập bảng đơn hình và giải bài toán.


Ví dụ 2.5: Giải bài toán QHTT sau:

f(x)= 3x1-x2-2x3 max

 x  x   x  
x   x   x  
   
 x   x  
  
 x j  ;j  ,

Giải: - Đưa về dạng chính tắc tương đương:

f(x)= 3x1-x2-2x3 +0x4+0x5+0x6 max

 x  x  x  x 
x   x   x  x  
    
 x   x  x  
  
 x j  ; j  ,

- Tìm phương án cực biên xuất phát: Ta có hệ cơ sở J={4,5,6}, phương án cực


biên xuất phát là x = (0,0,0,7,10,12)
- Lập bảng đơn hình
cj Cơ Phương 3 -1 2 0 0 0
sở án A1 A2 A3 A4 A5 A6
0 A4 7 -1 3 1 1 0 0
0 A5 10 3 -4 8 0 1 0
0 A6 12 (4) -2 0 0 0 1
k 0 -3 1 -2 0 0 0
0 A4 10 0 (5/2) 1 1 0 1/4
0 A5 1 0 -5/2 8 0 1 1
3 A1 3 1 -1/2 0 0 0 1/4
12
k 9 -1/2 0 0 0 3/4
-1 A2 4 0 1 2/5 2/5 0 1/10
0 A5 11 0 0 (7) 1 1 5/4
3 A1 5 1 0 1/5 1/5 0 6/20
k 11 0 0 -8/5 1/5 0 16/20
-1 A2 118/35 0 1 0 12/35 -2/35 4/140
2 A3 11/7 0 0 1 1/7 1/7 5/28
3 A1 164/35 1 0 0 6/35 -1/35 37/140
k 484/35 0 0 0 16/35 9/35 157/140

Ta thấy  k   thuật toán dừng

Vậy phương án tối ưu là: x* = (164/35,118/35,55/35)


Giá trị tối ưu là: f(x*) = 484/35
2.5.2 Trường hợp QHTT dưới dạng chính tắc
Phương pháp phạt hay phương pháp bài toán M

c1x1 + c1x2 +... +cnxn max

a x  a x  ...  a x  b
     n n 

a x  a  x  ...  a n xn  b

...
a x  a x  ...  a x  b
 m  m  mn n m
 x j   ,j  ,n

Ta gọi bài toán này là bài toán (P).


Bài toán này có m ràng buộc đẳng thức, ta đưa vào m biến “giả tạo”

xn+1  0 ; xn+2  0;..., xn+m  0


và một số M rất lớn, lớn hơn bất kỳ số nào cần so sánh với nó.
Ta chuyển bài toán (P) về bài toán (M) sau đây

f(x) = c1x1 + c1x2 +... +cnxn - M xn+1 - M xn+2-...- M xn+m max

13
ax  a x   ...  an xn  xn   b

a x  a  x   ...  a n xn  xn    b

...
a x  a x  ...  a x  .... x
n  m  bm
 m  m  mn n
 x j   ,j  ,n  m

Ta gọi các biến xn+1 ; xn+2;..., xn+m là các biến giả tạo vì các ràng buộc của bài toán đều là
đẳng thức mà bây giờ thêm vào các số  0 vẫn bằng vế phải.
Ta đưa vào số M >0 rất lớn chẳng khác nào “đánh thuế” rất nặng vào các biến giả tạo > 0
khiến cho trong phương án tối ưu các biến giả tạo phải trở nên bằng 0.
Ta có phương án cực biên xuất phát là:
Tạm thời cho x1 = 0, x2 = 0,..., xn = 0 là các biến phi cơ sở
Các biến giả tạo xn+1 = b1, xn+2 = b2,... , xn+m =bm là các biến cơ sở với các véctơ cơ sở là
  
     

   
An     ; An      ; … An  m  
... ... ...
     
  

Lập bảng đơn hình và giải bài toán (M) bằng phương pháp đơn hình.
Việc giải bài toán (M) có thể kết thúc bằng một trong hai tình huống sau đây:

 Bài toán (M) có phương án tối ưu là (x*,0...0) thì x* là phương án tối ưu của bài
toán (P) xuất phát và ngược lại.
Nếu bài toán gốc có phương án thì mọi phương án cực biên tối ưu
(x, xn+1,..., xn+m) của bài toán M phải có xn+1 = ... = xn+m = 0
 Bài toán (M) có phương án tối ưu là (x,y) trong đó y  0 , với y = (xn+1,..., xn+m)
nghĩa là có biến giả tạo > 0, khi đó bài toán (P) không có phương án và do đó
không có phương án tối ưu

Chú ý 1: Ta có Δk  z
jJ
jk c j  ck trong đó cj, ck là các hệ số hàm mục tiêu

Đối với bài toán (M), các hệ số hàm mục tiêu phụ thuộc tuyến tính vào M  các ước
lượng cũng phụ thuộc tuyến tính vào M

14
k =  k +  k M

Quy tắc xét dấu

-  k   nếu k   còn  k bất kỳ hoặc  k   và  k  

-  k   k  nếu  k1   k với  k1 k  bất kỳ hoặc  k1   k với  k1   k

Chú ý 2: Khi một biến giả tạo bị đẩy ra khỏi cơ sở thì từ đó trở về sau nó không thể quay
trở về cơ sở nữa (vì khi quay trở lại nó bị đánh thuế rất nặng), và từ đó trở đi
không cần tính toán gì ở cột chứa nó nữa.
n
Chú ý 3: Nếu gặp ràng buộc a
j 
ij x j  bi với bi   thì trước hết ta đưa vào biến phụ

n
xn+1>0 để chuyển về a
j 
ij x j  x n   bi với bi   và sau đó thêm vào biến giả

n
tạo yi 0 để được a
j 
ij x j  xn   yi  bi

Ví dụ 2.6: Giải bài toán nhờ phương pháp phạt

f ( x )   x  x  x  x  max
 x x   x  x  
 x  x   x  x  
    

x  x  x  x  
    
 x  ; j  ,
 j

Giải:
- Bổ sung biến giả x5, x6, x7
f ( x )   x  x  x  x  Mx  Mx  Mx  max
 x  x    x  x   x  
 x  x   x  x  x  
     
x  x  x  x  x  
     
 x  ; j  ,
 j
- Phương án cực biên xuất phát là x = (0,0,0,0,2,6,7) Với cơ sở là A5, A6, A7
- Lập bảng đơn hình
Cj Cơ P 2 1 -1 -1 -M -M -M
15
Sở án A1 A2 A3 A4 A5 A6 A7
-M x5 2 (1) -1 2 -1 1 0 0
-M x6 6 2 1 -3 1 0 1 0
-M x7 7 1 1 1 1 0 0 1
k -2 -1 1 1 0 0 0
k -4 -1 0 -1 0 0 0
2 x1 2 1 -1 2 -1 0 0
-M x6 2 0 (3) -7 3 1 0
-M x7 5 0 2 -1 2 0 1
k 0 -3 5 -1 0 0
k 0 -5 8 -5 0 0
2 x1 8/3 1 0 -1/3 0 0
1 x2 2/3 0 1 -7/3 1 0
-M x7 11/3 0 0 (11/3) 0 1
k 0 0 -2 2 0
k 0 0 -11/3 0 0
2 x1 3 1 0 0 0
1 x2 3 0 1 0 1
-1 x3 1 0 0 1 0
8 0 0 0 2

- Ta thấy dòng cuối của bảng đơn hình cuối cùng đều ≥ 0 nên thuật toán dừng, phương án
tối ưu là: x*= (3,3,1,0) và giá trị tối ưu là f(x*) = 8.
Lưu ý:
- Nếu trong ma trận A các hệ số đã có k vectơ đơn vị rồi thì chỉ cần bổ sung m-k biến giả
- Nếu có các ràng buộc bất đẳng thức thì thực hiện bổ sung biến phụ để đưa các ràng
buộc đó về dạng đẳng thức, sau đó mới bổ sung biến giả
- Nếu có ràng buộc đẳng thức mà vế phải âm thì nhân 2 vế với -1 để đảm bảo vế phải
luôn dương hoặc bằng 0.

16

You might also like