Ba lần làm bánh, ba lần hỏng — đúng y một công thức. Minh vào cuộc như một thám tử thật, và tìm ra thứ mà máy tính gọi là thuật toán.
Bếp nhà Bống, chiều thứ Bảy, ba ngày trước Hội chợ Khoa học.
Ba mẻ bánh bông lan liên tiếp ra khỏi lò đều phẳng lì như bánh tráng. Không nở lên nổi một xăng-ti-mét nào.
Bống làm y hệt công thức bà ngoại ghi trong sổ tay, chữ viết tay nắn nót:
«Trứng, đường, bột, đánh đều, cho vào khuôn, nướng 30 phút.»
Vậy mà lần nào cũng hỏng. Cùng công thức, cùng nguyên liệu mua ở cùng một cửa hàng, cùng cái lò nướng nhà Bống vẫn dùng bao năm nay.
Minh được gọi tới hiện trường — với tư cách «thám tử», dù chỉ có mỗi việc là ngồi ăn thử bánh hỏng rồi lắc đầu.
Không thiếu nguyên liệu nào. Không sai một dòng nào trong công thức.
Bống bối rối kể lại: «Tớ đọc đúng từng chữ trong sổ mà. Trứng, đường, bột, đánh đều, cho vào khuôn, nướng 30 phút. Có bỏ sót gì đâu?»
Minh cầm tờ công thức lên, đọc lại một lượt. Đúng là không thiếu chữ nào so với những gì Bống vừa kể.
Nhưng có gì đó vẫn sai. Ba mẻ bánh, ba lần hỏng, không phải do may rủi — phải có một lý do lặp lại.
Cùng nguyên liệu, cùng công thức, cùng người làm — mà kết quả tệ giống hệt nhau ba lần. Đây không phải chuyện xui xẻo. Đây là một manh mối.
Cùng một công thức, cùng nguyên liệu — sao lần nào cũng ra kết quả tệ giống nhau?
Nếu công thức đúng và nguyên liệu đủ, đáng lẽ bánh phải nở. Vậy cái gì đang lặp lại sai, mà cả Bống lẫn bà ngoại (khi viết công thức) đều không nhận ra?
Minh giở kỹ lại tờ công thức, đọc thật chậm từng chữ.
Và Minh phát hiện ra: công thức không ghi rõ đánh trứng đường bao lâu, đánh bằng máy hay bằng tay, cho bột vào lúc nào trong lúc đánh.
Hỏi lại Bống mới lộ ra: mỗi lần làm, Bống đều «áng chừng» một kiểu khác nhau — có lần đánh trứng 30 giây, có lần đánh gần 2 phút; có lần trộn bột từ từ, có lần đổ ào một lúc.
Vấn đề không nằm ở nguyên liệu — nó nằm ở chính các bước không đủ rõ ràng và không được làm đúng thứ tự mỗi lần.
Cái mà bà ngoại lẽ ra phải viết ra — có một cái tên trong máy tính.
Một chuỗi bước rõ ràng, có thứ tự, để chắc chắn ra cùng một kết quả mỗi lần — trong máy tính người ta gọi đó là THUẬT TOÁN (tiếng Anh: algorithm).
Công thức của bà ngoại, nếu viết đủ chi tiết, chính là một thuật toán làm bánh. Vấn đề là nó chưa đủ chi tiết để trở thành một thuật toán thật sự đáng tin cậy.
Đây là chặng quan trọng nhất trong cả cuộc điều tra.
Thuật toán là một chuỗi bước rõ ràng, có thứ tự, để giải quyết một việc cụ thể — quan trọng nhất: nếu làm đúng từng bước, kết quả phải giống nhau mọi lần, không phụ thuộc vào «hôm nay thấy sao làm vậy».
Máy tính không «hiểu» ý định như con người — nó chỉ làm chính xác những gì thuật toán ghi, kể cả khi bước đó ghi sai. Nếu công thức thiếu chữ «đánh trong 90 giây», máy tính (khác với Bống) sẽ không tự đoán bù — nó chỉ đứng im chờ, hoặc làm sai theo đúng cách người viết đã bỏ sót.
Giống ở chỗ: đều là chuỗi bước làm theo thứ tự để ra một kết quả.
Không giống ở chỗ: người nấu ăn có thể «áng chừng» và vẫn ra món ngon nhờ kinh nghiệm — máy tính thì không có kiểu «linh cảm» đó. Với máy, một chỗ áng chừng là một chỗ có thể hỏng.
Viết thuật toán tốt nghĩa là dự đoán trước mọi tình huống có thể xảy ra, không để trống chỗ nào cho việc «chắc máy tự hiểu».
Chuyện mẻ bánh không phải trường hợp duy nhất kiểu này.
Cách sắp một chồng bài kiểm tra theo điểm từ cao xuống thấp cũng là một thuật toán — có nhiều cách làm (so từng đôi một rồi đổi chỗ, hay chia nhỏ chồng bài ra sắp rồi ghép lại), cách nào cũng ra đúng kết quả.
Cách app bản đồ tìm đường ngắn nhất, cách YouTube xếp video nào hiện trước, cách máy tính bỏ túi tính đúng một phép tính phức tạp — tất cả đều là những thuật toán được viết cẩn thận, làm đúng từng bước.
Tưởng tượng một thế giới mà mọi công thức đều mù mờ như tờ giấy của bà ngoại.
Không có thuật toán rõ ràng, mỗi lần máy tính «làm việc» sẽ ra một kết quả khác nhau tùy ngẫu hứng — máy sẽ không đáng tin cậy chút nào, giống mẻ bánh của Bống.
Tính điểm thi, tính tiền trong tài khoản ngân hàng, điều khiển đèn giao thông — nếu tất cả đều «áng chừng» kiểu đó, không ai còn dám tin vào bất cứ con số nào máy tính đưa ra.
Thuật toán không chỉ sống trong máy tính nhà trường.
Cách app bản đồ tìm đường ngắn nhất tới trường, cách YouTube quyết định video nào hiện lên đầu tiên, cách máy tính bỏ túi luôn ra đúng một đáp số cho cùng một phép tính — tất cả đang chạy một thuật toán, đã được viết cẩn thận từ trước.
Chọn đáp án cho từng câu — không chấm điểm, chỉ nói xem em đang hiểu đúng hay cần đọc lại chặng nào.
Câu 1. Hai người làm đúng cùng một thuật toán, với cùng dữ liệu đầu vào, có ra hai kết quả khác nhau được không?
Câu 2. Một thuật toán «đúng» có bắt buộc phải là thuật toán «nhanh nhất» không?
Câu 3. Nếu máy tính cho kết quả sai, lỗi có chắc chắn là do thuật toán sai không?
Cuộn nốt xuống dưới nhé — sắp xong trang này rồi!
Nếu chỉ được nhớ một câu, hãy nhớ câu này.
Lần sau bạn than «làm bài y hệt bạn kia mà điểm khác nhau», em có thể hỏi lại: «Cậu có chắc là làm đúng từng bước như nhau không, hay có đoạn làm tắt?»