paddle_quantum.locc.locc_ansatz

LOCC的电路的功能实现。

class LoccAnsatz(party)

基类:paddle_quantum.ansatz.circuit.Circuit

继承 Circuit 类,目的是建立在 LOCC 任务上的电路模板。

参数:

party (LoccParty) – 参与方。

append(operator)

增加一个 Operator 类。

参数:

operator (Union[Iterable, paddle_quantum.Operator]) – 一个(附带名字的)Operator 类。

extend(operators)

增加一组 Operator 类。

参数:

operators (List[Operator]) – 一组 Operator 类。

insert(index, operator)

在指定位置插入一个 Operator 类。

参数:
  • index (int) – 插入的位置。

  • operator (Operator) – 一个 Operator。

pop(operator)

在指定 Operator 下删除一个 Operator 类。

参数:

operator (Operator) – 指定删除的 Operator。

forward(state)

前向传播输入数据。

参数:

state (LoccState) – 输入数据。

返回:

输出数据。

返回类型:

LoccState

h(qubits_idx='full', num_qubits=None, depth=1)

添加单量子比特 Hadamard 门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

s(qubits_idx='full', num_qubits=None, depth=1)

添加单量子比特 S 门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

t(qubits_idx='full', num_qubits=None, depth=1)

添加单量子比特 T 门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

x(qubits_idx='full', num_qubits=None, depth=1)

添加单量子比特 X 门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

y(qubits_idx='full', num_qubits=None, depth=1)

添加单量子比特 Y 门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

z(qubits_idx='full', num_qubits=None, depth=1)

添加单量子比特 Z 门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

p(qubits_idx='full', num_qubits=None, depth=1, param=None, param_sharing=False)

添加单量子比特 P 门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

rx(qubits_idx='full', num_qubits=None, depth=1, param=None, param_sharing=False)

添加关于 x 轴的单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

ry(qubits_idx='full', num_qubits=None, depth=1, param=None, param_sharing=False)

添加关于 y 轴的单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

rz(qubits_idx='full', num_qubits=None, depth=1, param=None, param_sharing=False)

添加关于 z 轴的单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

u3(qubits_idx='full', num_qubits=None, depth=1, param=None, param_sharing=False)

添加单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, int, str], optional) – 作用在的量子比特的编号,默认为 'full'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

cnot(qubits_idx='cycle', num_qubits=None, depth=1)

添加 CNOT 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

cx(qubits_idx='cycle', num_qubits=None, depth=1)

同 cnot。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

cy(qubits_idx='cycle', num_qubits=None, depth=1)

添加受控 Y 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

cz(qubits_idx='cycle', num_qubits=None, depth=1)

添加受控 Z 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

swap(qubits_idx='cycle', num_qubits=None, depth=1)

添加 SWAP 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

cp(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加受控 P 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

crx(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加关于 x 轴的受控单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

cry(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加关于 y 轴的受控单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

crz(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加关于 z 轴的受控单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

cu(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加受控单量子比特旋转门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

rxx(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加 RXX 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

ryy(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加 RYY 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

rzz(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加 RZZ 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

ms(qubits_idx='cycle', num_qubits=None, depth=1)

添加 Mølmer-Sørensen (MS) 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

cswap(qubits_idx='cycle', num_qubits=None, depth=1)

添加 CSWAP (Fredkin) 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

ccx(qubits_idx='cycle', num_qubits=None, depth=1)

添加 CCX 门。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

universal_two_qubits(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加两量子比特通用门,该通用门需要 15 个参数。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

universal_three_qubits(qubits_idx='cycle', num_qubits=None, depth=1, param=None, param_sharing=False)

添加三量子比特通用门,该通用门需要 81 个参数。

参数:
  • qubits_idx (Union[Iterable, str], optional) – 作用在的量子比特的编号,默认为 'cycle'

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

  • param (Union[paddle.Tensor, float], optional) – 量子门参数,默认为 None

  • param_sharing (bool, optional) – 同一层中的量子门是否共享参数,默认为 False

oracle(oracle, qubits_idx, num_qubits=None, depth=1)

添加一个 oracle 门。

参数:
  • oracle (paddle.tensor) – 要实现的 oracle。

  • qubits_idx (Union[Iterable[Iterable[int]], Iterable[int], int]) – 作用在的量子比特的编号。

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1

control_oracle(oracle, qubits_idx, num_qubits=None, depth=1)

添加一个受控 oracle 门。

参数:
  • oracle (paddle.tensor) – 要实现的 oracle。

  • qubits_idx (Union[Iterable[Iterable[int]], Iterable[int], int]) – 作用在的量子比特的编号。

  • num_qubits (int, optional) – 总的量子比特个数,默认为 None

  • depth (int, optional) – 层数,默认为 1