Quan điểm lập trình cấu trúc
Algorithm + Data structure
= Program
Thuật toán: dãy hữu hạn các bước
không mập mờ và có thể thực hiện
được, quá trình hành động theo các
bước này phải dừng và cho kết quả
như mong muốn.
27 trang |
Chia sẻ: lylyngoc | Lượt xem: 2420 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Thuật giải Heuristic, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1
THUẬT GIẢI HEURISTIC
Giảng viên: ThS. Đào Quốc Thắng
Khoa Công nghệ thông tin
Trường ĐH Ngân hàng Tp HCM
CHUYÊN ĐỀ BỒI DƯỠNG ĐỘI TUYỂN OLYMPIC TIN HỌC
2
Nội dung
Khái niệm “Thuật toán” và “Thuật giải”
Thuật giải Heuristic
Một số ví dụ ứng dụng
Bài tập
3
Khái niệm “Thuật toán” và
“Thuật giải”
Quan điểm lập trình cấu trúc
Algorithm + Data structure
= Program
Thuật toán: dãy hữu hạn các bước
không mập mờ và có thể thực hiện
được, quá trình hành động theo các
bước này phải dừng và cho kết quả
như mong muốn.
4
Các tính chất cơ bản của thuật
toán
Xác định.
Hữu hạn.
Tính đúng.
5
Hạn chế
Có nhiều bài toán cho tới nay vẫn chưa xây
dựng được thuật toán.
Có bài toán xây dựng được thuật toán song
không thể áp dụng được do không đủ tài
nguyên để cung cấp.
Có thể giải quyết một số bài toán theo những
cách khác, thường cho kết quả tốt và thực
hiện dễ dàng hơn so với thuật toán.
6
Thuật giải
Các cách giải chấp nhận được nhưng
không hoàn toàn đáp ứng đầy đủ các
tiêu chuẩn của thuật toán.
7
2. Thuật giải Heuristic
Là sự mở rộng của thuật toán với các
đặc tính:
Thường cho lời giải tốt (nhưng không chắc
là tốt nhất).
Cho phép giải quyết bài toán một cách
nhanh chóng, dễ dàng.
Thể hiện tự nhiên, gần gũi với suy luận của
con người.
8
Các nguyên lý cơ sở của thuật
giải Heuristic
Nguyên lý tham lam (nguyên lý
Greedy).
Nguyên lý thứ tự.
Nguyên lý hướng đích (hàm Heuristic).
Nguyên lý vét cạn.
9
Nguyên lý tham lam
Lấy tiêu chuẩn tối ưu toàn cục (đặt ra
cho bài toán) làm tiêu chuẩn chọn lựa
hành động cục bộ (từng bước/từng giai
đoạn thực hiện).
10
Nguyên lý hướng đích (Hàm
Heuristic)
Các hàm đánh giá thô, giá trị phụ thuộc
vào trạng thái hiện tại của bài toán tại
một bước giải, cho phép chọn lựa hành
động một cách hợp lý trong từng bước
của thuật giải.
11
Nguyên lý vét cạn
Bài toán tìm kiếm: cố gắng hạn chế
không gian tìm kiếm hoặc sử dụng một
kiểu dò tìm đặc biệt dựa vào đặc thù
riêng của bài toán để nhanh chóng đi
tới mục tiêu.
12
3. Một số ví dụ ứng dụng
Bài toán hành trình ngắn nhất: ứng
dụng nguyên lý Greedy
Bài toán phân việc: ứng dụng nguyên lý
thứ tự
Bài toán tô màu bản đồ: ứng dụng
nguyên lý thứ tự
Bài toán Ta-canh: ứng dụng hàm
Heuristic
13
Bài toán hành trình ngắn nhất
Một người bán hàng mỗi ngày phải đem
hàng từ công ty đến giao cho các đại lý
trong thành phố, rồi sau đó quay trở lại
vị trí xuất phát (về lại công ty). Giả sử
giữa mỗi cặp điểm (công ty/đại lý) đều
tồn tại một đường đi trực tiếp. Hãy tìm
con đường đi ngắn nhất sao cho mỗi
đại lý chỉ được đi qua đúng 1 lần.
14
Ví dụ minh họa
1
2
4
5
3
1
2
3
5
7
4
3
2 4
1
15
Bài toán phân việc
Một công ty nhận hợp đồng gia công n
chi tiết máy J1, J2, …Jn. Công ty có m
máy công cụ P1, P2, …Pm, trong đó
mỗi chi tiết máy đều có thể gia công
trên bất kỳ máy nào, một khi đã gia
công một chi tiết máy thì không thể
ngưng giữa chừng.
16
Ví dụ
Giả sử thời gian cần thiết để gia công
mỗi chi tiết Ji là Ti, hãy phân công công
việc trên các máy để thời gian thực hiện
hợp đồng là ngắn nhất.
VD 1: m=3, n=5, T1=2, T2=5, T3=8,
T4=1, T5=5.
VD 2: m-2, n=5, T1=3, T3, T4=2,
T5=2.
17
Bài toán tô màu bản đồ
Cho một bản đồ n vùng, hãy tô màu
các vùng sao cho mỗi cặp 2 vùng lân
cận phải được tô bằng 2 màu riêng biệt
và số màu được sử dụng là ít nhất.
Ví dụ: Tô màu bản đồ
18
6
5
2
1
3
8
9
7 4
19
Bài toán Ta-canh (trò chơi 9-
puzzle)
Cho hình vuông kích thước 3x3 với 9 ô
chứa 1 trong 8 con số 1, 2, …, 8 và 1 ô
để trống. Hãy di chuyển ô trống sao
cho các ô số được sắp xếp theo thứ tự
tứ 1 đến 8.
20
Ví dụ minh họa
3 1 4
7 6
8 2 5
1 2 3
4 5 6
7 8
4. Bài tập
21
Bài tập 1
Bài tập 2
Bài tập 3
Bài tập 1
22
Cho n loại tiền với các mệnh giá m1, m2, …,
mn khác nhau, trong đó có một loại tiền có
mệnh giá bằng 1. Hãy biểu diễn số tiền N
bằng các loại tiền trên sao cho số tờ tiền sử
dụng là ít nhất.
Dữ liệu thử nghiệm
n = 4, m1 = 5, m2 = 10, m3 = 2,
m4 = 1, N = 89.
n = 4, m1 = 7, m2 = 10, m3 = 3,
m4 = 1, N = 89.
n = 4, m1 = 6, m2 = 10, m3 = 4,
m4 = 1, N = 89.
23
Bài tập 2
24
Cho n container cùng loại và k đồ vật có khối
lượng lần lượt là m1, m2 ,…, mk. Giả sử có
thể xếp hết toàn bộ các đồ vật trên vào các
container, hãy tìm cách sắp xếp sao cho
chênh lệch khối lưởng giữa các container là
nhỏ nhất.
Lặp lại bài toán trên cới đk bổ sung: số lượng
đồ vật trong mỗi container < l với k < n*l.
Dữ liệu thử nghiệm
n = 3, k = 10, mi = 5,4, 6, 1, 3, 2, 7,
10, 9, 4 với i = 1, 2, … k, l = 4.
n = 3, k = 10, mi = 2, 3, 1, 2, 1, 1, 2,
20, 10, 4 với i = 1, 2, … k, l = 4.
25
Bài tập 3
26
Cho n xe tải với tải trọng C1, C2, …, Cn và k
thùng hàng với khối lượng lần lượt là m1, m2
,…, mk, m1+ m2 +…+ mk,> C1 + C2 + …+
Cn. Hãy tìm cách sắp xếp các thùng hàng
trên lên xe sao cho tổng lượng hàng sắp xếp
được là nhiều nhất.
Dữ liệu thử nghiệm
n = 3, C1= 10, C2, = 5, C3 = 8, k =
12, mi = 5, 1, 7, 3, 1, 2, 2, 4, 1, 3, 4,
1 với i = 1, 2, … k.
n = 3, C1= 10, C2, = 5, C3 = 8, k =
12, mi = 2, 1, 8, 3, 2, 3, 1, 4, 3, 1, 4.
5 với i = 1, 2, … k.
27