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 应为
str
或int
。
- partial_state(state, qubits_idx, is_desired=True)
得到指定的量子比特的量子态。
- 参数:
- 抛出:
ValueError – 参与方的 ID 应为
str
或int
。ValueError –
state
应为LoccState
或者由其组成的list
。
- 返回:
得到部分量子态后的 LOCC 态。
- 返回类型:
- reset_state(status, state, which_qubits)
将指定的量子比特重置为输入的量子态。
- 参数:
- 抛出:
ValueError – 参与方的 ID 应为
str
或int
。ValueError –
state
应为LoccState
或者由其组成的list
。
- 返回:
重置部分量子比特后的 LOCC 态。
- 返回类型:
- add_new_party(qubits_number, party_name=None)
添加一个新的 LOCC 的参与方。
- 参数:
qubits_number (int) – 该参与方的量子比特个数。
party_name (str, optional) – 该参与方的名字,默认为
None
。
备注
可以使用字符串或者数字对参与方进行索引。如果想使用字符串索引,需要每次指定
party_name
; 如果想使用数字索引,则不需要指定party_name
,其索引数字会从 0 开始依次增长。- 抛出:
ValueError –
party_name
应为str
。- 返回:
该参与方的 ID。
- 返回类型:
Union[int, str]
- create_ansatz(party_id)
创建一个新的本地电路模板。
- 参数:
party_id (Union[int, str]) – 参与方的 ID。
- 抛出:
ValueError – 参与方的 ID 应为
str
或int
。- 返回:
创建的本地电路模板。
- 返回类型:
- measure(status, which_qubits, results_desired, theta=None)
对 LOCC 态进行 0-1 测量或含参测量。
- 参数:
- 抛出:
ValueError –
results_desired
应为str
或者由其组成的list
。ValueError – 参与方的 ID 应为
str
或int
。ValueError –
status
应为LoccState
或者由其组成的list
。
- 返回:
测量后的 LOCC 态。
- 返回类型:
- get_num_qubits()
得到该 LoccNet 的量子比特个数。
- 返回:
该 LoccNet 的量子比特个数。
- 返回类型:
int