Mở đầu: một nhánh riêng, không nối tiếp 11 bài trước
11 bài trước xây dựng dần MỘT cỗ máy cổ điển hoàn chỉnh — từ cổng logic (Bài 1) tới đóng gói chiplet hiện đại (Bài 11). Bài này là một NHÁNH RIÊNG, một "chân trời" mở rộng — máy tính lượng tử KHÔNG xây trên nền tảng bit nhị phân của 11 bài trước, mà dùng một mô hình toán học HOÀN TOÀN khác: cơ học lượng tử. Đây không phải bài capstone tổng hợp kiến thức cũ, mà là lời giới thiệu tới một hướng đi khác của kiến trúc máy tính.
1. Bit cổ điển vs Qubit lượng tử
Bit cổ điển (xuyên suốt Bài 1-11) LUÔN ở đúng MỘT trong hai trạng thái: 0 hoặc 1. Qubit lượng tử có thể ở trạng thái chồng chập (superposition) — đồng thời "một phần" 0 VÀ "một phần" 1, biểu diễn bằng vector trạng thái:
$$|\psi\rangle = \alpha|0\rangle + \beta|1\rangle \qquad\qquad |\alpha|^2 + |\beta|^2 = 1$$
$\alpha$, $\beta$ là biên độ (amplitude) — SỐ PHỨC, không phải xác suất trực tiếp. Xác suất đo được trạng thái $|0\rangle$ là $|\alpha|^2$, đo được $|1\rangle$ là $|\beta|^2$ (định đề Born) — ràng buộc $|\alpha|^2+|\beta|^2=1$ đảm bảo tổng xác suất luôn bằng 1, y hệt mọi phân bố xác suất hợp lệ.
function cx(re, im = 0) { return { re, im }; } // so phuc toi gian
function makeZeroState(numQubits) {
const size = Math.pow(2, numQubits);
const state = new Array(size).fill(null).map(() => cx(0, 0));
state[0] = cx(1, 0); // khoi tao luon o |00...0>, bien do 1
return state;
}
function cAbs2(a) { return a.re * a.re + a.im * a.im; } // |alpha|^2 = xac suat
// Verified: makeZeroState(1) -> P(0)=1, P(1)=0 (chua ap dung cong nao)
2. Hiện tượng vướng víu lượng tử & Cổng logic lượng tử
Vướng víu lượng tử (entanglement): 2 qubit có thể liên kết với nhau sao cho đo MỘT qubit LẬP TỨC quyết định luôn kết quả đo của qubit KIA — dù chúng ở đâu — mà KHÔNG mô tả được bằng cách coi mỗi qubit là độc lập. Cổng lượng tử biến đổi trạng thái theo phép toán tuyến tính (ma trận unita): Hadamard (H) tạo chồng chập đều từ trạng thái cơ bản; CNOT (2-qubit) lật qubit đích NẾU qubit điều khiển là $|1\rangle$ — kết hợp H + CNOT chính là công thức kinh điển tạo vướng víu (mạch Bell); Pauli X/Y/Z tương ứng 3 phép quay 180° quanh 3 trục của quả cầu Bloch (biểu diễn hình học trạng thái 1 qubit).
H (Hadamard): X (Pauli, "NOT"): Z (Pauli, dao pha):
1/sqrt2 * [1 1] [0 1] [1 0]
[1 -1] [1 0] [0 -1]
CNOT (2-qubit, dieu khien=q0, dich=q1):
|00> -> |00> |01> -> |01> |10> -> |11> |11> -> |10>
(CHI lat q1 KHI q0 = 1 - day la nguon goc tao vuong viu khi ket hop voi H)
// Mach Bell kinh dien: H tren qubit 0, roi CNOT(dieu khien=0, dich=1)
let state = makeZeroState(2); // |00>
state = applySingleQubitGate(state, GATE_H, 0, 2); // (|00> + |10>)/sqrt2
state = applyCNOT(state, 0, 1, 2); // (|00> + |11>)/sqrt2 - VUONG VIU!
const probs = measureProbabilities(state);
// Verified: probs = [0.5, 0, 0, 0.5] tuong ung [P(00), P(01), P(10), P(11)]
// Chi 2/4 trang thai co the do duoc - 2 qubit gio LIEN KET voi nhau
3. Thuật toán lượng tử & Ứng dụng
Thuật toán Shor phân tích thừa số nguyên tố một số lớn nhanh hơn HÀM MŨ so với thuật toán cổ điển tốt nhất đã biết — đe doạ trực tiếp mật mã RSA (dựa trên độ khó phân tích thừa số). Thuật toán Grover tìm kiếm trong danh sách không có cấu trúc nhanh hơn BÌNH PHƯƠNG (quadratic speedup) so với dò tuần tự — hữu ích cho tối ưu hoá và một số bài toán tìm kiếm tổng quát.
4. Bài toán tính toán xác suất đầu ra mạch lượng tử
Verified thật bằng engine (module quantum-sim.js riêng biệt, KHÔNG dùng chung
cpu-core.js vì mô hình toán học hoàn toàn khác): cổng Hadamard trên $|0\rangle$ cho đúng
$P(0)=P(1)=50\%$ (chồng chập đều). Mạch Bell (H trên qubit 0, rồi CNOT điều khiển=0/đích=1) trên
$|00\rangle$ tạo VƯỚNG VÍU THẬT SỰ:
$$P(00) = 0,5 \qquad P(01) = 0 \qquad P(10) = 0 \qquad P(11) = 0,5$$
Chỉ 2 trong 4 trạng thái có thể đo được — $|01\rangle$ và $|10\rangle$ có xác suất 0% TUYỆT ĐỐI, không phải "rất nhỏ". Đây chính là dấu hiệu toán học của vướng víu: đo qubit đầu tiên ra 0 thì qubit thứ hai CHẮC CHẮN cũng là 0 (và tương tự với 1) — 2 kết quả đo LUÔN khớp nhau, dù không có "tín hiệu" nào truyền giữa 2 qubit tại thời điểm đo.
function measureProbabilities(state) {
return state.map((amplitude) => amplitude.re ** 2 + amplitude.im ** 2); // |alpha|^2
}
// Verified: H|0> -> probs = [0.5, 0.5] (chong chap deu 1 qubit)
// Verified: mach Bell -> probs = [0.5, 0, 0, 0.5] (vuong viu 2 qubit)
// Tong luon = 1 (bao toan xac suat, dinh de Born)
5. Sửa lỗi lượng tử: vì sao "hàng nghìn qubit logic" là hàng TRIỆU qubit thật
Pitfall NISQ ở trên có nhắc tới "qubit logic, sau khi sửa lỗi" rồi đi tiếp. Nhưng đó chính là chỗ quyết định máy tính lượng tử còn cách thực tế bao xa, nên đáng dừng lại.
Trước hết, vì sao lỗi lại chí mạng đến thế. Một mạch chạy đúng chỉ khi mọi cổng trong nó đều đúng. Với tỷ lệ lỗi $p$ mỗi cổng, xác suất cả mạch cho kết quả tin được là $(1-p)^{\text{số cổng}}$ — tụt theo hàm mũ, không tuyến tính:
// 0.1% error per gate - a good figure for today's hardware
circuitSuccessProbability(0.001, 100); // 90.48% fine
circuitSuccessProbability(0.001, 1000); // 36.77% marginal
circuitSuccessProbability(0.001, 10000); // 0.0045% pure noise
// 100x more gates costs more than 20,000x in success probability.
// To keep 90% at 10,000 gates the error rate must fall to 0.001%
circuitSuccessProbability(0.00001, 10000); // 90.48% - 100x better hardware
Lối thoát rất tinh vi: trải thông tin của một qubit ra nhiều qubit vật lý vướng víu với nhau, rồi chỉ đo quan hệ giữa chúng chứ không đo giá trị. Phép đo đó cho biết "có lỗi xảy ra ở đâu đó" mà không tiết lộ dữ liệu, nên không làm sụp trạng thái. Cụm qubit vật lý đó hợp thành một qubit logic — thứ mà thuật toán thật sự chạy trên.
Cái giá của phép trải đó là toàn bộ vấn đề. Mã bề mặt (surface code) — phương án được theo đuổi nhiều nhất — dùng một lưới khoảng cách $d$, cần $d^2$ qubit vật lý cho mỗi qubit logic. Lấy $d = 25$, một giá trị thường được nêu cho các ước lượng phá RSA:
surfaceCodeOverhead(25); // 625 physical qubits per logical qubit
physicalQubitsNeeded(4000, 25); // 2,500,000 physical qubits
// Breaking RSA-2048 needs roughly 4,000 logical qubits.
// Today's best hardware is on the order of 1,000 physical qubits.
// The gap is more than 3 orders of magnitude - and that is the honest answer
// to "how far away is this?", far more than any headline qubit count.
Còn một điều kiện nữa dễ bị bỏ qua: sửa lỗi chỉ hoạt động khi tỷ lệ lỗi vật lý đã nằm dưới một ngưỡng (cỡ 1%). Trên ngưỡng đó, thêm qubit vào mã sửa lỗi làm mọi thứ tệ hơn chứ không tốt lên — vì bản thân các qubit thêm vào cũng sinh lỗi nhanh hơn tốc độ chúng sửa được. Nên đây không phải bài toán "chờ đủ lâu là nhiều qubit", mà là bài toán phải đạt chất lượng trước rồi mới nhân số lượng.
Đó là lý do NIST đã chuẩn hoá mật mã hậu lượng tử (post-quantum cryptography) năm 2024 — ML-KEM cho trao đổi khoá, ML-DSA cho chữ ký — dựa trên các bài toán lưới (lattice) mà chưa thuật toán lượng tử nào biết cách phá. Điểm đáng chú ý: đây là phần mềm chạy trên máy cổ điển bình thường. Câu trả lời cho mối đe doạ lượng tử không phải là mua máy lượng tử, mà là đổi thuật toán trên chính những cỗ máy 11 bài trước đã xây.
6. Thực hành: Trình giả lập mạch lượng tử 2-qubit
Bấm các cổng để xây mạch lượng tử của riêng bạn trên 2 qubit — quan sát biên độ và xác suất đo được thay đổi trực tiếp. Thử nút "Mạch Bell" để xem vướng víu lượng tử THẬT xuất hiện ngay lập tức:
Tóm lược
- ✅ Qubit chồng chập $|\psi\rangle=\alpha|0\rangle+\beta|1\rangle$, $|\alpha|^2+|\beta|^2=1$ — nhưng chồng chập KHÔNG tự động tăng tốc mọi loại tính toán.
- ✅ Verified: mạch Bell (H + CNOT) tạo vướng víu lượng tử thật — P(00)=P(11)=50%, P(01)=P(10)=0% tuyệt đối.
- ✅ Pitfall: decoherence (nhiễu môi trường) phá huỷ trạng thái lượng tử NGOÀI Ý MUỐN, trước cả khi đo chủ động.
- ✅ Shor/Grover chứng minh lợi thế toán học — nhưng NISQ hiện tại chưa đủ qubit sạch để chạy thực tế.
- ✅ Pitfall: hành động đo làm sụp đổ chồng chập VĨNH VIỄN, không thể khôi phục bằng đo lại.
- ✅ Verified: cùng phần cứng lỗi 0,1%/cổng — mạch 100 cổng thành công 90,48%, 1.000 cổng còn 36,77%, 10.000 cổng chỉ 0,0045%. Hỏng theo HÀM MŨ theo số cổng, nên vấn đề của NISQ là chất lượng cổng chứ không phải số qubit.
- ✅ Không thể sao lưu qubit (định lý không nhân bản), nên sửa lỗi lượng tử phải trải thông tin ra nhiều qubit vướng víu và chỉ đo QUAN HỆ giữa chúng — cụm đó hợp thành 1 qubit logic.
- ✅ Verified: surface code $d=25$ tốn 625 qubit vật lý cho MỘT qubit logic, nên ~4.000 qubit logic để phá RSA-2048 là 2.500.000 qubit VẬT LÝ — cách phần cứng hôm nay (~1.000) hơn ba bậc độ lớn.
- ✅ Nhưng rủi ro là của hôm nay: dữ liệu thu thập bây giờ có thể giải mã sau (harvest now, decrypt later). Câu trả lời là mật mã hậu lượng tử (NIST 2024: ML-KEM, ML-DSA) — phần mềm chạy trên máy CỔ ĐIỂN, không phải mua máy lượng tử.
Trắc nghiệm ôn tập
Câu 1
Vì sao chạy trình duyệt web hay game thông thường trên máy tính lượng tử KHÔNG nhanh hơn CPU cổ điển?
Câu 2
Verified: mạch Bell cho P(00)=50%, P(11)=50%, P(01)=P(10)=0% TUYỆT ĐỐI. Điều gì chứng tỏ đây THẬT SỰ là vướng víu lượng tử (entanglement), không phải ngẫu nhiên độc lập?
Câu 3
Decoherence là gì, và vì sao nó là thách thức lớn cho máy tính lượng tử thật?
Câu 4
Tại sao "thuật toán Shor có thể phá RSA" không đồng nghĩa "RSA đã bị phá vào lúc này"?
Tải file code thực hành minh họa bài học
File JavaScript quantum-sim.js — module RIÊNG BIỆT (không dùng chung
cpu-core.js) cho toàn bộ tính toán lượng tử: vector trạng thái phức, cổng
Hadamard/CNOT/Pauli X-Y-Z, đo lường theo định đề Born, giới hạn NISQ theo số cổng và chi phí sửa lỗi
surface code, kèm self-test đối chiếu đúng mọi con số trong bài (chạy node quantum-sim.js,
không cần cài thêm gì):
📖 Tài liệu tham khảo
- Sách giáo khoa cốt lõi: Nielsen & Chuang — Quantum Computation and Quantum Information — sách giáo khoa kinh điển và toàn diện nhất về tính toán lượng tử.
- Thuật toán Shor: Wikipedia — Shor's algorithm — chi tiết thuật toán phân tích thừa số nguyên tố và tác động tới mật mã RSA.
- Vướng víu lượng tử & mạch Bell: Wikipedia — Quantum entanglement — nền tảng lý thuyết và thí nghiệm kiểm chứng vướng víu lượng tử.
Bình luận