qrisp.quantum_backtracking.QuantumBacktrackingTree.statevector_graph#
- QuantumBacktrackingTree.statevector_graph(return_root=False)[source]#
Returns a NetworkX Graph representing the quantum state of the backtracking tree. The nodes have an
amplitude
attribute, indicating the complex amplitude of that node.- Parameters:
- return_rootbool, optional
If set to
True
, this method will also return the root node. The default is False.
- Returns:
- networkx.DiGraph
A graph representing the statevector.
Examples
We initialize a backtracking tree, initialize a \(\ket{\phi}\) state and retrieve the statevector graph.
from qrisp import auto_uncompute, QuantumBool, QuantumFloat from qrisp.quantum_backtracking import QuantumBacktrackingTree @auto_uncompute def reject(tree): return QuantumBool() @auto_uncompute def accept(tree): return (tree.branch_qa[0] == 1) & (tree.branch_qa[1] == 1) & (tree.branch_qa[2] == 1)
Create backtracking tree and initialize \(\ket{\phi}\).
>>> tree = QuantumBacktrackingTree(3, QuantumFloat(1, name = "branch_qf*"), accept, reject) >>> tree.init_phi([1,1,1]) >>> statevector_graph = tree.statevector_graph() >>> print(statevector_graph.nodes()) [QBTNode(path = [], amplitude = (0.7071066+0j)), QBTNode(path = [0], amplitude = 0j), QBTNode(path = [1], amplitude = (-0.408248-4.4703484e-08j)), QBTNode(path = [0, 0], amplitude = 0j), QBTNode(path = [0, 1], amplitude = 0j), QBTNode(path = [1, 0], amplitude = 0j), QBTNode(path = [1, 1], amplitude = (0.4082481+1.4901161e-08j)), QBTNode(path = [0, 0, 0], amplitude = 0j), QBTNode(path = [0, 0, 1], amplitude = 0j), QBTNode(path = [0, 1, 0], amplitude = 0j), QBTNode(path = [0, 1, 1], amplitude = 0j), QBTNode(path = [1, 0, 0], amplitude = 0j), QBTNode(path = [1, 0, 1], amplitude = 0j), QBTNode(path = [1, 1, 0], amplitude = 0j), QBTNode(path = [1, 1, 1], amplitude = (-0.40824816+5.9604645e-08j))] >>> statevector_graph, root = tree.statevector_graph(return_root = True) >>> print(root) QBTNode(path = [], amplitude = (0.7071066+0j))