InitializeModes
class InitializeModes(occupation)
Bases: FermionicGate
Prepara (o, en el marco de una simulación, certifica) la ocupación de un modo fermiónico.
Esta puerta indica la ocupación prevista de los modos en los que se encuentra. Su comportamiento depende de cómo se utilice el circuito:
- Transpilar (sintetizado en puertas de qubits): produce el estado; el complemento de síntesis emite las puertas que establecen los modos especificados en su ocupación, tal y como cabría esperar de una puerta de inicialización.
- Simulado (
_apply_unitary_()): actúa como validador en lugar de como productor. Dado un vector de estado, comprueba que la amplitud del vector se limite al subespacio que este defineoccupationy devuelve el vector sin modificarlo, certificando —sin alterarlo— que el estado de entrada es la referencia prevista, de modo que las transformaciones posteriores actúen sobre él.
En ambos modos, la puerta limita únicamente los orbitales que indican los nombres de ocupación (y, por sector de espín, solo a lo largo del eje de ese sector), por lo que se pueden colocar varias InitializeModes puertas en paralelo para generar fragmentos disjuntos de un estado de forma independiente; por ejemplo, una puerta por sector de espín o una por grupo orbital. Una puerta de giro puede abarcar un solo sector (cualquier fragmento del mismo) o especificar completamente ambos sectores, pero se rechaza cualquier solapamiento parcial de ambos (véase _apply_unitary_placed_()).
Utiliza from_hartree_fock() para construir la ocupación de una referencia de Hartree-Fock.
Se trata de un prototipo en fase inicial de desarrollo. Ten en cuenta que pueden producirse cambios en su interfaz sin previo aviso durante la fase de desarrollo previa al lanzamiento de este paquete.
La inicialización de una instancia de esta puerta se puede realizar con los argumentos que se indican a continuación.
Parámetros
occupation (Sequence[bool]) – una secuencia de valores booleanos que indican el estado de cada modo en el que se FermionicRegister está inicializando mediante esta puerta.
Atributos
occupation
La secuencia de valores booleanos que indica el estado de cada modo en el que se FermionicRegister está inicializando mediante esta puerta.
Métodos
from_hartree_fock
classmethod from_hartree_fock(norb, nelec)
Crea la puerta para la ocupación de referencia de Hartree-Fock de (norb, nelec).
El determinante de Hartree-Fock ocupa los orbitales de índice más bajo de cada sector de espín. El hecho de que la referencia sea sin espín o con espín se deduce de ( nelec un int selecciona la interpretación sin espín de los modos norb ; un par (n_alpha, n_beta) selecciona la interpretación de espín en bloque con espín de los modos 2 * norb ). Coloca la puerta devuelta en el registro correspondiente para certificar un estado de referencia de Hartree-Fock.
Parámetros
- norb (int) – el número de orbitales espaciales.
- nelec (int |tuple[int, int]) – o bien un único número entero para un sistema sin espín, o bien un par de números enteros que representan el número de fermiones de espín alfa y de espín beta.
Devuelve
Una InitializeModes puerta cuya ocupación es el determinante de Hartree-Fock.
Subidas
ValueError – si el número de electrones supera el número de orbitales norb disponibles en un sector.
Tipo de retorno
Métodos del protocolo
_apply_unitary_placed_
_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)
Afirma que vec queda confinado en el subespacio de ocupación de esta puerta, devolviéndolo sin cambios.
A diferencia de una puerta de transformación, esta puerta no modifica el estado: comprueba que la amplitud vecde se encuentre íntegramente en el subespacio que define occupation , y, si es así, devuelve vec sin modificaciones. El subespacio es el conjunto de determinantes cuya ocupación coincide con esta puerta en los orbitales que designa, quedando libre cada orbital no designado; de este modo, una ocupación parcial (un fragmento de un sector) admite toda una familia de determinantes y la comprobación se combina con otras InitializeModes puertas paralelas.
El modo local de la puerta ( occupation un indicador por modo local) se introduce en el registro global mediante freg_indices: el modo local i restringe el modo global freg_indices[i]. A continuación, los modos globales se interpretan según la convención (norb, nelec) :
- Sin espín (
neleces unint): los modosnorbson orbitales directamente; la comprobación se realiza en el espacio deC(norb, nelec)dimensión. - Spinful (
neleces un par): según la convención de espín por bloques, los modos0..norbson orbitales alfa y los modosnorb..2*norbson orbitales beta. Una puerta que toca un único sector restringe el eje del estado(dim_a, dim_b)de ese sector (un conjunto de filas completas en el caso de una puerta alfa, o de columnas completas en el caso de una puerta beta) y deja libre el otro eje, por lo que se combina con las puertas paralelas del otro sector. Una puerta también puede abarcar ambos sectores, pero solo cuando fija un determinante completo (todos los orbitales de ambos sectores están asignados, sin dejar ninguno libre); una cobertura parcial —que restringe algunos orbitales de ambos sectores mientras deja otros libres— se rechaza, ya que no es un producto de subespacios por eje y no se puede componer (en su lugar, se debe utilizar una puerta por sector).
La comprobación se centra en el confinamiento, no en la igualdad: una amplitud entrante puede tener cualquier fase y cualquier magnitud dentro del subespacio (una fase global o la normalización son físicamente irrelevantes), por lo que esto valida la referencia sin vincularla a un vector determinante específico.
Parámetros
- vec (ndarray) – el vector de estado que se va a validar. Su longitud debe coincidir con la dimensión del sector
(norb, nelec). - 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 para un sistema sin espín, o bien un par de números enteros que representan el número de fermiones de espín alfa y de espín beta. Un número entero selecciona la interpretación de modos sin espín (los
norbmodos son orbitales); un par selecciona la interpretación de espín en bloque(orb, spin)de los modos2 * norb. - copy (bool) – Se acepta por cumplir con el protocolo, pero no tiene ningún efecto: esta puerta no modifica el estado, por lo que
vecse devuelve tal cual en cualquier caso. - freg_indices (list[int]) – los índices de los modos absolutos (globales) a los que se asignan los modos locales de esta puerta.
Devuelve
La entrada vec, sin cambios, una vez verificada su restricción al subespacio de ocupación.
Subidas
ValueError – si un modo ocupado queda fuera del rango implícito en norb; si una puerta con espín se extiende parcialmente a ambos sectores de espín (sin fijar un determinante completo); si la longitud vecde no coincide con la dimensión del sector (norb, nelec) ; o si vec tiene una amplitud fuera del subespacio que define la ocupación.
Tipo de retorno