Descomposición cuasi-probabilística (QPD)
qiskit_addon_cutting.qpd
Funcionalidad principal de la descomposición de la cuasiprobabilidad.
QPDBasis | Base en la que descomponer una operación. |
BaseQPDGate | Clase base para una puerta a descomponer utilizando la descomposición de cuasiprobabilidad. |
SingleQubitQPDGate | Puerta de un qubit a descomponer mediante descomposición de cuasiprobabilidad. |
TwoQubitQPDGate | Puerta de dos qubits a descomponer mediante descomposición de cuasiprobabilidad. |
WeightType
class WeightType(value)
Bases: Enum
Tipo de peso asociado a una muestra QPD.
IGUAL
Valor predeterminado: 1
Un peso dado en proporción a su peso exacto
SAMPLED
Valor predeterminado: 2
Un peso determinado mediante algún procedimiento de muestreo
generate_qpd_weights
generate_qpd_weights(qpd_bases, num_samples=1000)
Generar pesos a partir de la distribución de cuasiprobabilidad conjunta.
Cada peso cuyo valor absoluto esté por encima de un umbral de 1 / num_samples se evaluará exactamente. A continuación, se muestrearán los pesos restantes, los de la cola de la distribución, lo que dará como resultado un máximo de num_samples pesos únicos.
Parámetros
- qpd_bases (
Sequence[QPDBasis]) – Los objetosQPDBasisobjetos a partir de los cuales generar pesos - num_samples (
float) – Controla el número de pesos a generar
Tipo de retorno
dict[tuple[int, ...], tuple[float, WeightType]]
Devuelve
Asignación de una descomposición dada a su peso. Las claves son tuplas de índices - un índice por entrada QPDBasis. Los índices corresponden a una cartografía de descomposición específica en la base.
Los valores son tuplas. El primer elemento es un número que corresponde al peso de la contribución. El segundo elemento es el WeightTypeEXACT o SAMPLED.
decompose_qpd_instructions
decompose_qpd_instructions(circuit, instruction_ids, map_ids=None, *, inplace=False)
Sustituye todas las instrucciones QPD del circuito por operaciones y medidas Qiskit locales.
Parámetros
- circuit (QuantumCircuit) – El circuito que contiene las instrucciones QPD
- instruction_ids (Sequence[Sequence[int]]) – Una secuencia 2D, de forma que cada secuencia interior corresponde a índices de instrucciones que comprenden una descomposición en el circuito. Los elementos de una secuencia común pertenecen a una descomposición común y deben muestrearse juntos.
- map_ids (Sequence[int] | None) – Índices de una asignación lineal específica que se aplicará a las descomposiciones del circuito. Si no se proporciona ningún ID de mapa, el circuito se descompondrá aleatoriamente según la distribución de probabilidad conjunta de las descomposiciones.
- inplace (bool) – Si
True, elcircuitse modificará en su lugar.
Tipo de retorno
QuantumCircuit
Devuelve
Circuito que ha tenido todas sus BaseQPDGate instancias descompuestas en operaciones locales.
El circuito contendrá un nuevo registro clásico final para contener los resultados de la medición QPD (accesible en retval.cregs[-1]).
Eleva
- ValueError - Un índice en
instruction_idscorresponde a una puerta que no es unaBaseQPDGateinstancia. - ValueError - Una lista dentro de instruction_ids no tiene longitud 1 o 2.
- ValueError - El número total de índices en
instruction_idsno es igual al número deBaseQPDGateinstancias en el circuito. - ValueError - Las puertas de una misma descomposición tienen bases QPD diferentes.
- ValueError - La longitud de
map_idsno es igual al número de descomposiciones del circuito.
qpdbasis_from_instruction
qpdbasis_from_instruction(gate, /)
Genera un objeto QPDBasis objeto, dada una operación admitida.
Todas las puertas de dos qubits que implementan el método to_matrix() son compatibles. Esto debería incluir la gran mayoría de las puertas sin parámetros no vinculados, pero hay algunos casos especiales (véase, por ejemplo, qiskit issue #10396 ).
La operación Move que puede utilizarse para especificar un corte de cable.
Tipo de retorno
Devuelve
El nuevo QPDBasis objeto
Eleva
- ValueError - Instrucción no admitida.
- ValueError - No se puede descomponer la instrucción con parámetros no vinculados.
- ValueError -
to_matrixconversión de la puerta de dos qubits falló.
Parámetros
gate (Instruction)