Thuật toán là thủ tục gồm một tập hợp hữu hạn các qui tắc, nhằm xác định một dãy hữu hạn các thao tác thực hiện trên các đối tượng dữ liệu đầu vào (input) để giải quyết một hoặc một lớp bài toán và thu được kết quảxác định (output).
Ví dụ 1: Thuật toán Euclid là thuật toán tìm ước số chung lớn nhất (USCLN) của hai sốnguyên dương a và b.
- Input: a, b là sốnguyên dương
- Output: USCLN của a và b Thuật toán có thểđược mô tảnhư sau:
Bước 1: Nếu a < b thì hoán vị hai số a, b cho nhau Bước 2: Nếu b = 0 thì USCLN là a
35
Bước 3: Ngược lại, thì thực hiện
o Tìm sốdư r của phép chia a cho b
o Gán a = b, b = r, rồi quay trở lại bước 2.
Ví dụ 2: Thuật toán tìm phần tử lớn nhất trong một dãy hữu hạn các số nguyên. - Input: một dãy hữu hạn các số nguyên
- Output: giá trị lớn nhất trong dãy Ta có thể mô tả thuật toán như sau:
Bước 1: Đặt giá trị lớn nhất max bằng sốnguyên đầu tiên.
Bước 2: So sánh số nguyên kế tiếp trong dãy với giá trị max, nếu nó lớn
hơn max thì ta gán max bằng số nguyên này.
Bước 3: Nếu trong dãy còn số nguyên chưa xét tới thì tiếp tục lặp lại bước 2.
Bước 4: Ngược lại thì dừng. Giá trị lớn nhất trong dãy chính là giá trị max.
Các tính chất đặc trưng của thuật toán:
Dữ liệu đầu vào(Input): Mỗi thuật toán cần phải có một hoặc nhiều dữ liệu
đầu vào.
Dữ liệu đầu ra(Output): Từ dữ liệu đầu vào, thuật toán xử lí và sẽ cho ra kết quảxác định thể hiện lời giải của bài toán.
Tính tổng quát: Thuật toán phải áp dụng để giải một lớp bài toán có dạng
tương tự, chứ không phải chỉ áp dụng những bài toán cụ thể riêng lẻ.
Tính xác định: Các bước trong thuật toán phải rõ ràng, trật tự thực hiện phải xác định và là duy nhất. Như vậy, khi dùng thuật toán với cùng một dữ
liệu đầu vào phải cho ra cùng một kết quả.
Tính dừng: Thuật toán phải cho ra kết quả sau một số hữu hạn các bước. Tính hiệu quả: Một thuật toán được gọi là hiệu quả nếu nó đơn giản, dễ
hiểu, thời gian thực hiện nhanh và chiếm ít bộ nhớ.