欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Qiskit学习量子计算_4数学基础(上)

程序员文章站 2024-03-22 12:17:04
...

本节主要内容

  • 概述
  • 向量和向量空间
  • 矩阵和矩阵运算
  • 线性相关和基

概述

线性代数是量子计算的描述语言。因此,对线性代数所基于的基本数学概念有一个很好的理解,有助于得出量子计算中看到的许多令人惊奇和有趣的结构。本部分的目的是建立入门级线性代数知识的基础。

向量和向量空间

首先,将讨论量子计算中最重要的数学概念之一:矢量。

通常,向量 v\left| \text{v} \right\rangle 被定义为向量空间集合中的元素。一个更直观的定义是向量“是具有方向和幅度的数学量”。例如,考虑向量(35)\left( \begin{matrix} \text{3} \\ \text{5} \\ \end{matrix} \right) ,作图显示如下:

from matplotlib import pyplot as plt
import numpy as np
from qiskit import *
from qiskit.visualization import plot_bloch_vector

plt.figure()
ax = plt.gca()
ax.quiver([3], [5], angles='xy', scale_units='xy', scale=1)
ax.set_xlim([-1, 10])
ax.set_ylim([-1, 10])
plt.draw()
plt.show()

使用Qiskit学习量子计算_4数学基础(上)

在量子计算中,经常处理状态向量,可以使用Bloch球将其可视化。例如,代表量子系统状态的向量可能看起来像如下所示的箭头,被包围在Bloch球内部。所谓Bloch球的即“状态空间”,是状态向量可以“指向”的所有可能点:

plot_bloch_vector([1, 0, 0])

使用Qiskit学习量子计算_4数学基础(上)

上图中表示的状态是0|0\rangle1|1\rangle 的叠加态。bloch球上的状态允许旋转到球表面的任何位置,不同的位置代表不同的状态。

现在来看向量的正式定义,即向量是向量空间的元素。一个向量空间 VV 是域FF上一组向量的集合,且需要满足两个条件成立。

  • 两个向量的向量加仍在该集合中,即a, b  V|a\rangle, \ |b\rangle \ \in \ Va + b = c|a\rangle \ + \ |b\rangle \ = \ |c\rangle仍在VV
  • 标量乘法,对a  V|a\rangle \ \in \ V 和某个 n  Fn \ \in \ F,其乘积 nan|a\rangle仍在VV.

现在,我们将通过一个简单示例来阐明上述的定义。让我们证明在域 R\mathbb {R}上的集合R2\mathbb {R} ^ 2是一个向量空间。首先,


(x1y1) + (x2y2) = (x1 + x2y1 + y2)\begin{pmatrix} x_1 \\ y_1 \end{pmatrix} \ + \ \begin{pmatrix} x_2 \\ y_2 \end{pmatrix} \ = \ \begin{pmatrix} x_1 \ + \ x_2 \\ y_1 \ + \ y_2 \end{pmatrix}


因为两个实数之和仍为实数,所上述式子的运算结果仍然在R2\mathbb{R}^2中。同时


nv = (nxny)  V    n  Rn |v\rangle \ = \ \begin{pmatrix} nx \\ ny \end{pmatrix} \ \in \ V \ \ \ \ \forall n \ \in \ \mathbb{R}


因为两个实数之和积仍为实数,所上述式子的运算结果也在R2\mathbb{R}^2中。因此,在域R\mathbb {R}上的集合R2\mathbb {R} ^ 2是一个向量空间。

矩阵和矩阵运算

现在来看另一个重要的概念矩阵。


一个简单的矩阵示例如下:


M = (12315i01 + i74)M \ = \ \begin{pmatrix} 1 & -2 & 3 \\ 1 & 5i & 0 \\ 1 \ + \ i & 7 & -4 \end{pmatrix}


矩阵运算中,矩阵的乘法非常重要,也很简单,不会的话自己百度。这里给一个示例,


(2051)(3121) = ((2)(3)+(0)(2)(2)(1) + (0)(1)(5)(3)+(1)(2)(5)(1) + (1)(1)) = (62174)\begin{pmatrix} 2 & 0 \\ 5 & -1 \end{pmatrix} \begin{pmatrix} -3 & 1 \\ 2 & 1 \end{pmatrix} \ = \ \begin{pmatrix} (2)(-3) + (0)(2) & (2)(1) \ + \ (0)(1) \\ (5)(-3) + (-1)(2) & (5)(1) \ + \ (-1)(1) \end{pmatrix} \ = \ \begin{pmatrix} -6 & 2 \\ -17 & 4 \end{pmatrix}


