def test_dag_depth_empty(self): """Empty circuit DAG is zero depth """ q = QuantumRegister(5, 'q') qc = QuantumCircuit(q) dag = circuit_to_dagdependency(qc) self.assertEqual(dag.depth(), 0)
def test_add_edge(self): """Test that add_edge(), get_edges(), get_all_edges(), get_in_edges() and get_out_edges(). """ circuit = QuantumCircuit(self.qreg, self.creg) circuit.h(self.qreg[0]) circuit.x(self.qreg[1]) circuit.cx(self.qreg[1], self.qreg[0]) circuit.measure(self.qreg[0], self.creg[0]) self.dag = circuit_to_dagdependency(circuit) second_edge = self.dag.get_edges(1, 2) self.assertEqual(second_edge[0]['commute'], False) all_edges = self.dag.get_all_edges() self.assertEqual(len(all_edges), 3) for edges in all_edges: self.assertEqual(edges[2]['commute'], False) in_edges = self.dag.get_in_edges(2) self.assertEqual(len(list(in_edges)), 2) out_edges = self.dag.get_out_edges(2) self.assertEqual(len(list(out_edges)), 1)
def setUp(self): # ┌───┐ ┌───┐ # q0_0: ┤ H ├────────────────┤ X ├────────── # └───┘ └─┬─┘ ┌───┐ # q0_1: ───────────────────────┼───────┤ H ├ # ┌───┐ │ ┌───┐└─┬─┘ # q0_2: ──■───────┤ H ├────────┼──┤ T ├──■── # ┌─┴─┐┌────┴───┴─────┐ │ └───┘ # q0_3: ┤ X ├┤ U(0,0.1,0.2) ├──┼──────────── # └───┘└──────────────┘ │ # q1_0: ───────────────────────■──────────── # │ # q1_1: ───────────────────────■──────────── super().setUp() qr1 = QuantumRegister(4) qr2 = QuantumRegister(2) circ = QuantumCircuit(qr1, qr2) circ.h(qr1[0]) circ.cx(qr1[2], qr1[3]) circ.h(qr1[2]) circ.t(qr1[2]) circ.ch(qr1[2], qr1[1]) circ.u(0.0, 0.1, 0.2, qr1[3]) circ.ccx(qr2[0], qr2[1], qr1[0]) self.dag = circuit_to_dagdependency(circ)
def setUp(self): qr1 = QuantumRegister(4) qr2 = QuantumRegister(2) circ = QuantumCircuit(qr1, qr2) circ.h(qr1[0]) circ.cx(qr1[2], qr1[3]) circ.h(qr1[2]) circ.t(qr1[2]) circ.ch(qr1[2], qr1[1]) circ.u2(0.1, 0.2, qr1[3]) circ.ccx(qr2[0], qr2[1], qr1[0]) self.dag = circuit_to_dagdependency(circ)
def test_successors_predecessors(self): """Test the method direct_successors.""" circuit = QuantumCircuit(self.qreg, self.creg) circuit.h(self.qreg[0]) circuit.x(self.qreg[0]) circuit.h(self.qreg[0]) circuit.x(self.qreg[1]) circuit.h(self.qreg[0]) circuit.measure(self.qreg[0], self.creg[0]) self.dag = circuit_to_dagdependency(circuit) dir_successors_second = self.dag.direct_successors(1) self.assertEqual(dir_successors_second, [2, 4]) dir_successors_fourth = self.dag.direct_successors(3) self.assertEqual(dir_successors_fourth, []) successors_second = self.dag.successors(1) self.assertEqual(successors_second, [2, 4, 5]) successors_fourth = self.dag.successors(3) self.assertEqual(successors_fourth, []) dir_predecessors_sixth = self.dag.direct_predecessors(5) self.assertEqual(dir_predecessors_sixth, [2, 4]) dir_predecessors_fourth = self.dag.direct_predecessors(3) self.assertEqual(dir_predecessors_fourth, []) predecessors_sixth = self.dag.predecessors(5) self.assertEqual(predecessors_sixth, [0, 1, 2, 4]) predecessors_fourth = self.dag.predecessors(3) self.assertEqual(predecessors_fourth, [])