CZGate
class qiskit.circuit.library.CZGate(*args, _force_mutable=False, **kwargs)
Bases: SingletonControlledGate
Puerta Z controlada.
Se trata de una puerta Clifford y simétrica.
Puede aplicarse QuantumCircuit con el método cz() método.
Símbolo del circuito:
q_0: ─■─
│
q_1: ─■─Representación matricial:
En la base computacional, esta puerta invierte la fase del qubit objetivo si el qubit de control está en el estado .
Crear nueva puerta CZ.
Atributos
base_class
Obtiene la clase base de esta instrucción. Está garantizado que se encuentra en el árbol de herencia de self.
La "clase base" de una instrucción es la clase más baja en su árbol de herencia con la que el objeto debe considerarse totalmente compatible para aplicaciones de circuito _all_. Por lo general, esto significa que la subclase se define únicamente para ofrecer algún tipo de comodidad al programador con respecto a la clase base, y la clase base es la "verdadera" clase desde el punto de vista del comportamiento. En particular, no debe anular base_class si está definiendo una versión personalizada de una instrucción que será implementada de forma diferente por el hardware, como una estrategia de medida alternativa, o una versión de una puerta parametrizada con un conjunto particular de parámetros con el propósito de distinguirla en un archivo Target de la puerta parametrizada completa.
Esto suele ser exactamente equivalente a type(obj), excepto en el caso de instancias únicas de instrucciones de biblioteca estándar. Estas instancias singleton son subclases especiales de su clase base, y esta propiedad devolverá esa base. Por ejemplo:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
TrueEn general, no se debe confiar en la clase precisa de una instrucción; dentro de un circuito determinado, se espera que Instruction.name sea un discriminador más adecuado en la mayoría de las situaciones.
ctrl_state
Devuelve el estado de control de la puerta como un entero decimal.
decompositions
Obtenga las descomposiciones de la instrucción de la SessionEquivalenceLibrary.
definition
Definición de retorno en términos de otras puertas básicas. Si la puerta tiene controles abiertos, como se determina a partir de ctrl_state, la definición devuelta se conjuga con X sin cambiar la interna _definition.
label
Etiqueta de instrucciones de devolución
mutable
Esta instancia es una instancia única mutable o no.
Si este atributo es False la instancia de la puerta es un singleton compartido y no es mutable.
name
Obtener el nombre de la puerta. Si la puerta tiene controles abiertos, el nombre de la puerta pasará a ser:
<original_name_o<ctrl_state>
donde <original_name> es el nombre de la puerta para el caso por defecto de qubits de control cerrados y <ctrl_state> es el valor entero del estado de control para la puerta.
num_clbits
Devuelve el número de clbits.
num_ctrl_qubits
Obtener el número de qubits de control.
Devuelve
Número de qubits de control de la puerta.
Tipo de retorno
num_qubits
Devuelve el número de qubits.
params
Obtener parámetros de base_gate.
Devuelve
Lista de parámetros de la puerta.
Tipo de retorno
Eleva
CircuitError - La puerta controlada no define una puerta base
Métodos
add_decomposition
add_decomposition(decomposition)
Añade una descomposición de la instrucción a la SessionEquivalenceLibrary.
broadcast_arguments
broadcast_arguments(qargs, cargs)
Validación y tratamiento de los argumentos y su relación.
Por ejemplo, cx([q[0],q[1]], q[2]) significa cx(q[0], q[2]); cx(q[1], q[2]). Este método devuelve los argumentos en la agrupación correcta. En el ejemplo dado:
in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []Las normas generales de difusión son:
Si len(qargs) == 1:
[q[0], q[1]] -> [q[0]],[q[1]]Si len(qargs) == 2:
[[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]] [[q[0]], [r[0], r[1]]] -> [q[0], r[0]], [q[0], r[1]] [[q[0], q[1]], [r[0]]] -> [q[0], r[0]], [q[1], r[0]]Si len(qargs) >= 3:
[q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
Parámetros
- qargs (list) – Lista de argumentos de bits cuánticos.
- cargs (list) – Lista de argumentos clásicos de bits.
Devuelve
Una tupla con argumentos únicos.
Eleva
CircuitError - Si la entrada no es válida. Por ejemplo, el número de argumentos no coincide con las expectativas de la puerta.
Tipo de retorno
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
Devuelve una versión controlada de la puerta CZ.
Para un único qubit de control, la puerta controlada se implementa como un CCZGate, independientemente del valor de annotated.
Para dos o más qubits de control, la puerta controlada se implementa como ControlledGate cuando annotated es False, y como AnnotatedOperation cuando annotated es True.
Parámetros
- num_ctrl_qubits (int) – Número de controles que se van a añadir. El valor predeterminado es
1. - label (str | None) – Etiqueta de puerta opcional. El valor predeterminado es
None. Se ignora si la puerta controlada se implementa como una operación anotada. - ctrl_state (int |str | None) – El estado de control de la puerta, especificado como un número entero o una cadena de bits (por ejemplo,
"110"). SiNone, se establece por defecto en el estado «todos2**num_ctrl_qubits - 1unos». - annotated (bool | None) – Indica si la puerta controlada debe implementarse como una puerta controlada o como una operación anotada. Si
None, se trata comoFalse.
Devuelve
Una versión controlada de esta puerta.
copy
copy(name=None)
Copia de la instrucción.
Parámetros
name (str) – nombre que se dará al circuito copiado, si None entonces el nombre permanece igual.
Devuelve
una copia de la instrucción actual, con el nombre actualizado si se proporcionó
Tipo de retorno
inverse
inverse(annotated=False)
Devuelve la puerta CZ invertida (ella misma).
Parámetros
annotated (bool) – cuando se establece en True, esto se utiliza normalmente para devolver un AnnotatedOperation con un modificador inverso en lugar de un Gate. Sin embargo, para esta clase se ignora este argumento ya que esta puerta es autoinversible.
Devuelve
puerta inversa (autoinversa).
Tipo de retorno
is_parameterized
power
power(exponent, annotated=False)
Eleva esta puerta al poder de exponent.
Implementado como puerta unitaria (ref. UnitaryGate) o como una operación anotada (ref. AnnotatedOperation). En el caso de varias puertas estándar, como por ejemplo RXGatecuando la potencia de una puerta puede expresarse en términos de otra puerta estándar que se devuelve directamente.
Parámetros
- exponent (float) – el poder de elevar la puerta a
- annotated (bool) – indica si la puerta de alimentación puede implementarse como una operación anotada. En el caso de varias puertas estándar, como por ejemplo
RXGateeste argumento se ignora cuando la potencia de una puerta puede expresarse en términos de otra puerta estándar.
Devuelve
Una operación de aplicación gate^exponent
Eleva
CircuitError - Si la puerta no es unitaria
repeat
repeat(n)
Crea una instrucción que self se repite veces.
Parámetros
n (int) – Número de veces que se repite la instrucción
Devuelve
Contiene la definición.
Tipo de retorno
Eleva
CircuitError - Si n < 1.
reverse_ops
reverse_ops()
Para una instrucción compuesta, invierta el orden de las subinstrucciones.
Esto se hace invirtiendo recursivamente todas las subinstrucciones. No invierte ninguna puerta.
Devuelve
una nueva instrucción con
subinstrucciones invertidas.
Tipo de retorno
soft_compare
soft_compare(other)
Comparación suave entre puertas. Sus nombres, número de qubits y números de bits clásicos deben coincidir. El número de parámetros debe coincidir. Se compara cada parámetro. Si uno es un ParameterExpression entonces no se tiene en cuenta.
Parámetros
other (instruction) – otras instrucciones.
Devuelve
son auto y otros iguales hasta expresiones de parámetros.
Tipo de retorno
to_matrix
to_matrix()
Devuelve un Numpy.array para la matriz unitaria de la puerta.
Devuelve
si la subclase Gate tiene una definición de matriz.
Tipo de retorno
np.ndarray
Eleva
CircuitError - Si una subclase de Gate no implementa este método, se producirá una excepción cuando se llame a este método de la clase base.
to_mutable
to_mutable()
Devuelve una copia mutable de esta puerta.
Este método devolverá una nueva copia mutable de esta instancia de puerta. Si se utiliza una instancia singleton, ésta será una nueva instancia única que puede mutar. Si la instancia ya es mutable será una deepcopy de esa instancia.
validate_parameter
validate_parameter(parameter)
Los parámetros de la puerta deben ser int, float o ParameterExpression