Skip to main content
IBM Quantum Platform

FermionicCircuit

class FermionicCircuit(num_modes)

Bases: object

Una envoltura de QuantumCircuit para expresar circuitos fermiónicos.

Esta clase mantiene una API reducida en comparación con la API completa del. subyacente QuantumCircuit. Esto se hace para evitar revelar (entre otros métodos) la capacidad de aplicar puertas basadas en qubits a un circuito fermiónico, lo que no sería una operación bien definida en el caso general.

La inicialización de una instancia de circuito puede realizarse con los argumentos que se indican a continuación.

Parámetros

num_modes (int) – el número de modos fermiónicos sobre los que actúa este circuito.


Atributos

metadata

Vuelve a exponer metadata.

modes

El modo fermiónico sobre el que bits actúa este circuito.

register

Tipo: FermionicRegister

El circuito interno FermionicRegister...


Métodos

append

append(gate, fargs, cargs=None, *, copy=True)

Añade un FermionicGate a este circuito.

Parámetros

  • gate (FermionicGate) – la puerta fermiónica que se debe aplicar.

  • fargs (Qubit |QuantumRegister |int |slice |Sequence[Qubit |int]) – los modos fermiónicos sobre los que actúa esta puerta.

  • cargs (None) –

    los bits clásicos sobre los que actúa esta puerta.

    Aviso

    Actualmente no se admiten puertas de este tipo.

  • copy (bool) – reenviado a append().

Subidas

ValueError – si el objeto proporcionado no es gate una instancia de FermionicGate.

Tipo de retorno

Ninguna

count_ops

count_ops()

Vuelve a exponer count_ops().

Tipo de retorno

OrderedDict [ str, int ]

decompose

decompose(gates_to_decompose=None, reps=1)

Vuelve a exponer decompose().

Parámetros

Tipo de retorno

FermionicCircuit

draw

draw(*args, **kwargs)

Expone directamente el método draw() del circuito interno.

Tipo de retorno

Cualquiera

Métodos del protocolo

_apply_unitary_

_apply_unitary_(vec, norb, nelec, copy)

Aplica este circuito a un vector de estado de ffsim, implementando el protocolo de ffsim.

Esto recorre el circuito en orden topológico y aplica el efecto unitario de cada instrucción al vector de estado mediante el ffsim.SupportsApplyUnitary protocolo de ffsim (que se refleja localmente como SupportsApplyUnitary). Cada instrucción que actúa sobre un subconjunto del registro ve cómo se renombran los modos fermiónicos de dicho subconjunto con sus índices absolutos (globales) antes de aplicarse.

Consúltese _apply_unitary_placed_() para obtener más detalles; este método parte de la base de que los modos del circuito son los modos del vector 0..num_modes (es decir, una disposición de modos identidad).

Parámetros

  • vec (ndarray) – el vector de estado al que se va a aplicar este circuito. Si el circuito está vacío, lo devuelve sin cambios.
  • norb (int) – el número de orbitales espaciales.
  • nelec (int |tuple[int, int]) – o bien un único número entero que represente el número de fermiones en un sistema sin espín, o bien un par de números enteros que indiquen el número de fermiones de espín alfa y de espín beta.
  • copy (bool) – si se debe copiar el vector antes de realizar operaciones con él.

Devuelve

El vector transformado.

Subidas

  • TypeError – si una instrucción de circuito no implementa el protocolo ffsim.SupportsApplyUnitary de ffsim.
  • ValueError – si una instrucción de circuito se niega a aplicar su protocolo unitario para los valores dados norb y nelec; o si una instrucción que solo implementa el protocolo _apply_unitary_ básico se sitúa en un subconjunto en modo no identidad.

Tipo de retorno

ndarray

_apply_unitary_placed_

_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)

Aplica este circuito tras asignar sus modos a los modos globales del vector.

Esto recorre el circuito en orden topológico y aplica el efecto unitario de cada instrucción al vector de estado mediante el protocolo ffsim.SupportsApplyUnitary de ffsim. Los modos propios de cada instrucción se asignan en primer lugar mediante la ubicación de este circuito: un modo local del circuito se asigna m al modo global freg_indices[m], por lo que una subinstrucción que actúa sobre los modos locales del circuito [m0, m1, ...] se aplica a los modos globales [freg_indices[m0], freg_indices[m1], ...]. Con la colocación de identidad, esto freg_indices == 0..num_modes es exactamente así _apply_unitary_(); una colocación de subconjunto permite que este circuito actúe como la definición de una puerta colocada en un subconjunto de un registro más grande (p. ej., UCJ). Esta extensión que tiene en cuenta la ubicación está documentada como SupportsApplyUnitaryPlaced — un protocolo específico del paquete que no tiene equivalente en ffsim.

Una instrucción se coloca en sus modos absolutos únicamente si implementa la extensión _apply_unitary_placed_ sensible a la ubicación (SupportsApplyUnitaryPlaced). Una instrucción que solo implemente la versión básica de ffsim ( _apply_unitary_SupportsApplyUnitary ), que no tiene ningún argumento de modo y, por lo tanto, actúa sobre los modos del 0..k vector, solo puede aplicarse cuando su ubicación es la identidad [0, 1, ..., k-1]; en cualquier otro subconjunto, la ubicación no puede expresarse y la instrucción se rechaza, en lugar de aplicarse de forma silenciosa en los modos incorrectos.

Parámetros

  • vec (ndarray) – el vector de estado al que se va a aplicar este circuito. Si el circuito está vacío, lo devuelve sin cambios.
  • norb (int) – el número de orbitales espaciales del vector de estado global.
  • nelec (int |tuple[int, int]) – o bien un único número entero que represente el número de fermiones en un sistema sin espín, o bien un par de números enteros que indiquen el número de fermiones de espín alfa y de espín beta.
  • copy (bool) – si se debe copiar el vector antes de realizar operaciones con él.
  • freg_indices (list[int]) – los índices de modo absolutos (globales) a los que se corresponden los modos de este circuito.

Devuelve

El vector transformado.

Subidas

  • TypeError – si una instrucción de circuito no implementa el protocolo ffsim.SupportsApplyUnitary de ffsim.
  • ValueError – si una instrucción de circuito se niega a aplicar su protocolo unitario para los valores dados norb y nelec; o si una instrucción que solo implementa el protocolo _apply_unitary_ básico se sitúa en un subconjunto en modo no identidad.

Tipo de retorno

ndarray

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