在量子计算中,矩阵用来干什么?答案是用来对状态向量进行变换,如下所示:


v  v = Mv|v\rangle \ \rightarrow \ |v'\rangle \ = \ M |v\rangle

这个变换的运算规则就是上面提到的矩阵乘法,因为向量可以看作是只有一列的矩阵。实际上,量子计算就是在量子计算机中通过应用量子门序列操纵量子位。每个量子门可以表示为可作用于状态向量的矩阵。例如,常见的量子门是Pauli-X门,它由以下矩阵表示:


σx = (0110)\sigma_x \ = \ \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}


此门的作用类似于经典的NOT逻辑门。它将基本状态0|0 \rangle映射到1| 1 \rangle,将1| 1 \rangle映射到0| 0 \rangle(“翻转”状态)。将两个基本状态写为列向量:


0 = (10)       1 = (01)|0\rangle \ = \ \begin{pmatrix} 1 \\ 0 \end{pmatrix} \ \ \ \ \ \ \ |1\rangle \ = \ \begin{pmatrix} 0 \\ 1 \end{pmatrix}


当我们Pauli-X应用于上述每个基本向量时:


σx0 = (0110)(10) = ((0)(1) + (1)(0)(1)(1) + (0)(0)) = (01) = 1\sigma_x |0\rangle \ = \ \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \end{pmatrix} \ = \ \begin{pmatrix} (0)(1) \ + \ (1)(0) \\ (1)(1) \ + \ (0)(0) \end{pmatrix} \ = \ \begin{pmatrix} 0 \\ 1 \end{pmatrix} \ = \ |1\rangle


σx1 = (0110)(01) = ((0)(0) + (1)(1)(1)(0) + (0)(1)) = (10) = 0\sigma_x |1\rangle \ = \ \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \begin{pmatrix} 0 \\ 1 \end{pmatrix} \ = \ \begin{pmatrix} (0)(0) \ + \ (1)(1) \\ (1)(0) \ + \ (0)(1) \end{pmatrix} \ = \ \begin{pmatrix} 1 \\ 0 \end{pmatrix} \ = \ |0\rangle


在量子计算中,我们经常会遇到两种重要的矩阵类型:厄米矩阵和幺正矩阵。前者在量子力学的研究中更为重要,但在量子计算的研究中仍然有必要进行讨论。后者在量子力学和量子计算中都具有无与伦比的重要性。

厄米矩阵是一个与其共轭转置相等的矩阵(用\dagger符号表示)。这意味着翻转Hermitian矩阵的虚部符号,然后沿其主对角线作转置,将生成相等的矩阵。例如,量子计算中常用的Pauli-Y矩阵是Hermitian:

σy = (0ii0)  σy = (0(i)(i)0) = (0ii0) = σy\sigma_y \ = \ \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \ \Rightarrow \ \sigma_y^{\dagger} \ = \ \begin{pmatrix} 0 & -(i) \\ -(-i) & 0 \end{pmatrix} \ = \ \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \ = \ \sigma_y


幺正矩阵是逆矩阵等于其自身共轭转置的矩阵。矩阵AA的逆矩阵记为A1A ^ {-1}


A1A = AA1 = IA^{-1} A \ = \ A A^{-1} \ = \ \mathbb{I}


其中$ \mathbb {I} $是单位矩阵。单位矩阵沿主对角线(从左上到右下)全为11 ,在所有其他位置为00 。之所以称为单位矩阵,是因为它乘以任何其他矩阵仍为该矩阵本身。

当矩阵的大小大于2×22 \times 2时,逆矩阵的计算比较复杂。对于2×22 \times 2矩阵,其逆矩阵为:


A = (abcd)  A1 = 1det A(dbca),A \ = \ \begin{pmatrix} a & b \\ c & d \end{pmatrix} \ \Rightarrow \ A^{-1} \ = \ \frac{1}{\text{det} \ A} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix},


其中det A\text{det} \ A是矩阵的行列式。在2×22 \times 2的情况下,det A = adbc\text {det} \ A \ = \ ad - bc

在量子计算中,由于我们遇到的大多数矩阵都是幺正矩阵,因此我们可以通过采用共轭转置来简单给出逆矩阵。

让我们看一个基本的例子。Pauli-Y矩阵除了是厄米矩阵外,也是幺正矩阵(它等于其共轭转置,也等于其逆矩阵;因此,Pauli-Y矩阵是其自身的逆矩阵!)。我们可以验证此矩阵实际上是幺正的:


