Thuật toán là một chuỗi hữu hạn các hướng dẫn theo từng bước được thiết kế để giải quyết một vấn đề cụ thể hoặc thực hiện một phép tính bằng cách chuyển đổi dữ liệu đầu vào thành đầu ra.
Trong khoa học máy tính, thuật toán bao gồm các hướng dẫn rõ ràng, không mơ hồ nhằm chỉ dẫn các chương trình máy tính thực hiện nhiều loại tác vụ. Các tác vụ này có thể trải dài từ những thao tác đơn giản như sắp xếp một danh sách số đến các quy trình phức tạp hơn như tìm tuyến đường ngắn nhất giữa hai vị trí địa lý. Thuật toán là nền tảng của điện toán, xử lý dữ liệu và ra quyết định tự động.
Mỗi thuật toán đều có điểm bắt đầu và điểm kết thúc được xác định, tạo ra đầu ra dựa trên đầu vào và các bước đã được định trước. Có thể kết hợp nhiều thuật toán để thực hiện các tác vụ phức tạp hơn, dù độ phức tạp cao hơn thường đòi hỏi nhiều tài nguyên tính toán hơn.
Có thể đánh giá thuật toán theo 2 tiêu chí chính: tính đúng đắn và hiệu quả. Tính đúng đắn đề cập đến việc thuật toán có giải quyết chính xác vấn đề mà nó được thiết kế để xử lý hay không. Hiệu quả liên quan đến lượng tài nguyên tính toán và thời gian mà thuật toán cần để hoàn thành tác vụ.
Các nhà khoa học máy tính thường sử dụng một kỹ thuật phân tích toán học gọi là phân tích tiệm cận để so sánh các thuật toán khác nhau bất kể ngôn ngữ lập trình hoặc phần cứng mà chúng chạy trên đó. Cách tiếp cận này giúp xác định thuật toán nào mở rộng tốt hơn khi kích thước dữ liệu đầu vào tăng lên.
Các thuật toán hợp lệ phải đáp ứng một số thuộc tính then chốt. Chúng phải hữu hạn, nghĩa là cuối cùng sẽ kết thúc. Chúng phải xác định, với mỗi chỉ dẫn đều chính xác và không mơ hồ. Chúng cũng phải hiệu quả, tạo ra đầu ra đúng cho mọi đầu vào hợp lệ.
Các mạng lưới blockchain khác nhau có thể sử dụng các cách tiếp cận thuật toán khác nhau tùy theo mục tiêu thiết kế, chẳng hạn như ưu tiên tốc độ, bảo mật hoặc hiệu quả năng lượng. Việc lựa chọn thuật toán có thể ảnh hưởng đáng kể đến hiệu năng và mức độ phi tập trung của một mạng lưới.
Tốc độ mà máy tính có thể tính toán băm mới.