Skip to main content
IBM Quantum Platform

corte

qiskit_addon_utils.slicing

Métodos de utilidad para el corte de circuitos.

Para más información, consulte la guía práctica en la que se trata este submódulo.

combine_slices

combine_slices(slices, include_barriers=False)

GitHub

Combinar trozos de N-qubit de un circuito en un único circuito.

Parámetros

  • slices (Sequence[QuantumCircuit]) – El circuito N-qubit corta.
  • include_barriers (bool) – Si True, coloque barreras entre cada rebanada.

Devuelve

A QuantumCircuit con los cortes añadidos en orden secuencial.

Eleva

ValueError - Se definieron dos cortes de entrada en diferentes números de qubits.

Tipo de retorno

QuantumCircuit | Ninguno

slice_by_barriers

slice_by_barriers(circuit)

GitHub

Divida un QuantumCircuit en rodajas alrededor de las barreras de circuito completo.

Las barreras que no actúen sobre todos los qubits del circuito se tratarán como operaciones normales y se incluirán en los cortes. Las barreras que actúan sobre todos los qubits se interpretarán como ubicaciones de rebanada y no se incluirán en las rebanadas de salida.

Parámetros

circuit (QuantumCircuit) – El circuito a dividir.

Devuelve

Una secuencia de QuantumCircuit objetos, uno por cada trozo.

Tipo de retorno

lista [ QuantumCircuit ]

slice_by_coloring

slice_by_coloring(circuit, coloring)

GitHub

Divide un QuantumCircuit en rodajas utilizando la coloración de bordes proporcionada.

Las puertas de dos qubits que actúan sobre conexiones de qubits (aristas) del mismo color se agruparán de forma «codiciosa» en segmentos utilizando CollectOpColor. Esto se hará en orden ascendente según el valor de color (los valores enteros a los que se asigna cada arista).

Aviso

Tenga en cuenta que esto no significa que los cortes de color de valor bajo estén garantizados para estar más a la izquierda en su circuito. A continuación, un ejemplo para subrayarlo.

>>> from qiskit import QuantumCircuit

>>> circuit = QuantumCircuit(5)
>>> _ = circuit.cx(0, 1)
>>> _ = circuit.cx(3, 4)
>>> _ = circuit.cx(2, 3)

>>> circuit.draw()
q_0: ──■───────
     ┌─┴─┐
q_1: ┤ X ├─────
     └───┘
q_2: ───────■──
          ┌─┴─┐
q_3: ──■──┤ X ├
     ┌─┴─┐└───┘
q_4: ┤ X ├─────
     └───┘

>>> coloring = {(0, 1): 0, (2, 3): 0, (3, 4): 1}

>>> from qiskit_addon_utils.slicing import combine_slices, slice_by_coloring

>>> slices = slice_by_coloring(circuit, coloring)

# for illustration purposes, we are recombining the slices with barriers
>>> recombined = combine_slices(slices, include_barriers=True)
>>> recombined.draw()

q_0: ──────░───■──
           ░ ┌─┴─┐
q_1: ──────░─┤ X ├
           ░ └───┘
q_2: ──────░───■──
           ░ ┌─┴─┐
q_3: ──■───░─┤ X ├
     ┌─┴─┐ ░ └───┘
q_4: ┤ X ├─░──────
     └───┘ ░

Las puertas de un solo qubit se agruparán en una única sección mediante CollectOpSize.

Parámetros

  • circuit (QuantumCircuit) – El circuito a dividir.
  • coloring (dict[tuple[int, int], int]) – Un diccionario que asigna aristas (pares de enteros) a valores de color.

Devuelve

Una secuencia de QuantumCircuit objetos, uno por cada trozo.

Eleva

  • ValueError - La coloración del borde de entrada no es válida.
  • ValueError - No se ha podido asignar un color a la instrucción de circuito.

Tipo de retorno

lista [ QuantumCircuit ]

slice_by_depth

slice_by_depth(circuit, max_slice_depth)

GitHub

Divida una QuantumCircuit en rodajas en función de la profundidad.

Esta función transforma el circuito de entrada en un DAGCircuit y agrupa la secuencia de depth-1 capas de salida de layers() en capas de profundidad no superior a max_slice_depth. Esto se consigue componiendo capas en rodajas hasta alcanzar la profundidad máxima de rodaja y comenzando entonces una nueva rodaja con la siguiente capa. El corte final puede estar compuesto por menos de max_slice_depth capas.

Parámetros

  • circuit (QuantumCircuit) – El circuito a dividir.
  • max_slice_depth (int) – La profundidad máxima de un corte determinado.

Devuelve

Una secuencia de QuantumCircuit objetos, uno por cada trozo.

Tipo de retorno

lista [ QuantumCircuit ]

slice_by_gate_types

slice_by_gate_types(circuit)

GitHub

Divide una QuantumCircuit en depth-1 rebanadas de operaciones del mismo tipo.

Aviso

Nota: Los cortes adyacentes que no compartan qubits en común pueden ordenarse arbitrariamente.

Parámetros

circuit (QuantumCircuit) – El circuito a dividir.

Devuelve

Una secuencia de QuantumCircuit objetos, uno por cada trozo.

Tipo de retorno

lista [ QuantumCircuit ]

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.