σy = (0ii0)     σy = (0ii0)  σyσy = ((0)(0)+(i)(i)(0)(i) + (i)(0)(i)(0) + (0)(i)(i)(i) + (0)(0)) = (1001) = I\sigma_y \ = \ \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \ \ \ \ \ \sigma_y^{\dagger} \ = \ \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \ \Rightarrow \ \sigma_y^{\dagger} \sigma_y \ = \ \begin{pmatrix} (0)(0) + (-i)(i) & (0)(-i) \ + \ (-i)(0) \\ (i)(0) \ + \ (0)(i) & (i)(-i) \ + \ (0)(0) \end{pmatrix} \ = \ \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} \ = \ \mathbb{I}


线性相关和基

考虑某个向量空间 VV。我们说某个空间VSV_SVV线性子空间,是指当VSV_S为向量空间VV的一个非空子集,VSV_S中向量的线性组合仍在VSV_S中,且零向量0VS0\in V_S

某个向量 v1, ..., vn|v_1\rangle, \ ..., \ |v_n\rangle 在域FF上的线性组合定义如下,其中fif_i 是域 FF中的元素


v = f1v1 + f2v2 + ... + fnvn = i fivi|v\rangle \ = \ f_1 |v_1\rangle \ + \ f_2 |v_2\rangle \ + \ ... \ + \ f_n |v_n\rangle \ = \ \displaystyle\sum_{i} \ f_i |v_i\rangle


某个向量集合v1, ..., vn|v_1\rangle, \ ..., \ |v_n\rangle线性相关的,是指存在一组系数 bi  Fb_i\in\;F 使得下式成立,这组系数中至少有一个非00元素,不妨设为bab_a

b1v1 + b2v2 + ... + bnvn = i bivi = 0,b_1 |v_1\rangle \ + \ b_2 |v_2\rangle \ + \ ... \ + \ b_n |v_n\rangle \ = \ \displaystyle\sum_{i} \ b_i |v_i\rangle \ = \ 0,


上式等价于该向量集合v1, ..., vn|v_1\rangle, \ ..., \ |v_n\rangle中的某个元素 va|v_a\rangle可以被表示为其他元素的线性组合


i bivi = bava + i, i  a bivi = 0  va = i, i  a bibavi = i, i  a civi\displaystyle\sum_{i} \ b_i |v_i\rangle \ = \ b_a |v_a\rangle \ + \ \displaystyle\sum_{i, \ i \ \neq \ a} \ b_i |v_i\rangle \ = \ 0 \ \Rightarrow \ |v_a\rangle \ = \ - \displaystyle\sum_{i, \ i \ \neq \ a} \ \frac{b_i}{b_a} |v_i\rangle \ = \ \displaystyle\sum_{i, \ i \ \neq \ a} \ c_i |v_i\rangle


现在来看一个具体示例,考虑在 R2\mathbb{R}^2上的两个二维向量, a = (10)|a\rangle \ = \ \begin{pmatrix} 1 \\ 0 \end{pmatrix}b = (20)|b\rangle \ = \ \begin{pmatrix} 2 \\ 0 \end{pmatrix}。在域 R\mathbb{R}上,这两个向量是线性相关的,如下:


2a  b = 02|a\rangle \ - \ |b\rangle \ = \ 0


相应的,某个向量集合v1, ..., vn|v_1\rangle, \ ..., \ |v_n\rangle线性无关的,是指不存在一组含有非零元的系数 bi  Fb_i\in\;F 使得下式成立


b1v1 + b2v2 + ... + bnvn = i bivi = 0,b_1 |v_1\rangle \ + \ b_2 |v_2\rangle \ + \ ... \ + \ b_n |v_n\rangle \ = \ \displaystyle\sum_{i} \ b_i |v_i\rangle \ = \ 0,


线性空间的一组是指张成该向量空间的最小线性无关组,这组基中的元素个数称为该线性空间的维数。这里的张成可以简单理解为该向量空间中的向量都可以被这组基线性表出。

基之所以很重要,因为它们允许我们“缩小”向量空间并仅用几个向量表示它们。通常可以将关于基的某些结论推广到整个向量空间。

在量子计算中,我们经常遇到的一组基是0, 1|0\rangle, \ |1\rangle 。我们可以将任何其他量子位状态写为这两个基向量的线性组合。例如,线性组合


0 + 12\frac{|0\rangle \ + \ |1\rangle}{\sqrt{2}}


这个线性组合就是量子计算中常提到的量子态叠加,在这里实际就是指代表之间的叠加 0|0\rangle1|1\rangle 基态的等概率叠加。

更多精彩,请????
使用Qiskit学习量子计算_4数学基础(上)