Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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, [])