Nếu minh họa bài toán xây d ưu như xây dựng cây tìm kiế định cận dưới đối với bài toán c hóa và chỉ cần phát triển các nhánh ti không thể chứa lời giải tối ưu, và phương án b n phát triể
Trang 1PHƯƠNG PHÁP NHÁNH C
1 LÝ THUYẾT CHUNG
Xét bài toán tối ưu tổ hợp tổ
trong đó
D = {x= (x
A1, A2, , An là các tập hữu h
Ta gọi bộ n thành phần x= (x
đầy đủ của bài toán, bộ k<n thành ph
phận hay lời giải bộ phận Ta s
bộ phận, tức là sẽ phát triển d
Ký hiệu , … , là tập h
phương án bộ phận , … ,
triển tất cả các phương án bộ
tức là những phương án ,
ưu, và sẽ không phát triển các ph
chắc chắn không chứa lời gi
, … , là không tiềm nă
Ta gọi cận dưới của phương án b
điều kiện
, trong đó là hàm xác định trên m
Giả sử ̅ là phương án tốt nh
̅ Ta gọi là giá trị kỷ
suy ra
min
NG PHÁP NHÁNH CẬN GIẢI CÁC BÀI TOÁN TỐI Ư
T CHUNG
ổng quát sau:
Min{f(x): x D},
D = {x= (x1, x2, , xn) A1 A2 A3 An },
u hạn
x= (x1, x2, , xn) thuộc D là phương án đầy đủ k<n thành phần (x1, x2, , xk) với ∈ là ph
n Ta sẽ xây dựng các phương án đầy đủ từ các ph
n dần các phương án bộ phận
p hợp tất cả các phương án đầy đủ có thể phát tri
Để giảm thời gian tính toán chúng ta s
ộ phận mà chỉ phát triển những phương án ti , … , mà , … , có khả năng ch
n các phương án bộ phận , … , mà
i giải tối ưu Vấn đề đặt ra là phải có dấu hiệ
m năng
ương án bộ phận , … , là số , … , , … , min , ∈ , … , ,
nh trên mọi phương án bộ phận
t nhất trong số các phương án đầy đủ đã duy lục hiện thời Thế thì, nếu , … , min, ∈ , … ,
I ƯU TỔ HỢP
ủ hay lời giải
là phương án bộ các phương án
phát triển từ
i gian tính toán chúng ta sẽ không phát
ng án tiềm năng,
ng chứa lời giải tối
, … ,
ệu đẻ phát hiện
thỏa mãn
ã duyệt và
từ (1) ta
Trang 2Vì thế, tập , … , không th
, … , không cần phát tri
Như vậy, để thực hiện tốt ý t
• Xác định được hàm cậ
bài toán tối ưu ở vế ph
• Xác định và cập nhật đư
Chú ý Khi bài toán tối ưu đ
phải xét hàm cận trên thỏa mãn
, Gọi là giá trị kỷ lục hiện th
các phương án đã duyệt Khi đ
max
Vì thế, tập , … , không th
, … , không cần phát tri
Nhận xét 1 Nếu minh họa bài toán xây d
ưu như xây dựng cây tìm kiế
định cận dưới đối với bài toán c
hóa và chỉ cần phát triển các nhánh ti
không thể chứa lời giải tối ưu, và phương án b
n phát triển tiếp
t ý tưởng trên cần:
ận dưới , … , một cách dễ dàng hơ phải của (1)
t được giá trị kỷ lục
ưu đặt ra là Max{f(x): x D} thì thay cho hàm c
a mãn , … , max , ∈ , … ,
n thời tức là giá trị lớn nhất của hàm mục tiêu trong s
t Khi đó nếu , … , từ (2) suy ra max, ∈ , … ,
không thể chứa lời giải tối ưu, và phương án b
n phát triển tiếp
a bài toán xây dựng lời giải (hay cấu hình/ph
ếm thì đối với mỗi nút (hay mỗi nhánh) c
i bài toán cực tiểu hóa hoặc cận trên đối với bài toán c
n các nhánh tiềm năng chứa lời giải tối ưu
ng án bộ phận
dàng hơn việc giải
thì thay cho hàm cận dưới ta
c tiêu trong số
ng án bộ phận
u hình/phương án) tối
i nhánh) của cây cần xác
i bài toán cực đại
Trang 3Không gian tìm kiếm của phương pháp nhánh cận có thể được minh họa như sau
Nhận xét 2 Mỗi lời giải bộ phận có thể xem như một bài toán con về chi phí để
hoàn thiện lời giải này Trong ngữ cảnh bài toán cực tiểu hóa để loại bỏ bài toán con ta cần phải được tin rằng chi phí của nó lớn hơn chi phí của một lời giải đầy đủ
đã duyệt Thuật toán nhánh cận trong trường hợp này có thể được mô tả như sau:
Start with some problem P0
Let S P, the set of active subproblems
Trang 4bestsofar = ∞ (giá trị kỷ lục)
Repeat while S is nonempty:
choose a subproblem (partial solution) ! ∈ " and remove it from S; expand it into smaller subproblems !, !#, … , !
For each !$:
If !$ is a complete solution: update bestsofar else if lowerbound(!$) < bestsofar: add Pi to S return bestsofar
tức là
Bắt đầu bởi bài toán P0
Đặt S P, tập các bài toán được kích hoạt
∞ (giá trị kỷ lục)
Lặp cho đến khi " ∅:
chọn bài toán con ! ∈ " và loại nó ra khỏi ";
phân hoạch nó thành các bài toán con !, !#, … , ! đối với mỗi bài toán !$:
nếu !$ là lời giải đầy đủ: cập nhật giá trị kỷ lục nếu cận dưới của !$ : bổ sung Pi vào S
trả về
2 ỨNG DỤNG 1: TÌM CHU TRÌNH HAMILTON NGẮN NHẤT
Thí dụ áp dụng thuật toán này đối với bài toán người du lịch (TSP) trên đồ thị G=(V,E) Lời giải bộ phận là đường đi đơn a→b qua một số đỉnh thuộc tập
S ⊆V , trong đó Schứa cả a và b Ta ký hiệu lời giải bộ phận này là bộ ba
[ , , ]a S b Đỉnh a ta cố định và coi như là đỉnh xuất phát Bài toán con tương ứng là tìm phần bù tốt nhất, tức là đường đi b→a qua các đỉnh V −S Trên mỗi bước tìm một đỉnh xvà đường đi cập nhật là [ ,a S+ x x, ]
Cận dưới của lời giải bộ phận [ , , ]a S b có thể lấy như sau:
g a S b = a S b +d a V −S +d b V −S + span V −S ,
trong đó:
• | [ , , ] |a S b là độ dài đường đi từ a đến b qua S
• d a V( , −S), d b V( , −S) , tương ứng là độ dài từ đỉnh a và b đến tập đỉnh
V-S
• minspan V( −S) là độ dài cây khung bé nhất của V-S
Trang 5Quá trình thực hiện thuật toán được biểu diễn bằng một cây, trong đó mỗi nút biểu diễn một lời giải bộ phận (đường đi từ đỉnh gốc tới đỉnh đó)
Đồ thị và đường đi tối ưu
Tìm kiếm theo nhánh cận thực hiện từ trái sang phải
Trang 6Các số trong hộp là cận dưới của chi phí
3 ỨNG DỤNG 2: BÀI TOÁN NGƯỜI BÁN HÀNG RONG (TSP)
Bài toán: Cho & thành phố ', '#, … , '( Xuất phát từ một thành phố nào đó người bán hàng muốn đi qua tất cả các thành phố còn lại, mỗi thành phố một lần, rồi lại quay về thành phố xuất phát Biết )*, + chi phí đi từ thành phố '$ đến thành phố ', Tìm cách đi với tổng chi phí bé nhất
Giải: Cố định thành phố xuất phát là ' và ký hiệu #, … , ( là một hoán vị của tập 2, … , & Khi đó một hành trình đầy đủ có thể biểu diễn bởi chuỗi
' → '/0 → ⋯ → '/2 → '
Và tổng chi phí của hành trình này là
#, … , ( )1, # + )#, 5 + ⋯ + )(6, ( + )(, 1
Bài toán TSP được phát biểu dưới dạng bài toán tối ưu
7*&#, … , ( | #, … , ( ∈ ! , trong đó ! là tập tất cả các hoán vị của 2, … , &
Ký hiệu
)9$( 7*&)*, +| *, + 1, … , &
Xét phương án bộ phận 1, :#, … , :, trong đó (:#, … , :) là một tổ hơp ; phần tử của 2, … , & Phương án này tương ứng với hành trình
' → '<0 → ⋯ → '<=
và chi phí của nó là
" )1, :# + ):#, :5 + ⋯ + ):6, :
Để phát triển hành trình bộ phận này thành hành trình đầy đủ người bán hàng còn phải đi qua & − ; thành phố còn lại, rồi quay về thành phố ', tức là còn phải đi qua & − ; + 1 đoạn đường nữa Do đó, chi phí cho đoạn đường còn lại này lớn hơn hoặc bằng & − ; + 1)9$( Vì thế, cận dưới của phương án bộ phận
1, :#, … , : là
:#, … , : " + & − ; + 1)9$(
Thí dụ: Giải bài toán người bán hàng rong với ma trận chi phí sau
Trang 7?
@
@
@
A 03 17 6 9
3 0 9 3 15
14 4 0 7 11
18 22 16 0 5
15 20 4 12 0
J K K K
L
Ta có )9$( 3 Quá trình xây dựng lời giải tối ưu được mô tả bởi cây tìm kiếm sau
Trang 8
4 ỨNG DỤNG 3: BÀI TOÁN CÁI TÚI TỔNG QUÁT
Bài toán: Có & loại đồ vật và số lượng mỗi loại đồ vật là không hạn chế Ký hiệu
trọng lượng của đồ vật + là M, và giá trị sử dụng là N, Cần chất các đồ vật vào túi
với trọng lượng là O sao cho tổng giá trị sử dụng của các đồ vật trong túi là lớn
nhất
Mô hình toán học:
P∑ M ∑(,RN,, → 7M
,, O,
( ,R , ∈ ST, + 1, … , &,U (3) trong đó , là số đồ vật loại +, ST là tập các số nguyên không âm
Ký hiệu là tập các phương án của bài toán (3), tức là
V W,… , (,X: ∑ M( ,, O, , ∈ ST, + 1, … , &
Không giảm tính tổng quát ta giả sử rằng các đồ vật được đánh số sao cho
[\ ]\ [0
]0 ⋯ [2
]2 (4)
Để xây dựng hàm cận dưới ta xét bài toán cái túi với các biến liên tục:
Tìm
∗ 7MV, ∑ M( ,, O,
,R , 0, + 1, … , & Z (5)
Mệnh đề 1: Phương án tối ưu của bài toán (5) là véc tơ ̅ ̅, … , ̅( với
̅ MO
, ̅# ⋯ ̅( 0
và giá trị tối ưu là
∗ NMO
Chứng minh Từ (4) suy ra
N$$ MN$
$ ∗ M$$ MN
∗ M$$, * 1, … , &
Do đó,
NTN## + ⋯ + N(( [\
] \∗ MT⋯TM(( [\
] \O ̅
Điều đó có nghĩa ̅ là phương án tối ưu
Xây dựng hàm cận trên:
Trang 9Giả sử đã có phương án bộ phận cấp k là :, … , : Khi đó giá trị của các đồ vật trong túi là
_ N: + ⋯ + N:
và trọng lượng còn lại của túi là
O O − M: + ⋯ + M:
Ta có
7MV: ∈ , , :,, + 1, … , ;Z
7M `_ + a N,,:
( ,RT
a M,, O; , ∈ ST, + ; + 1, … , &
( ,RT
c
_+ 7MV∑( N,,:
,RT ∑( M,, O; , ∈ ST, + ; + 1, … , &
_ +[=d\ e =
]=d\ (theo Mệnh đề 1)
Do đó có thể tính cận trên cho phương án bộ phận :, … , : như sau:
:, … , : _ +[=d\ e =
] =d\ Chú ý: Khi tiếp tục xây dựng thành phần thứ k+1 của lời giải các giá trị đề cử cho
T sẽ là
0,1, … , f e=
]=d\g
Thí dụ: Xét bài toán cái túi với các dữ kiện sau: b=8
Đồ vật Trọng lượng a Giá trị c
Trang 10Quá trình xây dựng lời giải của bài toán có thể biểu diễn bởi cây sau:
Trong hình vẽ trên _ là giá trị của các đồ vật đã có trong túi, h là khả năng chứa
còn lại của túi và là cận trên của nút
5 ỨNG DỤNG 4: BÀI TOÁN CÁI TÚI 0-1
Bài toán: Có & đồ vật với trọng lượng là M, và giá trị sử dụng là N, + 1, … , & Cần chất các đồ vật vào túi với trọng lượng là O sao cho tổng giá trị sử dụng của
các đồ vật trong túi là lớn nhất
Mô hình toán học:
P∑ M ∑(,RN,, → 7M
,, O,
( ,R , ∈ 0,1, + 1, … , &,U (6) trong đó , là biến Boolean biểu thị sự lựa chọn đồ vật +,
, i1 &ế: Nℎọ& đồ oậq +0 &ế: ;ℎáNU
Trang 11Xét bài toán nới lỏng của bài toán trên, cụ thể là xét bài toán với các biến liên tục: ∗ 7MV, ∑ M( ,, O,
,R 0 , 1, + 1, … , & Z (7)
Mệnh đề 2 Giả sử
[\ ]\ [0
]0 ⋯ [2
]2
Khi đó lời giải tối ưu của bài toán nới lỏng là
̅ ⋯ ̅s 1
̅sT O − MM+ ⋯ + Ms
sT
̅sT# ⋯ ̅( 0
với
M + ⋯ + Ms O, M + ⋯ + Ms + MsT O
0 e6]\ T⋯T]t
Giá trị tối ưu là
̅ N+ ⋯ + Ns +NMsT
sT Os, Os O − M+ ⋯ + Ms
Xây dựng hàm cận trên:
Giả sử đã có phương án bộ phận cấp k là :, … , : Khi đó giá trị của các đồ vật trong túi là
_ N: + ⋯ + N:
và trọng lượng còn lại của túi là
O O − M: + ⋯ + M:
Ta có
7MV: ∈ , , :,, + 1, … , ;Z
7M `_ + a N,,:
( ,RT
a M,, O; , ∈ 0, 1, + ; + 1, … , &
( ,RT
c
_+ 7MV∑( N,,:
,RT ∑( M,, O; 0 , 1, + ; + 1, … , &
Trang 12_ + NT + ⋯ + Ns +[td\ e t
] td\ , nếu MT + ⋯ + Ms O, MT + ⋯ + Ms + MsT O, Os O − MT + ⋯ +
Ms
Do đó có thể tính cận trên cho phương án bộ phận :, … , : như sau:
:, … , : _ + NT + ⋯ + Ns +[td\ e t
] td\
Thí dụ: Xét bài toán cái túi với các dữ kiện sau: b=6
Đồ vật Trọng lượng a Giá trị c c/a
Quá trình xây dựng lời giải của bài toán có thể biểu diễn bởi cây sau
Trong các nút lời giải bộ phận để trong dấu ngoặc đơn, thí dụ (1,0), σ là giá trị của các đồ vật đã có trong túi, h là khả năng còn lại của túi, và là cận trên của lời giải bộ phận
... chứa lời giải tối ưu, phương án bn phát triển tiếp
a toán xây dựng lời giải (hay cấu hình/ph
ếm nút (hay nhánh) c
i tốn cực tiểu hóa cận toán c
n nhánh tiềm...
bài tốn tối ưu vế ph
• Xác định cập nhật đư
Chú ý Khi toán tối ưu đ
phải xét hàm cận thỏa mãn
, Gọi giá trị kỷ lục th
các phương. ..
Nhận xét Nếu minh họa toán xây d
ưu xây dựng tìm kiế
định cận tốn c
hóa cần phát triển nhánh ti
không thể chứa lời giải tối ưu, phương án b
n phát triển