Một thuật toán là một chuỗi các bước được xác định rõ ràng tạo ra kết quả trong thời gian hữu hạn.
Bước được xác định rõ: Đó là điều bạn có thể làm hoặc tính toán được xác định chính xác. Chỉ cần đọc bước bạn biết bạn phải làm gì và làm như thế nào. Cụ thể, bạn có thể viết nó bằng ngôn ngữ lập trình mà bạn biết và chắc chắn đoạn chương trình khớp chính xác với bước.
Trình tự: Các bước được thực hiện theo thứ tự được chỉ định. Các bước có thể được thực hiện nhiều lần tùy thuộc vào dữ liệu (vòng lặp) hoặc hoàn toàn không được thực hiện tùy thuộc vào dữ liệu (nếu câu lệnh). Các thuật toán song song chỉ áp đặt một phần thứ tự cho các bước, vì vậy tôi áp dụng quá mức ở đây. Sẽ đúng hơn khi mô tả nó như một tập hợp được sắp xếp một phần so với một chuỗi, nhưng tôi muốn giữ các từ đơn giản hơn một chút. Bên cạnh đó, có thể dễ dàng nhúng một bộ được đặt hàng một phần theo thứ tự đầy đủ.
Kết quả: Một trạng thái kết thúc hoặc giá trị. Nó không phải được dự đoán trước, nhưng nó phải là một kết thúc chắc chắn thỏa mãn một số điều kiện. Điều này không có nghĩa là một hệ điều hành không phải là một thuật toán, mặc dù nó sử dụng rất nhiều trong số chúng.
Hữu hạn: Một thuật toán được đảm bảo dừng lại đôi khi, ít nhất là trên một máy có thể chạy đủ lâu. Nó không nhất thiết được đảm bảo dừng lại trong một thời gian dự đoán và không đảm bảo rằng nó sẽ dừng lại trước khi mặt trời mở rộng và chuyển sang màu đỏ trên bất kỳ máy hiện có nào. Điều này cũng có nghĩa là một hệ điều hành không phải là một thuật toán, vì lý tưởng là nó sẽ chạy mãi mãi. Tôi đã thấy từ "thủ tục" được sử dụng để mô tả một cái gì đó sẽ là một thuật toán nếu chúng tôi chắc chắn rằng nó sẽ dừng lại vào lúc nào đó. (Có thể có một thuật toán sẽ dừng trong một khoảng thời gian không xác định. Giả sử, giả thuyết của Goldbach đã được chứng minh là sai về mặt toán học, trong một bằng chứng phi cấu trúc, do đó, có một số chẵn> 2 không phải là tổng của hai số nguyên tố Một thuật toán chỉ đơn giản là kiểm tra các số chẵn cuối cùng sẽ chấm dứt,
Thuật toán là một thứ trừu tượng có chủ ý, vì vậy chúng tôi không xem xét các câu hỏi như "Có thể thực hiện điều này trước khi cái chết nóng của Vũ trụ không?". Họ quá khó để trả lời. Nếu nó liên quan đến hoạt động của máy tính, thật dễ dàng để thực hiện nó bằng ngôn ngữ lập trình.