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
27 trang | 
Chia sẻ: lylyngoc | Lượt xem: 2779 | 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