Tìm hiểu các ý tưởng chủ chốt của Alan Turing—thuật toán, tính bất khả quyết, và giải mã—và cách chúng định hình máy tính hiện đại, an ninh và trí tuệ máy.

Hầu hết những gì bạn làm với điện thoại hay laptop—tìm web, gửi tin nhắn, mở khóa tài khoản, hỏi trợ lý—dựa trên những câu hỏi Alan Turing đã giúp làm rõ: Tính toán là gì? Về nguyên tắc máy tính có thể làm gì? Và đâu là giới hạn?
Turing quan trọng ngày nay vì ông không chỉ nghĩ ra kỹ thuật tinh xảo; ông đã đặt ra luật chơi. Kỹ thuật phần mềm hiện đại, an ninh mạng và nghiên cứu AI đều thừa hưởng những quy tắc đó, dù không phải ai cũng nhắc tên ông.
Đầu tiên là tính toán: mô hình đơn giản của Turing ("Turing machine") cho chúng ta một cách rõ ràng để nói về chương trình, dữ liệu và thuật toán. Nhờ đó ta có thể so sánh những thiết bị rất khác nhau—laptop, máy chủ, điện thoại—như những biến thể của cùng ý tưởng cơ bản: một máy đa mục đích chạy theo chỉ dẫn.
Thứ hai là bảo mật: trong Thế chiến II, Turing giúp biến việc giải mã thành một kỷ luật có tính hệ thống và mang tính kỹ thuật. Tư duy đó vẫn vang vọng trong mật mã và công việc bảo mật ngày nay, nơi thành công phụ thuộc vào việc hiểu kẻ tấn công có thể tính toán được gì—và tốn bao nhiêu chi phí.
Thứ ba là trí tuệ máy: Turing đặt câu hỏi thực tế mà đến giờ vẫn ảnh hưởng tới tranh luận AI: Làm sao ta nhận biết hành vi thông minh từ bên ngoài? “Turing Test” của ông vẫn là một mốc tham chiếu, dù người ta tranh luận về giới hạn của nó.
Hướng dẫn này để toán học nhẹ, tập nhiều vào trực giác. Chủ đề cốt lõi đơn giản: máy tính rất mạnh, nhưng không thần kỳ. Một số bài toán là không thể giải bằng bất kỳ chương trình nào, và còn nhiều bài toán khác giải được nhưng với chi phí khiến chúng không thể dùng trong thực tế. Hiểu những ranh giới đó giúp bạn đánh giá tốt hơn các tuyên bố về công nghệ—và chọn công cụ phù hợp.
Alan Turing (1912–1954) thường được giới thiệu bằng những câu chuyện kịch tính, nhưng cách hữu ích nhất để hiểu ông là nhìn vào những gì ông xây dựng và chứng minh. Ông là một nhà toán học coi những câu hỏi về “cái gì có thể tính được” như những vấn đề chính xác—rồi lần theo câu trả lời cho đến các máy thực tế.
Bài báo năm 1936 của ông, On Computable Numbers, làm hai việc bền lâu: mô tả một mô hình trừu tượng cho tính toán (bây giờ gọi là máy Turing) và dùng mô hình đó để chỉ ra rằng một số câu hỏi về chương trình không thể giải chung. Đây không phải khoa học viễn tưởng; đó là một lập luận cẩn thận về giới hạn của logic và phép tính.
Trong Thế chiến II, Turing làm việc tại Bletchley Park về giải mã—tìm cách bẻ khoá các thông điệp mã hóa. Các truyền thuyết phổ biến đôi khi ngụ ý ông “một mình” phá Enigma hay “phát minh ra máy tính” chỉ sau một đêm. Thực tế thú vị hơn: ông là một người đóng góp chủ chốt trong một nỗ lực lớn, thiết kế phương pháp và giúp định hình các công cụ điện-điện cơ để biến hiểu biết toán học thành công việc vận hành có thể lặp lại.
Sức mạnh của Turing là di chuyển giữa chứng minh và thực hành. Ông có thể lập luận về một máy lý tưởng trên giấy, rồi giúp thiết kế thủ tục và những giới hạn phần cứng để làm cho hệ thống thực tế nhanh và tin cậy hơn. Sự pha trộn đó—tư duy hình thức cộng với triển khai thực tế—là khuôn mẫu cho khoa học máy tính hiện đại.
Ý tưởng của Turing vang vọng qua nhiều lĩnh vực: nền tảng của khoa học máy tính hiện đại (tính toán và tính quyết định), tư duy an ninh sơ khởi (giải mã có hệ thống), và những tranh luận về trí tuệ máy sau này. Ngay cả khi người ta không đồng ý với kết luận của ông, họ thường vẫn dùng khung tư duy ông góp phần định hình.
Một thuật toán đơn giản là một tập các bước rõ ràng để đạt kết quả. Nó không nhất thiết là “toán” hay liên quan máy tính—chỉ là một phương pháp bạn có thể làm theo một cách đáng tin cậy.
Hãy nghĩ đến một công thức cơ bản pha trà:
Đó là một thuật toán: các bước rõ ràng, theo thứ tự, với kết quả có thể dự đoán.
Các máy đầu tiên thường là đơn dụng: xây để làm tốt một công việc duy nhất, như dệt hoa văn, tính bảng số, hoặc mã hóa/giải mã theo một hệ thống cố định. Muốn làm công việc khác, thường bạn cần một máy khác hoặc đại tu lớn.
Một máy tính đa mục đích thì khác. Nó được thiết kế để theo nhiều thuật toán khác nhau, tuỳ theo chỉ dẫn bạn đưa. Phần cứng vật lý giữ nguyên; thứ thay đổi là chương trình.
Phần mềm, về bản chất, là cách viết thuật toán xuống để máy thực thi chính xác. Thay vì “đợi 3–5 phút”, một chương trình có thể nói “đợi 240 giây.” Thay vì “nếu bạn muốn đường”, nó nói “nếu người dùng chọn đường, thêm một thìa cà phê.”
Sự chuyển dịch này—xem chỉ dẫn như thứ máy có thể lưu, đọc và chạy—đặt nền tảng cho tính toán hiện đại: một thiết bị, vô số nhiệm vụ, tất cả do thuật toán điều khiển.
Bạn có thể thấy ý tưởng đa dụng trong các công cụ “vibe-coding” ngày nay: thay vì gõ từng bước, bạn mô tả mục tiêu, và hệ thống biến mô tả đó thành phần mềm có thể chạy.
Ví dụ, Koder.ai cho phép bạn xây ứng dụng web, backend và mobile qua giao diện chat—rồi xuất mã nguồn, triển khai và lưu trữ. Về bản chất vẫn quay về khung của Turing: hệ thống cuối cùng tạo ra chương trình (thuật toán + dữ liệu + luồng điều khiển) và chương trình đó phải chạy trong các giới hạn thực như thời gian, bộ nhớ, bảo mật và độ chính xác.
Máy Turing dễ hiểu nhất như một thí nghiệm tư duy: một “máy tính tưởng tượng” rất đơn giản được thiết kế để nắm bắt ý nghĩa của việc tính toán từng bước. Turing không định xây máy này. Ông muốn định nghĩa tính toán đủ rõ để chứng minh điều gì đó về nó.
Hãy tưởng tượng một dải giấy dài vô hạn (băng giấy) chia ô. Mỗi ô có thể chứa một ký hiệu—như trắng, 0, hoặc 1. Một đầu đọc nằm trên một ô tại một thời điểm.
Thêm vào đó một thẻ chỉ dẫn nhỏ nói đầu đọc phải làm gì. Máy luôn ở một trong một tập trạng thái nhỏ (tưởng tượng như các “chế độ”, ví dụ đang tìm chữ số tiếp theo hoặc xong).
Với mỗi kết hợp (trạng thái hiện tại + ký hiệu trên băng), có một quy tắc nói rằng:
Chỉ vậy thôi—nhưng với các quy tắc phù hợp, máy có thể thực hiện bất kỳ phép tính nào ta nhận ra là một thuật toán.
Máy Turing cho một định nghĩa rõ ràng về tính toán: một tập hữu hạn các quy tắc cơ học tác động lên không gian bộ nhớ. Đây là một mô hình toán học, không phải bản thiết kế phần cứng.
Vì mô hình rất tối giản, nó mạnh cho việc chứng minh: nếu một thứ không thể tính ngay cả bởi chiếc máy lý tưởng này, thì nó cũng không thể tính bởi các máy thông thường.
Chương trình hiện đại trông khác xa băng giấy và đầu đọc, nhưng ánh xạ rất trực tiếp: bộ nhớ chứa dữ liệu, luồng điều khiển thay đổi trạng thái, và lệnh biến đổi ký hiệu. Ngay cả “stored procedures” trong cơ sở dữ liệu cũng khớp mô hình: các quy tắc cố định đọc dữ liệu, cập nhật và tiến qua các bước xác định—tính toán như một quá trình lặp lại theo quy tắc.
Một số câu hỏi về chương trình có vẻ nên có câu trả lời cơ học rõ ràng. Turing chỉ ra rằng với một lớp câu hỏi quan trọng, hy vọng đó là không thể—không phải vì chúng ta không đủ thông minh, mà vì không thể tồn tại một phương pháp tổng quát.
Một bài toán là quyết định được nếu tồn tại một thủ tục (thuật toán) luôn kết thúc và trả lời có/không đúng cho mọi đầu vào.
Một bài toán là không quyết định được nếu không có thuật toán như vậy cho tất cả trường hợp. Bạn có thể giải nhiều trường hợp riêng lẻ, nhưng không thể xây một phương pháp duy nhất luôn luôn chính xác và luôn dừng cho mọi trường hợp.
Vấn đề dừng hỏi:
Cho một chương trình bất kỳ và đầu vào của nó, liệu ta luôn xác định được chương trình đó cuối cùng sẽ dừng (halt) hay chạy mãi mãi không?
Turing chứng minh câu trả lời là không. Không tồn tại trình kiểm tra tổng quát có thể xem bất kỳ chương trình và bất kỳ đầu vào rồi luôn dự đoán đúng về việc dừng.
Khi chấp nhận rằng “dự đoán dừng cho mọi chương trình” là bất khả, nhiều công cụ phân tích “hoàn hảo” trở nên không thể thực hiện.
Một “trình phát hiện lỗi toàn năng” có nghĩa: đưa vào chương trình bất kỳ, nó sẽ nói chắc chắn chương trình có lỗi kiểu này hay không. Tuy nhiên nhiều thuộc tính lỗi có thể được diễn đạt lại thành “chương trình này có bao giờ đạt trạng thái nhất định không?”—và điều này có thể mã hoá vấn đề dừng.
Vì vậy công cụ thực tế phải thỏa hiệp: chúng có thể thiếu sót (bỏ qua lỗi), hoặc đôi khi cảnh báo sai, hoặc chỉ hoạt động với các loại chương trình bị giới hạn.
Xét thuộc tính: "Chương trình này không bao giờ rơi vào vòng lặp vô hạn." Nếu một công cụ có thể xác minh hoàn hảo điều này cho mọi chương trình, nó cũng đồng thời giải quyết vấn đề dừng. Vì đó là bất khả quyết, kiểm tra hoàn hảo nói chung không thể có.
Đó là lý do các công cụ như lint, bộ kiểm tra kiểu, và bộ phân tích tĩnh có giá trị—nhưng chúng không phải là phép màu.
Một bài học then chốt sau Turing là “có thể tính” không đồng nghĩa với “hữu dụng.” Một số nhiệm vụ có thể giải về nguyên tắc—tồn tại chương trình cuối cùng sẽ dừng—nhưng vẫn không thực tế vì chương trình đó cần quá nhiều thời gian hoặc bộ nhớ.
Hãy tưởng tượng một chương trình giải một câu đố bằng cách thử mọi tổ hợp. Nó sẽ thành công cuối cùng, nhưng nếu số tổ hợp tăng nhanh hơn tốc độ cải thiện máy tính, “cuối cùng” có thể lâu hơn tuổi của vũ trụ.
Đây là khía cạnh thực tế của giới hạn tính toán: không phải liệu có lời giải tồn tại, mà liệu lời giải đó phù hợp trong các giới hạn đời thực không.
Mỗi chương trình tiêu thụ tài nguyên:
Một khác biệt trông nhỏ trên giấy có thể là khổng lồ trong thực tế. Một phương pháp tăng công việc gấp đôi khi đầu vào tăng gấp đôi có thể chấp nhận được; một phương pháp tăng theo bình phương (hoặc tệ hơn) có thể nhanh chóng trở nên vô dụng.
Các nhà khoa học máy tính phân loại bài toán theo cách yêu cầu thời gian và bộ nhớ tăng. Không cần nhiều toán học, ý tưởng đơn giản:
Những nhóm này thường được bàn như lớp độ phức tạp—nhãn tách những bài toán có thể giải hiệu quả ra khỏi những bài toán không.
Trong mật mã, độ khó thường là tính năng. Nhiều hệ bảo mật dựa vào nhiệm vụ dễ làm theo một chiều (khóa) nhưng rất tốn kém khi làm ngược lại (phá). Vì vậy, mặc dù giới hạn độ phức tạp giới hạn những gì ta có thể tính nhanh, chúng cũng giải thích tại sao bảo mật hiện đại có thể vận hành được—kể cả khi kẻ tấn công có máy mạnh.
Giải mã là thực hành phân tích thông điệp mã hoá để phục hồi nội dung mà không biết khoá bí mật. Trong Thế chiến II, công việc này quan trọng vì thông tin mã hoá chứa kế hoạch, lệnh và tình báo ở quy mô khiến giải thủ công quá chậm.
Nếu bạn không đọc được thông điệp kịp thời, bạn không thể hành động—vì vậy tốc độ và khả năng lặp lại trở nên quan trọng ngang với sự tinh tế.
Các mã tốt cố gắng làm cho thông điệp trông như nhiễu ngẫu nhiên. Giải mã tìm kiếm những chỗ thực tế lộ ra: mẫu ngôn ngữ, định dạng lặp, phần đầu dự đoán, hoặc thói quen con người khi dùng hệ thống. Thay vì coi mỗi thông điệp như một câu đố độc lập, người giải mã coi việc chặn là một vấn đề dữ liệu.
Cách tiếp cận thực tế kết hợp ba thành tố:
Đây là lúc tư duy khoa học máy tính xuất hiện: định nghĩa bài toán rõ ràng, giảm về các bước, và xây hệ thống thực thi nhanh hơn con người.
An ninh hiện đại vẫn bắt đầu bằng cùng tư duy: giả sử một kẻ thù thông minh, kiên trì và có giới hạn. Người bảo vệ đặt ra giả định (về bí mật, quản lý khoá, hành vi người dùng, tính toàn vẹn thiết bị), còn kẻ tấn công tìm điểm yếu nhất.
Đó cũng là thế giới của đánh đổi. Mã mạnh hơn có thể làm người dùng khó chịu hơn. Giám sát nhiều hơn có thể làm dấy lên lo ngại riêng tư. Phát hiện nhanh hơn có thể mang lại nhiều cảnh báo giả.
Thời đại Turing nhấn mạnh bài học lâu dài: bảo mật không chỉ là “thuật toán tốt nhất,” mà là hệ thống, động cơ và cách người thực tế dùng chúng.
Turing làm việc trong thời kỳ thông điệp mang tính sống còn—và áp lực đó vẫn phản chiếu rõ vào mục tiêu an ninh ngày nay.
Bảo mật thường quy về vài ý tưởng đơn giản:
Thời Turing cho thấy bạn hiếm khi có những yếu tố này “miễn phí.” Bạn phải thiết kế cho chúng—và kiểm tra chúng dưới áp lực.
Mật mã hiện đại dựa vào độ khó toán học: bài toán dễ làm theo một chiều nhưng rất khó đảo ngược nếu không có khoá (ví dụ phân tích thừa số số lớn). Đó là “ổ khoá toán học.”
Nhưng khoá thường là điểm yếu thực sự. Quản lý khoá nghĩa là sinh khoá an toàn, lưu trữ sao cho không bị sao chép, xoay khoá khi cần và thu hồi nhanh nếu có sự cố.
Thuật toán tuyệt vời có thể bị bẻ gãy bởi khoá bị lộ, mật khẩu tái sử dụng hay server chưa vá.
Kẻ tấn công luôn thích nghi. Bảo mật hiếm khi là đạt tới hoàn hảo—thay vào đó là giảm rủi ro: làm cho tấn công đắt đỏ, dễ phát hiện và hạn chế thiệt hại.
Kẻ xấu ngày nay tự động hoá những việc trước đây cần đội ngũ chuyên gia: dò mật khẩu, lừa đảo, quét hàng triệu hệ thống. Ở quy mô Internet, sai sót nhỏ trở thành sự cố lớn—lưu trữ cloud cấu hình sai, thông tin đăng nhập bị sao chép, hay một nhân viên click vào link sai.
Bài học bền lâu là thiết thực: ghép toán tốt với vận hành kỷ luật, và giả định hệ thống sẽ bị tấn công liên tục.
Khi người ta nói máy tính “có thể” làm gì, thường họ có ý nghĩa cụ thể hơn là “mọi thứ bạn tưởng tượng.” Định đề Church–Turing là quy tắc thực tế vạch ranh: một nhiệm vụ là có thể tính nếu tồn tại một phương pháp theo từng bước (thuật toán) sẽ kết thúc với câu trả lời đúng, và phương pháp đó có thể được thực hiện bởi một máy Turing.
Dù tên gọi có vẻ chính thức, đây không phải điều có thể chứng minh theo cách toán học thông thường—vì nó nối một mô hình hình thức (máy Turing) với ý tưởng không hình thức (“bất kỳ phương pháp tính toán hữu hiệu nào”). Thay vào đó đó là một khẳng định được củng cố bởi bằng chứng thực nghiệm: mỗi khi người ta đề xuất một mô hình tính toán mới hợp lý (ngôn ngữ lập trình, mạch logic, tế bào tự động, CPU hiện đại), nó lại khớp với cùng tập bài toán có thể tính được.
Định đề cho phép chúng ta so sánh các máy và ngôn ngữ khác nhau mà không bị sa lầy vào chi tiết. Nếu hai hệ thống “Turing-complete”, thì—với đủ thời gian và bộ nhớ—chúng có thể tính cùng loại hàm.
Đó là lý do điện thoại, laptop và máy chủ đám mây khác nhau chủ yếu về tốc độ, chi phí và quy mô, chứ không phải về loại bài toán nền tảng chúng có thể giải.
Church–Turing không hứa hẹn mọi câu hỏi đều có lời giải thuật toán. Một số bài toán không thể tính (như vấn đề dừng), nghĩa là không chương trình nào trả lời được chúng cho mọi trường hợp. Và ngay cả khi một bài toán có thể tính, nó có thể chậm tới mức vô dụng—vấn đề khác do lý thuyết độ phức tạp xử lý.
Turing nhận thấy câu hỏi “Máy có thể nghĩ không?” mơ hồ. “Nghĩ” có thể là có cảm xúc, hiểu biết, sáng tạo, tự nhận thức, hoặc chỉ đơn giản là trả lời tốt. Nếu ta không đồng ý định nghĩa, ta không thể xây bài kiểm tra rõ ràng.
Turing đề xuất thay câu hỏi mơ hồ bằng câu hỏi thực tế: một máy có thể hành xử thông minh trong giao tiếp không?
Trong thiết lập cổ điển, một thẩm phán con người trò chuyện (thường qua văn bản) với hai bên ẩn: một người và một máy. Thẩm phán có thể hỏi bất cứ điều gì, rồi phải quyết định bên nào là người. Nếu thẩm phán không thể phân biệt đáng tin cậy, máy được cho là đã vượt qua bài kiểm tra.
Đây không phải để “chứng minh” trí tuệ mà là để đặt mục tiêu đo lường: hiệu suất không phân biệt trong tương tác cụ thể.
Turing Test tập trung vào hành vi bên ngoài trong một bối cảnh giới hạn. Đó là điểm mạnh (quan sát được), nhưng cũng là hạn chế:
Chatbot ngày nay có thể tạo cảm giác rất giống người trong trao đổi ngắn, khiến ý tưởng của Turing trở nên thời sự. Nhưng điều đó cũng làm lộ các bẫy đánh giá. Các tiêu chuẩn có thể bị “lách” bằng phong cách và quen thuộc với định dạng kiểm tra, và một hệ thống giỏi trò chuyện vẫn có thể sai về mặt thực tế, suy luận lâu dài hay quyết định nhất quán.
Bài học bền lâu không phải cuộc trò chuyện là thước đo cuối cùng cho trí tuệ—mà là ta cần các bài kiểm tra cẩn trọng, minh bạch và cần trung thực về những gì mỗi bài kiểm tra đo được.
Hệ thống AI có vẻ mở rộng không giới hạn, nhưng chúng vẫn chạy trên chương trình—vì vậy chúng thừa hưởng cùng ranh giới Turing đã làm rõ. Những giới hạn ấy quan trọng khi quyết định điều gì khả thi, điều gì tốn kém, và điều gì là không thể về mặt nguyên tắc.
Nhiều tác vụ AI có thể tính nhưng tốn kém: huấn luyện mô hình, tìm kiếm lời giải hay tối ưu một kế hoạch có thể cần rất nhiều thời gian và năng lượng. Thêm dữ liệu và phần cứng nhanh hơn có thể giúp—đôi khi rất nhiều.
Một số mục tiêu chạm tới rào cản sâu hơn. Một vài câu hỏi không thể được trả lời bởi bất kỳ thủ tục tổng quát nào cho mọi trường hợp (theo tinh thần bất khả quyết). Ví dụ, “chứng minh hệ thống bất kỳ sẽ không bao giờ thất bại” không chỉ khó mà với các lớp hệ thống rộng nó không thể được tự động hoá hoàn toàn mà không có ngoại lệ và giả định.
Ngay cả khi một bài toán có thể tính, nó có thể không giải được vì thời gian yêu cầu tăng nhanh đến mức thêm tài nguyên không còn hiệu quả. Điều này xuất hiện trong lập kế hoạch dài hạn, kiểm chứng toàn diện, và một số dạng suy luận trường hợp xấu nhất.
AI có thể gần đúng hoặc đoán, nhưng đảm bảo trở nên đắt đỏ.
Vì đảm bảo hoàn hảo có giới hạn, đánh giá tập trung vào quản lý bất định: đo tỷ lệ lỗi, thử căng các kịch bản hiếm, và theo dõi mô hình hỏng theo thời gian. Những lỗi khó nhất thường nằm ở các trường hợp biên không xuất hiện trong bộ chuẩn thông thường.
Bảo mật bị định hình bởi các giới hạn này. Bạn không thể chỉ dựa vào quy tắc để “lọc mọi hành vi xấu,” và bạn không thể kiểm chứng hoàn toàn mọi tương tác. Tấn công kiểu prompt injection, nhiễm dữ liệu huấn luyện và lạm dụng nhắc nhở rằng phòng thủ phải nhiều lớp: giám sát, kiểm soát truy cập, red‑teaming và thiết kế hệ thống cẩn trọng—không có một bài kiểm tra hoàn hảo duy nhất.
Công việc của Turing thường được dạy như lịch sử, nhưng hữu ích hơn khi xem như một bộ “luật đi đường” để suy nghĩ rõ ràng về máy tính có thể (và không thể) làm gì.
1) Tính toán (cái gì khả thi về nguyên tắc). Máy Turing cung cấp cách rõ ràng để nói về những bài toán có thể được giải bởi bất kỳ thủ tục từng bước nào. Vấn đề dừng là kết quả tiêu biểu: một số câu hỏi về chương trình là không thể giải chung, bất kể bạn thông minh đến đâu.
2) Độ phức tạp (cái gì khả thi với thời gian và tài nguyên thực tế). Nhiều nhiệm vụ có thể tính được nhưng trở nên vô dụng khi đầu vào tăng—bởi vì thời gian, bộ nhớ hay năng lượng cần tăng vọt. Đó là lý do “chạy được trên ví dụ nhỏ” không có nghĩa là “chạy được trong thế giới thực.”
3) Bảo mật (giới hạn có thể bảo vệ ta). Mật mã hiện đại dựa vào các giới hạn thực tế: không phải là việc phá một hệ thống là không thể, mà là quá tốn kém hoặc chậm để làm ở quy mô. Công việc giải mã thời Turing nhắc ta rằng kẻ tấn công dùng toán học, kỹ thuật và lối tắt vận hành—không chỉ brute force.
Khi đối mặt bài toán tính toán, hãy hỏi ba câu theo thứ tự:
Nếu bạn muốn đào sâu hơn, những chủ đề tốt tiếp theo là:
Tiến bộ trong tính toán là có thật—phần cứng nhanh hơn, thuật toán tốt hơn, công cụ bảo mật mạnh hơn. Các giới hạn cũng có thật, và hiểu chúng là lợi thế thực tế: giúp bạn chọn công cụ phù hợp, đặt kỳ vọng thực tế, và tránh bị lừa bởi những lời hứa bỏ qua toán học.
Một máy Turing là mô hình trừu tượng tối giản của tính toán: một băng giấy (bộ nhớ), một đầu đọc/ghi và một tập hợp hữu hạn các quy tắc (các trạng thái). Nó quan trọng vì cung cấp cách chính xác để nói về “một chương trình” có thể làm gì về mặt nguyên tắc—không phụ thuộc vào phần cứng hay ngôn ngữ lập trình cụ thể nào.
Định đề Church–Turing là ý nói bất kỳ phương pháp hữu hiệu nào theo từng bước mà cho ra kết quả đều có thể được mô tả bằng một máy Turing. Đây không phải là một định lý chứng minh theo nghĩa toán học chặt chẽ; nó là một luận điểm được ủng hộ bởi nhiều thập kỷ kinh nghiệm: mọi mô hình tính toán hợp lý được đề xuất đều khớp với cùng tập các bài toán có thể tính được.
“Có thể tính được” nghĩa là tồn tại một thuật toán sẽ đưa ra câu trả lời đúng (cuối cùng). “Có thể tính được một cách hiệu quả” nghĩa là thuật toán đó chạy với thời gian và bộ nhớ thực tế chấp nhận được khi kích thước đầu vào tăng. Nhiều lỗi thực tế bắt nguồn từ việc nhầm lẫn hai khái niệm này—một bài toán có thể tính được nhưng vẫn vô dụng vì chi phí tăng quá nhanh.
Vấn đề dừng hỏi liệu có tồn tại một thuật toán tổng quát có thể quyết định với mọi chương trình và mọi đầu vào xem chương trình đó có dừng hay chạy vô hạn không. Turing đã chứng minh là không tồn tại bộ kiểm tra tổng quát như vậy. Về thực tế, đó là lý do nhiều công cụ phân tích “hoàn hảo” cho mọi mã nguồn là không thể.
Bởi vì nhiều tính chất lỗi có thể được diễn đạt lại là “chương trình này có bao giờ đạt tới trạng thái X không?”—và câu hỏi này có thể mã hóa vấn đề dừng. Các công cụ thực tế phải thỏa hiệp bằng cách:
Vì thế, phân tích tĩnh tốt rất hữu ích, nhưng không phải là phép màu.
Độ phức tạp mô tả cách nhu cầu tài nguyên thay đổi khi kích thước đầu vào tăng—chủ yếu là thời gian và bộ nhớ. Một thay đổi nhỏ trong tốc độ tăng trưởng có thể trở nên quyết định ở quy mô lớn (ví dụ: tăng gấp đôi so với bình phương). Vì vậy, phương án làm việc trên ví dụ nhỏ có thể hoàn toàn không khả thi trên dữ liệu thực tế.
Mật mã hiện đại thường dựa trên bài toán mà một chiều dễ làm (với khóa) nhưng ngược lại thì rất tốn kém. Khoảng cách chi phí này thường là một giả định về độ phức tạp: kẻ tấn công có thể tính giải pháp về mặt nguyên tắc, nhưng không thể trong thời gian/ngân sách thực tế ở quy mô lớn. Nói cách khác, giới hạn tính toán không chỉ là chướng ngại—chúng còn là một phần thiết kế bảo mật.
Công việc giải mã thời Thế chiến thứ hai mô hình hóa một phương pháp lâu dài: kết hợp cấu trúc, thống kê, và tự động hóa.
Cách tiếp cận này vẫn là nền tảng của bảo mật hiện đại—nhưng ở quy mô Internet.
Turing Test đánh giá liệu một máy có thể tạo ra hành vi hội thoại giống người trong một thiết lập giới hạn hay không. Nó là chuẩn hành vi hữu dụng, nhưng không đo trực tiếp sự hiểu biết, ý thức hay tính trung thực. Nó cũng có thể khen thưởng phong cách và thuyết phục hơn là độ chính xác.
Hệ thống AI chạy trên chương trình, nên chúng kế thừa các giới hạn về tính toán và độ phức tạp. Thông thường bạn không thể hứa hẹn các bảo đảm hoàn hảo kiểu “hệ thống này sẽ không bao giờ thất bại trong mọi tình huống.” Một số mục tiêu kiểm chứng rơi vào những vùng bất khả quyết đối với các lớp hệ thống rộng. Vì vậy, thực hành an toàn AI tập trung vào quản trị rủi ro: thử nghiệm, giám sát, phòng thủ nhiều lớp và giả định rõ ràng.