Entanglement Purification¶
Code for BBPSSW entanglement purification.
This module defines code to support the BBPSSW protocol for entanglement purification. Success results are pre-determined based on network parameters. Also defined is the message type used by the BBPSSW code.
- class src.entanglement_management.purification.BBPSSW(own: Node, name: str, kept_memo: Memory, meas_memo: Memory)¶
Purification protocol instance.
This class provides an implementation of the BBPSSW purification protocol. It should be instantiated on a quantum router node.
- Variables:
BBPSSW.circuit (Circuit): circuit that purifies entangled memories.
- own¶
node that protocol instance is attached to.
- Type:
- name¶
label for protocol instance.
- Type:
str
- kept_memo¶
memory to be purified by the protocol (should already be entangled).
- meas_memo¶
memory to measure and discart (should already be entangled).
- meas_res¶
measurement result from circuit.
- Type:
int
- remote_node_name¶
name of other node.
- Type:
str
- remote_protocol_name¶
name of other protocol
- Type:
str
- remote_memories¶
name of remote memories
- Type:
List[str]
- static improved_fidelity(F: float) float ¶
Method to calculate fidelity after purification.
Formula comes from Dur and Briegel (2007) formula (18) page 14.
- Parameters:
F (float) – fidelity of entanglement.
- is_ready() bool ¶
Method to check if protocol is ready to start (abstract).
- Returns:
if protocol is ready or not.
- Return type:
bool
- memory_expire(memory: Memory) None ¶
Method to receive memory expiration events.
- Parameters:
memory (Memory) – memory that has expired.
- Side Effects:
Will call update_resource_manager method.
- received_message(src: str, msg: BBPSSWMessage) None ¶
Method to receive messages.
- Parameters:
src (str) – name of node that sent the message.
msg (BBPSSW message) – message received.
- Side Effects:
Will call update_resource_manager method.
- release() None ¶
Method to release attached memories.
- set_others(protocol: str, node: str, memories: List[str]) None ¶
Method to set other entanglement protocol instance.
- Parameters:
protocol (str) – other protocol name.
node (str) – other node name.
memories (List[str]) – the list of memory names used on other node.
- start() None ¶
Method to start entanglement purification.
Run the circuit below on two pairs of entangled memories on both sides of protocol.
o ——-(x)———-| M | . | . o —-.—————- . . . . . o . o
The overall circuit is shown below:
o ——-(x)———-| M | . | . o —-.—————- . . . . . o —-.—————- . | o ——-(x)———-| M |
- Side Effects:
May update parameters of kept memory. Will send message to other protocol instance.
- class src.entanglement_management.purification.BBPSSWMessage(msg_type: BBPSSWMsgType, receiver: str, **kwargs)¶
Message used by entanglement purification protocols.
This message contains all information passed between purification protocol instances.
- msg_type¶
defines the message type.
- Type:
- receiver¶
name of destination protocol instance.
- Type:
str
- class src.entanglement_management.purification.BBPSSWMsgType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)¶
Defines possible message types for entanglement purification