# 用 Python 构建量子计算应用程序简介

> 原文： [https://pythonspot.com/an-introduction-to-building-quantum-computing-applications-with-python/](https://pythonspot.com/an-introduction-to-building-quantum-computing-applications-with-python/)

因此，我们想使用 Python 创建一个量子应用程序，但是由于我们不拥有任何量子计算机，因此我们首先需要拥有一个模拟器。 模拟将不会具有与实际量子计算机相同的性能，但是我们将能够运行应用程序。 我们可以从以下三个模拟器中进行选择： [PyQu](https://code.google.com/p/pyqu/) ， [QuTip](https://code.google.com/p/qutip/) 和 [Qitensor](http://www.stahlke.org/dan/qitensor/) 。 我们决定选择 QuTip，因为它具有非常大的代码库并且具有最新更改。 自 2010 年以来，PyQu 尚未更新，而 Qtensor 至今已有约一年的时间。

## 安装

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

```py
sudo add-apt-repository ppa:jrjohansson/qutip-releases
sudo apt-get update
sudo apt-get install python-qutip
```

We then start Python from the command line and type the commands listed below ( >>> ).

```py
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:38) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; from qutip import *
&gt;&gt;&gt; about()

QuTiP: Quantum Toolbox in Python
Copyright (c) 2011 and later.
Paul D. Nation &amp; Robert J. Johansson

QuTiP Version:      3.1.0
Numpy Version:      1.8.2
Scipy Version:      0.13.3
Cython Version:     0.20.1post0
Matplotlib Version: 1.3.1
Fortran mcsolver:   True
scikits.umfpack:    False
Python Version:     2.7.6
Platform Info:      Linux (i686)
Installation path:  /usr/lib/python2.7/dist-packages/qutip

```

这表明 Qutip 已正确安装。

## 量子数据结构

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

```py
#!/usr/bin/env python
from qutip import *
from scipy import *

r = rand(4, 4)
print Qobj(r)

```

并执行：

```py
python quantum.py

```

这将输出量子对象：

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

```

如果要自己指定用户输入，则可以使用：

```py
#!/usr/bin/env python
from qutip import *
from scipy import *

x = array([[1],[2],[3],[4],[5]])
q = Qobj(x)
print q

```

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

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

```

## 量子态和算符

量子系统不是简单的两级系统，它具有多个状态。 QuTip 包括此处列出的[一些预定义状态和量子运算符。](http://qutip.org/docs/2.2.0/guide/guide-basics.html#first-things-first)

## Qubit 和运算符

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

```py
#!/usr/bin/env python
from qutip import *
from scipy import *

spin = basis(2, 0)
print spin

```

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

```py
#!/usr/bin/env python
from qutip import *
from scipy import *

spin = basis(2, 0)
print sigmam() * spin
print sigmap() * spin

```

## 组合量子位

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

```py
#!/usr/bin/env python
from qutip import *
from scipy import *

q1 = basis(2, 0)
q2 = basis(2,0)

print q1
print q2
print tensor(q1,q2)

```

我们将得到的输出是：

```py
Quantum object: dims = [[2], [1]], shape = [2, 1], type = ket
Qobj data =
[[ 1.]
 [ 0.]]
Quantum object: dims = [[2], [1]], shape = [2, 1], type = ket
Qobj data =
[[ 1.]
 [ 0.]]
Quantum object: dims = [[2, 2], [1, 1]], shape = [4, 1], type = ket
Qobj data =
[[ 1.]
 [ 0.]
 [ 0.]
 [ 0.]]

```

## 接下来是什么？

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