Skip to main content
IBM Quantum Platform

SXdgGate

class qiskit.circuit.library.SXdgGate(*args, _force_mutable=False, **kwargs)

GitHub

Bases: SingletonGate

La puerta inversa de un solo qubit Sqrt(X).

Se puede aplicar a un QuantumCircuit mediante el sxdg() método.

X=12(1i1+i1+i1i)\sqrt{X}^{\dagger} = \frac{1}{2} \begin{pmatrix} 1 - i & 1 + i \\ 1 + i & 1 - i \end{pmatrix}
Nota

Existe una diferencia global entre las definiciones de RX(π/2)RX(-\pi/2) y X\sqrt{X}^{\dagger}.

RX(π/2)=12(1ii1)=eiπ/4XRX(-\pi/2) = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & i \\ i & 1 \end{pmatrix} = e^{-i \pi/4} \sqrt{X}^{\dagger}

Crear una nueva puerta SXdg.


Atributos

base_class

Obtén la clase base de esta instrucción. Esto forma parte, sin duda, del árbol genealógico de self.

La «clase base» de una instrucción es la clase más baja de su árbol de herencia con la que el objeto debe considerarse totalmente compatible para todas las aplicaciones de circuitos. Esto suele significar que la subclase se define únicamente para facilitar el trabajo del programador con respecto a la clase base, y que la clase base es la «verdadera» clase desde el punto de vista del comportamiento. En particular, no debes anularla base_class si estás definiendo una versión personalizada de una instrucción que el hardware implementará de forma diferente, como una estrategia de medición alternativa, o una versión de una puerta parametrizada con un conjunto concreto de parámetros con el fin de distinguirla en un Target de la puerta parametrizada completa.

Esto suele ser exactamente equivalente a type(obj), salvo en el caso de las instancias únicas de las instrucciones de la biblioteca estándar. Estas instancias singleton son subclases especiales de su clase base, y esta propiedad devolverá dicha clase base. Por ejemplo:

>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True

En general, no se debe confiar en la clase exacta 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 los casos.

decompositions

Consulte las descomposiciones de la instrucción en SessionEquivalenceLibrary.

definition

Define la función de retorno en términos de otras puertas básicas.

label

Etiqueta con instrucciones de devolución

mutable

¿Es esta instancia una instancia única mutable o no?

Si este atributo está False activado, la instancia de la puerta es un singleton compartido y no es mutable.

name

Devuelve el nombre.

num_clbits

Devuelve el número de clbits.

num_qubits

Devuelve el número de qubits.

params

Los parámetros de este Instruction... Lo ideal sería que se tratara de ángulos de compuerta.


Métodos

add_decomposition

add_decomposition(decomposition)

GitHub

Añade un desglose de la instrucción a la página SessionEquivalenceLibrary.

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

Validación y gestión 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 coloca los argumentos en el orden correcto. En el ejemplo dado:

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

Las normas generales de radiodifusión son las siguientes:

  • 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) es mayor o igual a 3:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]

Parámetros

  • qargs (list) – Lista de argumentos sobre el bit cuántico.
  • cargs (list) – Lista de argumentos de bits clásicos.

Devuelve

Una tupla con un solo argumento.

Subidas

CircuitError – Si la entrada no es válida. Por ejemplo, el número de argumentos no coincide con lo esperado por la puerta.

Tipo de retorno

Iterable [ tupla [ lista, lista ]]

control

control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)

GitHub

Devuelve la versión controlada de sí mismo.

La puerta controlada se implementa como ControlledGate cuando annotated es False, y como AnnotatedOperation cuando annotated es True.

Obsoleto desde la versión 2.3

qiskit.circuit.gate.Gate.control()El argumento de annotated ha quedado obsoleto a partir de Qiskit 2.3. Se eliminará en Qiskit 3.0. El método Gate.control () ya no admite annotated=None. El nuevo valor predeterminado es annotated=True, lo que representa la puerta controlada como una AnnotatedOperation (a menos que ya exista una clase específica para puertas controladas). Puedes establecer explícitamente annotated=False para mantener el comportamiento anterior. No obstante, se recomienda utilizar annotated=True, ya que deja la construcción del circuito controlado en manos del transpilador y, además, permite realizar optimizaciones adicionales de las puertas controladas (lo que suele dar lugar a circuitos de mayor calidad).

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 opcional para la puerta. 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 (p. ej., "110"). Si None, se establece por defecto en el estado en el que todos 2**num_ctrl_qubits - 1los bits son uno.
  • annotated (bool | None) – Indica si la puerta controlada debe implementarse como una puerta controlada o como una operación anotada. Si None, se considera como False.

