Tải bản đầy đủ (.ppt) (20 trang)

CHƯƠNG 5 - CÁC CHIẾN LƯỢC THIẾT KẾ GIẢI THUẬT ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (183.75 KB, 20 trang )

CÁC CHIẾN LƯỢC
THIẾT KẾ GIẢI THUẬT
1
CHƯƠNG 5
Nội dung

Qui hoạch động

Giải thuật tham lam

Giải thuật quay lui (backtracking)

Giải thuật nhánh và cận
2

Phương Pháp Nhánh và Cận
• Ý tưởng phương pháp
• Lược đồ giải thuật
• Các ví dụ
Ý Tưởng Phương Pháp (trang 77)

Về nguyên tắc, kỹ thuật quay lui cho phép tìm
được nghiệm đúng của bài toán, nhưng do
phải vét cạn, khi kích thước bài toán lớn sẽ
rất kém hiệu quả

Kỹ thuật nhánh cận khắc phục được hạn chế
này bằng cách, xác định nhánh cận với mục
tiêu tại mỗi bước tìm kiếm, vì vậy loại bỏ
được hầu hết các hướng tìm kiếm không cần
thiết


Ý Tưởng Phương Pháp (trang 77)

Nhánh cận là kĩ thuật xây dựng cây tìm kiếm phương
án tối ưu, nhưng không xây dựng toàn bộ cây mà sử
dụng giá trị cận để hạn chế bớt các nhánh.

Cây tìm kiếm phương án có nút gốc biểu diễn cho
tập tất cả các phương án có thể có, mỗi nút lá biểu
diễn cho một phương án nào đó. Nút n có các nút
con tương ứng với các khả năng có thể lựa chọn tập
phương án xuất phát từ n. Kĩ thuật này gọi là phân
nhánh.
Ý Tưởng Phương Pháp (trang 77)

Với mỗi nút trên cây ta sẽ xác định một giá trị cận.
Giá trị cận là một giá trị gần với giá của các phương
án.

Với bài toán tìm min ta sẽ xác định cận dưới còn với
bài toán tìm max ta sẽ xác định cận trên. Cận dưới là
giá trị nhỏ hơn hoặc bằng giá của phương án, ngược
lại cận trên là giá trị lớn hơn hoặc bằng giá của
phương án.
Ý Tưởng Phương Pháp

Kỹ thuật nhánh cận thường được áp dụng để giải các
bài toán tối ưu
• Kỹ thuật nhánh cận dựa trên lược đồ quay lui và một
hàm lượng giá mục tiêu hướng đến các nhánh cận
với mục tiêu nhanh nhất có thể

• Kỹ thuật nhánh cận có thể không cho nghiệm tối ưu
chính xác mà chỉ cho nghiệm gần đúng

Kỹ thuật nhánh cận thường được áp dụng để giải các
bài toán tối ưu được mô hình hóa bởi
Tìm min{f(x) | x D}∈

Tập D ={x=(x
1
, x
2
, …., x
n
) A∈
1
×A
2
×…×A
n
| x thỏa tính
chất P} là hữu hạn, f(x) gọi là hàm mục tiêu

Một nghiệm của bài toán là một bộ (x
1
, x
2
, …., x
n
) D ∈
sao cho f(x

1
, x
2
, …., x
n
) nhỏ nhất

Có thể dùng kỹ thuật quay lui, vét cạn để tìm nghiệm
của bài toán (nhưng không hiệu quả)
Lượ c đồ giải thuật

Một bộ k thành phần (a
1
, a
2
, …., a
k
), a
i
A∈
i
gọi là một
nghiệm (phương án) bộ phận cấp k
• Giả sử g là một hàm xác định trên tập tất cả các
nghiệm bộ phận của bài toán và thỏa:
g(a
1
, a
2
, …., a

k
) ≤min{f(x) | x D, x∈
i
=a
i
, i=1, 2,…, k},với
mọi (a
1
, a
2
, …., a
k
), k=1,2, …(1)

