paddle_quantum.locc.locc_net

LOCCNet的功能实现。

class LoccNet(state, qubits_idx)

基类:paddle.fluid.dygraph.layers.Layer

用于设计 LOCC 协议,并进行训练或验证。

set_init_state(state, qubits_idx)

初始化 LoccNet 的 LoccState。

参数:
  • state (paddle_quantum.State) – 输入的量子态的矩阵形式。

  • qubits_idx (Iterable) – 输入的量子态对应的量子比特的编号,其形式为 (party_id, qubit_id)tuple ,或者由其组成的 list

抛出:

ValueError – 参与方的 ID 应为 strint

partial_state(state, qubits_idx, is_desired=True)

得到指定的量子比特的量子态。

参数:
  • state (Union[List[LoccState], LoccState]) – 输入的 LOCC 态。

  • qubits_idx (Iterable) – 指定的量子比特的编号,其形式为 (party_id, qubit_id)tuple ,或者由其组成的 list

  • is_desired (bool, optional) – 若为 True,返回指定的量子比特的量子态;若为 False,返回剩下的量子比特的量子态。 默认为 True

抛出:
  • ValueError – 参与方的 ID 应为 strint

  • ValueErrorstate 应为 LoccState 或者由其组成的 list

返回:

得到部分量子态后的 LOCC 态。

返回类型:

Union[List[LoccState], LoccState]

reset_state(status, state, which_qubits)

将指定的量子比特重置为输入的量子态。

参数:
  • status (Union[List[LoccState], LoccState]) – 重置前的 LOCC 态。

  • state (paddle_quantum.State) – 输入的量子态。

  • which_qubits (Iterable) – 指定的量子比特的编号,其形式为 (party_id, qubit_id)tuple ,或者由其组成的 list

抛出:
  • ValueError – 参与方的 ID 应为 strint

  • ValueErrorstate 应为 LoccState 或者由其组成的 list

返回:

重置部分量子比特后的 LOCC 态。

返回类型:

Union[List[LoccState], LoccState]

add_new_party(qubits_number, party_name=None)

添加一个新的 LOCC 的参与方。

参数:
  • qubits_number (int) – 该参与方的量子比特个数。

  • party_name (str, optional) – 该参与方的名字,默认为 None

备注

可以使用字符串或者数字对参与方进行索引。如果想使用字符串索引,需要每次指定 party_name; 如果想使用数字索引,则不需要指定 party_name,其索引数字会从 0 开始依次增长。

抛出:

ValueErrorparty_name 应为 str

返回:

该参与方的 ID。

返回类型:

Union[int, str]

create_ansatz(party_id)

创建一个新的本地电路模板。

参数:

party_id (Union[int, str]) – 参与方的 ID。

抛出:

ValueError – 参与方的 ID 应为 strint

返回:

创建的本地电路模板。

返回类型:

LoccAnsatz

measure(status, which_qubits, results_desired, theta=None)

对 LOCC 态进行 0-1 测量或含参测量。

参数:
  • status (Union[List[LoccState], LoccState]) – 待测量的 LOCC 态。

  • which_qubits (Iterable) – 测量的量子比特的编号。

  • results_desired (Union[List[str], str]) – 期望得到的测量结果。

  • theta (paddle.Tensor, optional) – 测量运算的参数,默认为 None,表示 0-1 测量。

抛出:
  • ValueErrorresults_desired 应为 str 或者由其组成的 list

  • ValueError – 参与方的 ID 应为 strint

  • ValueErrorstatus 应为 LoccState 或者由其组成的 list

返回:

测量后的 LOCC 态。

返回类型:

Union[List[LoccState], LoccState]

get_num_qubits()

得到该 LoccNet 的量子比特个数。

返回:

该 LoccNet 的量子比特个数。

返回类型:

int