paddle_quantum.state.common

常见的量子态的实现。

to_state(data, num_qubits=None, backend=None, dtype=None)

根据给定的输入,生成对应的量子态。

参数:
  • data (Union[paddle.Tensor, np.ndarray, QCompute.QEnv]) – 量子态的数学解析形式。

  • num_qubits (int, optional) – 量子态所包含的量子比特数。默认为 None,会自动从 data 中推导出来。

  • backend (paddle_quantum.Backend, optional) – 指定量子态的后端实现形式。默认为 None,使用全局的默认后端。

  • dtype (str, optional) – 量子态的数据类型。默认为 None,使用全局的默认数据类型。

返回:

生成的量子态。

返回类型:

paddle_quantum.State

zero_state(num_qubits, backend=None, dtype=None)

生成零态。

参数:
  • num_qubits (int) – 量子态所包含的量子比特数。

  • backend (paddle_quantum.Backend, optional) – 指定量子态的后端实现形式。默认为 None,使用全局的默认后端。

  • dtype (str, optional) – 量子态的数据类型。默认为 None,使用全局的默认数据类型。

抛出:

NotImplementedError – 所指定的后端必须为量桨已实现的后端。

返回:

所生成的零态。

返回类型:

paddle_quantum.State

computational_basis(num_qubits, index, backend, dtype=None)

生成计算基态 |ei ,其中 |ei 的第 i 个元素为 1,其余元素为 0。

参数:
  • num_qubits (int) – 量子态所包含的量子比特数。

  • index (int) – 计算基态 |ei 的下标 i

  • backend (paddle_quantum.Backend, optional) – 指定量子态的后端实现形式。默认为 None,使用全局的默认后端。

  • dtype (str, optional) – 量子态的数据类型。默认为 None,使用全局的默认数据类型。

抛出:

NotImplementedError – 所指定的后端必须为量桨已实现的后端。

返回:

所生成的计算基态。

返回类型:

paddle_quantum.State

bell_state(num_qubits, backend=None)

生成贝尔态。

其数学表达形式为:

|ΦD=1Dj=0D1|jA|jB
参数:
  • num_qubits (int) – 量子态所包含的量子比特数。

  • backend (paddle_quantum.Backend, optional) – 指定量子态的后端实现形式。默认为 None,使用全局的默认后端。

抛出:

NotImplementedError – 所指定的后端必须为量桨已实现的后端。

返回:

生成的贝尔态。

返回类型:

paddle_quantum.State

bell_diagonal_state(prob)

生成对角贝尔态。

其数学表达形式为:

p1|Φ+Φ+|+p2|Ψ+Ψ+|+p3|ΦΦ|+p4|ΨΨ|
参数:

prob – 各个贝尔态的概率。

Type:

List[float]

抛出:
  • Exception – 当后端为态矢量时,所输入量子态应该为纯态。

  • NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

生成的量子态。

random_state(num_qubits, is_real=False, rank=None)

生成一个随机的量子态。

参数:
  • num_qubits (int) – 量子态所包含的量子比特数。

  • is_real (bool, optional) – 是否为实数。默认为 False,表示为复数。

  • rank (int, optional) – 密度矩阵的秩。默认为 None,表示使用满秩。

抛出:

NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

随机生成的一个量子态。

返回类型:

paddle_quantum.State

w_state(num_qubits)

生成一个 W-state。

参数:

num_qubits (int) – 量子态所包含的量子比特数。

抛出:

NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

生成的 W-state。

返回类型:

paddle_quantum.State

ghz_state(num_qubits)

生成一个 GHZ-state。

参数:

num_qubits (int) – 量子态所包含的量子比特数。

抛出:

NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

生成的 GHZ-state。

返回类型:

paddle_quantum.State

completely_mixed_computational(num_qubits)

生成一个完全混合态。

参数:

num_qubits (int) – 量子态所包含的量子比特数。

抛出:
  • Exception – 当后端为态矢量时,所输入量子态应该为纯态。

  • NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

生成的 GHZ-state。

返回类型:

paddle_quantum.State

r_state(prob)

生成一个 R-state。

其数学表达形式为:

p|Ψ+Ψ+|+(1p)|1111|
参数:

prob (float) – 控制生成 R-state 的参数,它应该在 [0,1] 区间内。

抛出:
  • Exception – 当后端为态矢量时,所输入量子态应该为纯态。

  • NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

生成的 R-state。

返回类型:

paddle_quantum.State

s_state(prob)

生成一个 S-state。

其数学表达形式为:

p|Φ+Φ+|+(1p)|0000|
参数:

prob (float) – 控制生成 S-state 的参数,它应该在 [0,1] 区间内。

抛出:
  • Exception – 当后端为态矢量时,所输入量子态应该为纯态。

  • NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

生成的 S-state。

返回类型:

paddle_quantum.State

isotropic_state(num_qubits, prob)

生成 isotropic state。

其数学表达形式为:

p(1Dj=0D1|jA|jB)+(1p)I2n
参数:
  • num_qubits (int) – 量子态所包含的量子比特数。

  • prob (float) – 控制生成 isotropic state 的参数,它应该在 [0,1] 区间内。

抛出:
  • Exception – 当后端为态矢量时,所输入量子态应该为纯态。

  • NotImplementedError – 所指定的后端必须为量桨已经实现的后端。

返回:

生成的 isotropic state。

返回类型:

paddle_quantum.State