Rõ ràng g(a
1
, a
2
, …., a
k
) là cận dưới của giá trị hàm
mục tiêu trên tập D(a
1
, a
2
, …., a
k
)={((a
1
, a

2
, …., a
k
)|
a
i
A∈
i
,k=1, 2,…}
• Vì vậy, g được gọi là hàm cận dưới, và giá trị g (a
1
, a
2
,
…., a
k
) được gọi là cận dưới của tập D(a
1
, a
2
, …., a
k
)
Lượ c đồ giải thuật
Lược đồ giải thuật

Giả sử x* là một phương án với giá trị hàm mục tiêu
nhỏ nhất trong các phương án đã tìm được, ký hiệu
f*=f(x*)


Ta nói x* là phương án tốt nhất hiện có, còn f* là kỷ
lục

Nếu g(a
1
, a
2
, …., a
k
) >f* thì từ(1) ta có

f*< g(a
1
, a
2
, …., a
k
) ≤min{f(x) | x D, x∈
i
=a
i
, i=1, 2,…, k}

Suy ra tập con phương án D(a
1
, a
2
, …., a
k
) chắc chắn

không chứa phương án tối ưu

Do đó loại các phương án trong D(a
1
, a
2
, …., a
k
) khỏi
quá trình tìm kiếm
Lược đồ giải thuật
Lược đồ giải thuật
Các Ví dụ
Bài toán người du lịch: Một người du lịch muốn đi tham
quan n thành phố T
1
,…,T
n
. Xuất phát từ một thành phố
nào đó, người du lịch muốn đi qua tất cả các thành phố
còn lại, mỗi thành phố đúng một lần, rồi quay về thành
phố xuất phát. Biết c
ij
là chi phí từ thành phố T
i
đến thành
phố T
j
. Tìm hành trình (một cách đi) có tổng chi phí nhỏ
nhất.

Giải?
Các Ví dụ
Giải
• Cố định thành phố xuất phát T
1
, bài toán dẫn đến tìm cực
tiểu của hàm
f(x
2
, x
3
, …, x
n
)=c[1, x
2
]+c[x
2
, x
3
]+…+c[x
n
,1] với điều kiện (x
2
,
x
3
, …, x
n
) là một hoán vị của 2, 3, …, n
Các Ví dụ

Giải
Ký hiệu c
min
=min{c[i, j], i, j=1,2,…n, i≠j}
• Giả sử đang có phương án bộ phận (u
1
, u
2
, …, u
k
), thì
hành trình bộ phận qua k thành phố là
T
1
→T(u
2
) →…→T(u
k-1
) →T(u
k
)
• Chi phí phải trả theo hành trình bộ phận là
σ = c[1, u
2
]+c[u
2
, u
3
]+…+c[u
k-1

,u
k
]
Các Ví dụ
Giải
• Hành trình đầy đủ của hành trình bộ phận còn phải đi
qua n-k thành phố còn lại rồi quay về T
1
bao gồm n-k+1
đoạn đường
• Do chi phí phải trả cho mỗi đoạn trong n-k+1 đoạn còn
lại không ít hơn c
min
nên cận dưới cho phương án bộ
phận có thể tính theo công thức
g(u
1
, u
2
,…u
k
) = σ+(n-k+1)c
min
Các Ví dụ
Các Ví dụ
Các Ví dụ
Kết thúc thuật toán, ta thu được phương án tối
ưu (1,2,3,5,4,1) tương ứng với hành trình
T
1

→T
2
→T
3
→T
5
→T
4
→T
1
Và chi phí nhỏ nhất là 22
Đọc thêm

Chương 8 (205-240)sách Đinh Mạnh Tường
(Cấu trúc dữliệu & Thuật toán, NXB KHKT,
2000)

Chương 16 (dynamic programming), 17
(Greedy algorithms)sách Cormen vàcộng sự

×