Devuelve

Una versión controlada de esta puerta.

Subidas

QiskitError – no válido num_ctrl_qubits o ctrl_state.

copy

copy(name=None)

GitHub

Copia de las instrucciones.

Parámetros

name (str) – nombre que se le dará al circuito copiado; si None es así, el nombre se mantiene igual.

Devuelve

una copia de la instrucción actual, con el nombre actualizado si se ha facilitado

Tipo de retorno

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

GitHub

Devuelve la puerta inversa de SXdg (es decir, SX).

Parámetros

annotated (bool) – Cuando se establece en True, esto se suele utilizar para devolver un AnnotatedOperation con un modificador inverso activado, en lugar de un concreto Gate. Sin embargo, en esta clase se ignora este argumento, ya que la inversa de esta puerta es siempre un SXGate.

Devuelve

recíproco de SXdgGate

Tipo de retorno

SXGate

is_parameterized

is_parameterized()

GitHub

Devuelve si Instruction contiene parámetros de tiempo de compilación.

power

power(exponent, annotated=False)

GitHub

Eleva esta puerta a la potencia de exponent.

Se implementa como una puerta unitaria (véase UnitaryGate) o como una operación comentada (véase ) AnnotatedOperation. En el caso de varias puertas estándar, como RXGate, cuando la potencia de una puerta puede expresarse en términos de otra puerta estándar que se devuelve directamente.

Parámetros

  • exponent (float) – la capacidad de levantar la compuerta para
  • annotated (bool) – indica si la puerta de potencia se puede implementar como una operación anotada. En el caso de varias puertas lógicas estándar, como RXGate, este argumento se ignora cuando la potencia de una puerta se puede expresar en términos de otra puerta lógica estándar.

Devuelve

Una operación que implementa gate^exponent

Subidas

CircuitError – Si la puerta no es unitaria

repeat

repeat(n)

GitHub

Crea una instrucción que self se repite nn veces.

Parámetros

n (int) – Número de veces que hay que repetir la instrucción

Devuelve

Que contiene la definición.

Tipo de retorno

qiskit.circuit.Instruction

Subidas

CircuitError – Si n < 1.

reverse_ops

reverse_ops()

GitHub

En el caso de una instrucción compuesta, invierte el orden de las subinstrucciones.

Esto se consigue invirtiendo de forma recursiva todas las subinstrucciones. No invierte ninguna puerta lógica.

Devuelve

una nueva instrucción con

subinstrucciones invertidas.

Tipo de retorno

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

GitHub

Comparación suave entre puertas. Sus nombres, el número de qubits y el número de bits clásicos deben coincidir. El número de parámetros debe coincidir. Se comparan todos los parámetros. Si se trata de un « ParameterExpression », no se tiene en cuenta.

Parámetros

other (instruction) – otras instrucciones.

Devuelve

«self» y «other» son iguales en las expresiones de parámetros.

Tipo de retorno

bool

to_matrix

to_matrix()

GitHub

Devuelve una matriz de tipo « Numpy.array » que representa la matriz unitaria de la puerta.

Devuelve

si la subclase Gate tiene una definición de matriz.

Tipo de retorno

np.ndarray

Subidas

CircuitError – Si una subclase de Gate no implementa este método, se generará una excepción cuando se llame a este método de la clase base.

to_mutable

to_mutable()

GitHub

Devuelve una copia modificable de esta puerta.

Este método devolverá una nueva copia modificable de esta instancia de puerta. Si se utiliza una instancia singleton, se creará una nueva instancia única que se podrá modificar. Si la instancia ya es mutable, se creará una copia profunda de dicha instancia.

validate_parameter

validate_parameter(parameter)

GitHub

Los parámetros de la puerta deben ser de tipo int, float o ParameterExpression

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