ProductFormula
class qiskit.synthesis.ProductFormula(order, reps=1, insert_barriers=False, cx_structure='chain', atomic_evolution=None, wrap=False, preserve_order=True, *, atomic_evolution_sparse_observable=False)
Bases: EvolutionSynthesis
Clase base de fórmulas de producto para la descomposición de exponenciales de operadores no conmutativos.
LieTrotter y SuzukiTrotter heredan de esta clase.
Parámetros
- order (int) – El orden de la fórmula del producto.
- reps (int) – El número de pasos temporales.
- insert_barriers (bool) – Si se insertan barreras entre las evoluciones atómicas.
- cx_structure (str) – La forma de disponer las compuertas CX para las evoluciones Pauli, puede ser
"chain", donde se utilizan conexiones de vecino próximo, o"fountain", donde todos los qubits están conectados a uno. Esto sólo tiene efecto cuandoatomic_evolution is None. Pauliatomic_evolution (Callable[[QuantumCircuit, qiskit.quantum_info.Pauli |SparsePauliOp, float], None] | None) – Una función para aplicar la evolución de un único término, oSparsePauliOpde únicamente los términos que conmutan entre sí, a un circuito. La función toma tres argumentos: el circuito al que se va a añadir la evolución, el operador de Pauli que se va a hacer evolucionar y el tiempo de evolución. Por defecto, una evolución de Pauli se descompone en una cadena deCXpuertas y una únicaRZpuerta.- wrap (bool) – Si envolver las evoluciones atómicas en objetos de puerta personalizados. Tenga en cuenta que
Truees más lento queFalse. Esto sólo tiene efecto cuandoatomic_evolution is None. - preserve_order (bool) – Si
False, permite reordenar los términos del operador para obtener potencialmente un circuito de evolución menos profundo. No es relevante cuando se sintetiza el operador con un solo término. - atomic_evolution_sparse_observable (bool) – Si se pasa un
atomic_evolutionpersonalizado que aún no admiteSparseObservables como entrada, establezca este argumento enFalsepara aplicar automáticamente una conversión aSparsePauliOp. Este argumento se admite hasta Qiskit 2.2, momento en el que todas las evoluciones atómicas deberán admitirSparseObservables como entrada.
Atributos
settings
Devuelve la configuración en un diccionario, que puede utilizarse para reconstruir el objeto.
Devuelve
Un diccionario que contiene los ajustes de esta fórmula de producto.
Eleva
NotImplementedError - Si se establece una evolución atómica personalizada, que no se puede serializar.
Métodos
expand
expand(evolution)
Aplica la fórmula del producto para expandir el Hamiltoniano en la puerta de evolución.
Parámetros
evolution (PauliEvolutionGate) – El PauliEvolutionGatecuyo Hamiltoniano expandimos.
Devuelve
Una lista de rotaciones Pauli en formato disperso, donde cada elemento es (paulistring, qubits, coefficient). Por ejemplo, la expansión Lie-Trotter de H = XI + ZZ devolvería [("X", [1], 1), ("ZZ", [0, 1], 1)].
Tipo de retorno
synthesize
synthesize(evolution)
Sintetizar a PauliEvolutionGate.
Parámetros
evolution (PauliEvolutionGate) – La puerta de la evolución para sintetizar.
Devuelve
Un circuito que aplica la evolución.
Tipo de retorno