原文: https://pythonspot.com/an-introduction-to-building-quantum-computing-applications-with-python/

因此,我们想使用 Python 创建一个量子应用程序,但是由于我们不拥有任何量子计算机,因此我们首先需要拥有一个模拟器。 模拟将不会具有与实际量子计算机相同的性能,但是我们将能够运行应用程序。 我们可以从以下三个模拟器中进行选择:PyQuQuTipQitensor。 我们决定选择 QuTip,因为它具有非常大的代码库并且具有最新更改。自 2010 年以来,PyQu 尚未更新,而 Qtensor 至今已有约一年的时间。

安装

在本教程中,我们使用 Unix 计算机,但是使用其他任何操作系统都应该可以。 使用以下方法安装:

  1. sudo add-apt-repository ppa:jrjohansson/qutip-releases
  2. sudo apt-get update
  3. sudo apt-get install python-qutip

然后,我们从命令行启动 Python 并键入下面列出的命令(>>>)。

  1. $ python
  2. Python 2.7.6 (default, Mar 22 2014, 22:59:38)
  3. [GCC 4.8.2] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> from qutip import *
  6. >>> about()
  7. QuTiP: Quantum Toolbox in Python
  8. Copyright (c) 2011 and later.
  9. Paul D. Nation & Robert J. Johansson
  10. QuTiP Version: 3.1.0
  11. Numpy Version: 1.8.2
  12. Scipy Version: 0.13.3
  13. Cython Version: 0.20.1post0
  14. Matplotlib Version: 1.3.1
  15. Fortran mcsolver: True
  16. scikits.umfpack: False
  17. Python Version: 2.7.6
  18. Platform Info: Linux (i686)
  19. Installation path: /usr/lib/python2.7/dist-packages/qutip

这表明 Qutip 已正确安装。

量子数据结构

在量子系统中,我们需要一个能够封装量子运算符和 ket/bra 向量的属性的数据结构,为此我们使用Qobj数据结构。 换句话说,为了有效地模拟量子应用,我们需要使用适当的数据结构。 考虑下面的示例:

  1. #!/usr/bin/env python
  2. from qutip import *
  3. from scipy import *
  4. r = rand(4, 4)
  5. print Qobj(r)

并执行:

  1. python quantum.py

这将输出量子对象:

  1. Quantum object: dims = [[4], [4]], shape = [4, 4], type = oper, isherm = False
  2. Qobj data =
  3. [[ 0.25529374 0.75548592 0.85680266 0.1438253
  4. [ 0.75070138 0.68628867 0.97435624 0.77396516]
  5. [ 0.69819458 0.81714756 0.2604015 0.69051901]
  6. [ 0.0898242 0.05292657 0.49134431 0.4433644 ]]

如果要自己指定用户输入,则可以使用:

  1. #!/usr/bin/env python
  2. from qutip import *
  3. from scipy import *
  4. x = array([[1],[2],[3],[4],[5]])
  5. q = Qobj(x)
  6. print q

这个量子对象将简单地保存您的用户给定的数据:

  1. Quantum object: dims = [[5], [1]], shape = [5, 1], type = ket
  2. Qobj data =
  3. [[ 1.]
  4. [ 2.]
  5. [ 3.]
  6. [ 4.]
  7. [ 5.]]

量子态和运算符

量子系统不是简单的两级系统,它具有多个状态。 QuTip 包括此处列出的一些预定义状态和量子运算符

量子位和运算符

我们创建一个量子位来保存数据。 量子位是经典位的量子模拟。 与传统位不同,量子位可以同时处于两种状态的叠加,这是量子计算的基础。 下面的代码将创建一个量子位:

  1. #!/usr/bin/env python
  2. from qutip import *
  3. from scipy import *
  4. spin = basis(2, 0)
  5. print spin

现在,您可以在量子位上应用量子系统运算符:

  1. #!/usr/bin/env python
  2. from qutip import *
  3. from scipy import *
  4. spin = basis(2, 0)
  5. print sigmam() * spin
  6. print sigmap() * spin

组合量子位

为了描述两个耦合量子位的状态,我们需要为每个系统组件获取状态向量的张量积。 让我们尝试一下:

  1. #!/usr/bin/env python
  2. from qutip import *
  3. from scipy import *
  4. q1 = basis(2, 0)
  5. q2 = basis(2,0)
  6. print q1
  7. print q2
  8. print tensor(q1,q2)

我们将得到的输出是:

  1. Quantum object: dims = [[2], [1]], shape = [2, 1], type = ket
  2. Qobj data =
  3. [[ 1.]
  4. [ 0.]]
  5. Quantum object: dims = [[2], [1]], shape = [2, 1], type = ket
  6. Qobj data =
  7. [[ 1.]
  8. [ 0.]]
  9. Quantum object: dims = [[2, 2], [1, 1]], shape = [4, 1], type = ket
  10. Qobj data =
  11. [[ 1.]
  12. [ 0.]
  13. [ 0.]
  14. [ 0.]]

接下来是什么?

我们使用此简单介绍构建了一些非常简单的量子应用程序。 也许您想创建一个实际有用的应用程序,如果可以的话,您可以研究更多有关量子计算的知识,并在 http://qutip.org/docs/2.2.0/index.html 上完成本教程。