Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

1.

Có nhiều cách khác nhau để thiết kế thuật toán. Một số cách phổ biến bao gồm:

 Phân tích bài toán


 Tinh chế từng bước
 Trực quan hóa thuật toán
 Kiểm tra thuật toán

Phân tích bài toán

Bước đầu tiên trong việc thiết kế thuật toán là phân tích bài toán để xác định các bước cần
thiết để giải quyết nó. Điều này bao gồm việc xác định các đầu vào và đầu ra của bài toán,
các ràng buộc của bài toán và các điều kiện cần và đủ để giải quyết bài toán.

Ví dụ

Giả sử chúng ta có bài toán sau:

Cho một danh sách các số thực, hãy tìm số thực lớn nhất trong danh sách.

Đầu tiên, chúng ta cần xác định các đầu vào và đầu ra của bài toán. Đầu vào là danh sách các
số thực. Đầu ra là số thực lớn nhất trong danh sách.

Tiếp theo, chúng ta cần xác định các ràng buộc của bài toán. Ràng buộc duy nhất của bài toán
này là danh sách phải chứa ít nhất một số thực.

Cuối cùng, chúng ta cần xác định các điều kiện cần và đủ để giải quyết bài toán. Điều kiện
cần là danh sách phải chứa ít nhất một số thực. Điều kiện đủ là số thực lớn nhất trong danh
sách là số thực lớn hơn hoặc bằng tất cả các số thực khác trong danh sách.

Tinh chế từng bước

Sau khi phân tích bài toán, các bước cần thiết để giải quyết bài toán có thể được tinh chế từng
bước. Điều này bao gồm việc chia các bước thành các bước nhỏ hơn, dễ hiểu hơn.

Ví dụ

Dựa trên phân tích bài toán ở trên, chúng ta có thể tinh chế các bước cần thiết để giải quyết
bài toán như sau:

1. Khởi tạo biến max bằng giá trị đầu tiên trong danh sách.
2. Duyệt qua danh sách các số thực.
3. Nếu một số thực trong danh sách lớn hơn max, hãy gán giá trị của số thực đó cho
max.
4. Kết thúc duyệt.

Trực quan hóa thuật toán

Trực quan hóa thuật toán có thể giúp hiểu rõ hơn về cách thức hoạt động của thuật toán. Điều
này có thể được thực hiện bằng cách sử dụng sơ đồ khối, biểu đồ hoặc các phương pháp trực
quan khác.

Ví dụ

Sơ đồ khối của thuật toán tìm số thực lớn nhất như sau:

Bắt đầu
Khởi tạo biến max bằng giá trị đầu tiên trong danh sách
Duyệt qua danh sách các số thực
Nếu một số thực trong danh sách lớn hơn max
Gán giá trị của số thực đó cho max
Kết thúc duyệt
Trả về giá trị của biến max
Kết thúc

Kiểm tra thuật toán

Sau khi thuật toán đã được thiết kế, cần phải kiểm tra nó để đảm bảo rằng nó hoạt động chính
xác. Điều này có thể được thực hiện bằng cách sử dụng các trường hợp thử nghiệm.

Ví dụ

Để kiểm tra thuật toán tìm số thực lớn nhất, chúng ta có thể sử dụng các trường hợp thử
nghiệm sau:

 Danh sách rỗng: Trong trường hợp này, max sẽ được gán giá trị là None.
 Danh sách chỉ có một phần tử: Trong trường hợp này, max sẽ được gán giá trị là phần
tử duy nhất của danh sách.
 Danh sách có nhiều phần tử: Trong trường hợp này, max sẽ được gán giá trị là số thực
lớn nhất trong danh sách.

Nếu thuật toán trả về kết quả chính xác cho tất cả các trường hợp thử nghiệm này, thì thuật
toán được coi là hoạt động chính xác.

2. Kỹ thuật Chia để Trị:


Mô tả: Phương pháp chia vấn đề lớn thành các vấn đề nhỏ hơn và giải quyết chúng độc lập. Sau đó,
kết quả của các vấn đề con được kết hợp để tạo ra giải pháp cho vấn đề gốc.
Ví dụ: Merge Sort - sắp xếp một danh sách bằng cách chia thành các nửa, sắp xếp từng nửa rồi kết
hợp chúng.
3. Kỹ thuật Tham lam:

Mô tả: Là kỹ thuật lựa chọn lựa chọn tốt nhất tại mỗi bước mà không quay lại và kiểm tra quyết định
trước đó.
Ví dụ: Thuật toán Prim cho cây bao phủ nhỏ nhất, thuật toán Dijkstra cho đường đi ngắn nhất.
4. Kỹ thuật Quay lui:

Mô tả: Thử nghiệm từng lựa chọn một, nếu không đạt được mục tiêu, quay lui và thử nghiệm lựa chọn
khác.
Ví dụ: Thuật toán Sudoku Solver, thuật toán N-Queens.
5. Kỹ thuật Vét cạn:

Mô tả: Kiểm tra tất cả các khả năng để tìm ra giải pháp.
Ví dụ: Tìm kiếm tuyến tính, tìm kiếm nhị phân.
6. Kỹ thuật Cắt tỉa Alpha-Beta:

Mô tả: Sử dụng thông tin lược đồ để loại bỏ các nhánh của cây tìm kiếm mà không làm thay đổi kết
quả cuối cùng.
Ví dụ: Thuật toán Minimax với cắt tỉa Alpha-Beta trong trò chơi cờ tướng.
7. Kỹ thuật Nhánh Cận:

Mô tả: Liên tục chia vấn đề thành các phần nhỏ và loại bỏ các nhánh không triển khai được.
Ví dụ: Thuật toán Traveling Salesman Problem sử dụng giải thuật nhánh và cận.

You might also like