Quantum computing ***************** Qubit và toán tử quantum ========================= Trên máy tính hiện nay, đơn vị xử lý cơ bản là bit (0 hoặc 1). Trong máy tính lượng tử, đơn vị tính toán là qubit (quantum bit). Qubit ----- Mỗi qubit :math:`\lvert \psi \rangle` được biểu diễn dưới dạng tổ hợp tuyến tính của cơ sở gồm :math:`\lvert 0 \rangle = (1, 0)` và :math:`\lvert 1 \rangle = (0, 1)`. Khi đó qubit :math:`\lvert \psi \rangle = \alpha \lvert 0 \rangle + \beta \lvert 1 \rangle`. Ở đây :math:`\alpha, \beta \in \mathbb{C}` (tập số phức). Tích của :math:`n` qubit là các tổ hợp :math:`\lvert 0, 0, \ldots, 0 \rangle`, :math:`\lvert 0, 0, \ldots, 1 \rangle`, ..., :math:`\lvert 1, 1, \ldots, 1 \rangle`. Ta cũng kí hiệu :math:`\lvert 0 \rangle \otimes \lvert 1 \rangle = \lvert 01 \rangle`. .. prf:example:: :label: exp-qubit Nếu :math:`\lvert \psi \rangle = \alpha \lvert 0 \rangle + \beta \lvert 1 \rangle` và :math:`\lvert \Psi \rangle = \gamma \lvert 0 \rangle + \delta \lvert 1 \rangle` thì .. math:: \lvert \psi \rangle \otimes \lvert \Psi \rangle = (\alpha \lvert 0 \rangle + \beta \lvert 1 \rangle) \otimes (\gamma \lvert 0 \rangle + \delta \lvert 1 \rangle) = \alpha \gamma \lvert 00 \rangle + \alpha \delta \lvert 0 1 \rangle + \beta \gamma \lvert 10 \rangle + \beta \delta \lvert 11 \rangle Tiếp theo là **toán tử quantum** và tương ứng với nó là các cổng (gate) trên mạch. Toán tử quantum tác động lên một qubit hoặc tích của nhiều qubit. Qubit có dạng :math:`\lvert \psi \rangle = a \lvert 0 \rangle + b \lvert 1 \rangle`. Ta có thể viết hệ số dưới dạng vector cột :math:`\begin{pmatrix} a \\ b \end{pmatrix}`. Khi đó, toán tử quantum sẽ là một ma trận :math:`2 \times 2` biến đổi vector trên thành vector mới :math:`\begin{pmatrix} c \\ d \end{pmatrix}` tương ứng với qubit :math:`\lvert \Psi \rangle = c \lvert 0 \rangle + d \lvert 1 \rangle`. Nói cách khác, đặt toán tử quantum là ma trận :math:`\mathcal{U} = \begin{pmatrix} c_{11} & c_{12} \\ c_{21} & c_{22} \end{pmatrix}` thì ta có .. math:: \lvert \psi \rangle \to \lvert \Psi \rangle = \mathcal{U} \lvert \psi \rangle, \quad \begin{pmatrix} c_{11} & c_{12} \\ c_{21} & c_{22} \end{pmatrix} \cdot \begin{pmatrix} a \\ b \end{pmatrix} = \begin{pmatrix} c \\ d \end{pmatrix} Các toán tử quantum thường gặp ------------------------------ .. prf:definition:: Toán tử đồng nhất :label: def-op-quan-id Toán tử đồng nhất identity giữ nguyên qubit đầu vào. Ma trận tương ứng là ma trận đơn vị :math:`I = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}`. .. prf:definition:: Toán tử NOT :label: def-op-quan-not Toán tử NOT có ma trận tương ứng là :math:`\text{NOT} = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}`. Khi đó :math:`\text{NOT} \lvert \psi \rangle = b \lvert 0 \rangle + a \lvert 1 \rangle` với :math:`x \in \{ 0, 1 \}`. Khi qubit là :math:`\lvert 0 \rangle` hoặc :math:`\lvert 1 \rangle`, tác dụng của toán tử NOT là phép XOR nên ta có :math:`\text{NOT} \lvert x \rangle = \lvert x \oplus 1 \rangle`. .. prf:definition:: Toán tử Hadamard :label: def-op-quan-hadamard Ma trận của toán tử Hadamard là :math:`H = \dfrac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & - 1 \end{pmatrix}`. .. prf:example:: :label: exp-op-quan-hadamard Xét qubit :math:`\lvert \psi \rangle = a \lvert 0 \rangle + b \lvert 1 \rangle`, toán tử Hadamard tương ứng với phép nhân ma trận .. math:: \dfrac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & - 1 \end{pmatrix} \cdot \begin{pmatrix} a \\ b \end{pmatrix} = \begin{pmatrix} \dfrac{1}{\sqrt{2}} (a + b) \\ \dfrac{1}{\sqrt{2}} (a - b) \end{pmatrix} Ta chuyển cột kết quả về lại dạng tổ hợp tuyến tính thì cổng Hadamard hoạt động trên qubit :math:`\lvert \psi \rangle = a \lvert 0 \rangle + b \lvert 1 \rangle` cho kết quả là .. math:: H \lvert \psi \rangle = H(a \lvert 0 \rangle + b \lvert 1 \rangle) = \dfrac{1}{\sqrt{2}} (a + b) \lvert 0 \rangle + \dfrac{1}{\sqrt{2}} (a - b) \lvert 1 \rangle Nếu :math:`\lvert \psi \rangle \equiv \lvert 0 \rangle` thì tương đương với :math:`a = 1, b = 0`. Ta có :math:`H \lvert 0 \rangle = \dfrac{\lvert 0 \rangle + \lvert 1 \rangle}{\sqrt{2}}`. Nếu :math:`\lvert \psi \rangle \equiv \lvert 1 \rangle` thì tương đương với :math:`a = 0, b = 1`. Ta có :math:`H \lvert 1 \rangle = \dfrac{\lvert 0 \rangle - \lvert 1 \rangle}{\sqrt{2}}`. Tổng quát ta nhận thấy, với :math:`x \in \{ 0, 1 \}` thì :math:`H \lvert x \rangle = \dfrac{\lvert 0 \rangle + (-1)^x \lvert 1 \rangle}{\sqrt{2}}`. Ta thấy rằng toán tử ngược của toán tử Hadamard là chính nó. Tiếp theo là toán tử thường được dùng nhất khi tính toán trên tích của nhiều qubit: toán tử control. Như đã xem xét ở trên, tích của :math:`n` qubit sẽ có :math:`2^n` phần tử tương ứng các bộ :math:`\lvert 0, 0, \ldots, 0, 0 \rangle`, :math:`\lvert 0, 0, \ldots, 0, 1 \rangle`, ... Do đó toán tử control sẽ là ma trận kích thước :math:`2^n \times 2^n`. .. prf:definition:: Toán tử control :label: def-op-quan-control Gọi :math:`\mathcal{U} = \begin{pmatrix} c_{11} & c_{12} \\ c_{21} & c_{22} \end{pmatrix}` là toán tử tác động lên một qubit. Xét hai qubit là :math:`\lvert x \rangle = a \lvert 0 \rangle + b \lvert 1 \rangle` và :math:`\lvert y \rangle = c \lvert 0 \rangle + d \lvert 1 \rangle`. Ta có tích .. math:: \lvert x \rangle \otimes \lvert y \rangle = ac \lvert 00 \rangle + ad \lvert 01 \rangle + bc \lvert 10 \rangle + bd \lvert 11 \rangle Khi đó toán tử control có dạng ma trận là .. math:: c \mathcal{U} = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & c_{11} & c_{12} \\ 0 & 0 & c_{21} & c_{22} \end{pmatrix} Hay viết dưới dạng ma trận khối là :math:`c \mathcal{U} = \begin{pmatrix} I & \mathcal{O} \\ \mathcal{O} & \mathcal{U} \end{pmatrix}`. Ta cũng viết tích :math:`\lvert x \rangle \otimes \lvert y \rangle` dưới dạng vector cột (4 phần tử). Khi đó .. math:: \mathcal{U} (\lvert x \rangle \otimes \lvert y \rangle) = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & c_{11} & c_{12} \\ 0 & 0 & c_{21} & c_{22} \end{pmatrix} \cdot \begin{pmatrix} ac \\ ad \\ bc \\ bd \end{pmatrix} = \begin{pmatrix} ac \\ ad \\ c_{11} \cdot bc + c_{12} \cdot bd \\ c_{21} \cdot bc + c_{22} \cdot bd \end{pmatrix} Hai phần tử đầu của vector kết quả không thay đổi, còn phần sau có "một phần" là :math:`\mathcal{U} \lvert y \rangle`. Khi viết lại kết quả dưới dạng qubit thì .. math:: ac \lvert 00 \rangle + ad \lvert 01 \rangle + (c_{11} \cdot bc + c_{12} \cdot bd) \lvert 10 \rangle + (c_{21} \cdot bc + c_{22} \cdot bd) \lvert 11 \rangle Ta có một số nhận xét sau đây. .. prf:remark:: :label: rmk-op-quan-control Nếu :math:`\lvert x \rangle \equiv \lvert 0 \rangle`, tức là :math:`a = 1, b = 0` thì tích trên tương ứng với .. math:: c \lvert 00 \rangle + d \lvert 01 \rangle + 0 \lvert 10 \rangle + 0 \lvert 11 \rangle = \lvert 0 \rangle \otimes (c \lvert 0 \rangle + d \lvert 1 \rangle) = \lvert x \rangle \otimes \lvert y \rangle. Nếu :math:`\lvert x \rangle \equiv \lvert 1 \rangle`, tức là :math:`a = 0, b = 1` thì tích trên tương ứng với .. math:: 0 \lvert 00 \rangle + 0 \lvert 01 \rangle + (c_{11} c + c_{12} d) \lvert 10 \rangle + (c_{21} c + c_{22} d) \lvert 11 \rangle = \lvert 1 \rangle \otimes ((c_{11} c + c_{12} d) \lvert 0 \rangle + (c_{21} c + c_{22} d) \lvert 1 \rangle) = \lvert 1 \rangle \otimes \mathcal{U} \lvert y \rangle = \lvert x \rangle \otimes \mathcal{U} \lvert y \rangle. Tổng kết lại, với :math:`x \in \{ 0, 1\}` thì - nếu :math:`x = 0` thì :math:`\lvert x \rangle \otimes \lvert y \rangle \to \lvert x \rangle \otimes \lvert y \rangle`. - nếu :math:`x = 1` thì :math:`\lvert x \rangle \otimes \lvert y \rangle \to \lvert x \rangle \otimes \mathcal{U} \lvert y \rangle`. Tùy vào :math:`x` là 0 hay 1 mà toán tử quantum :math:`\mathcal{U}` sẽ bị bỏ qua hoặc xem xét. Ở đây qubit :math:`\lvert x \rangle` đóng vai trò điều khiển nên đây được gọi là toán tử control. .. prf:definition:: Toán tử control CNOT, Control NOT :label: def-op-quan-control-not Toán tử quantum CNOT có ma trận là .. math:: \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{pmatrix} = \begin{pmatrix} I & \mathcal{O} \\ \mathcal{O} & \text{NOT} \end{pmatrix} Qubit :math:`\lvert x \rangle` với :math:`x \in \{ 0, 1 \}` đóng vai trò control cho qubit :math:`\lvert y \rangle`. Khi :math:`x \equiv 0` thì :math:`y` giữ nguyên, hay :math:`\lvert y \oplus 0 \rangle = \lvert y \oplus x \rangle`. Khi :math:`x \equiv 1` thì áp dụng cổng NOT bên trên, khi đó :math:`y` biến đổi thành :math:`y \oplus 1 = y \oplus x`.