Skip to main content
IBM Quantum Platform

Descomposición cuasi-probabilística (QPD)

qiskit_addon_cutting.qpd

Funcionalidad principal de la descomposición de la cuasiprobabilidad.

QPDBasisBase en la que descomponer una operación.
BaseQPDGateClase base para una puerta a descomponer utilizando la descomposición de cuasiprobabilidad.
SingleQubitQPDGatePuerta de un qubit a descomponer mediante descomposición de cuasiprobabilidad.
TwoQubitQPDGatePuerta de dos qubits a descomponer mediante descomposición de cuasiprobabilidad.

WeightType

class WeightType(value)

GitHub

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)

GitHub

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 objetos QPDBasis objetos 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)

GitHub

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, el circuit se 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_ids corresponde a una puerta que no es una BaseQPDGate instancia.
  • ValueError - Una lista dentro de instruction_ids no tiene longitud 1 o 2.
  • ValueError - El número total de índices en instruction_ids no es igual al número de BaseQPDGate instancias en el circuito.
  • ValueError - Las puertas de una misma descomposición tienen bases QPD diferentes.
  • ValueError - La longitud de map_ids no es igual al número de descomposiciones del circuito.

qpdbasis_from_instruction

qpdbasis_from_instruction(gate, /)

GitHub

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

QPDBasis

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_matrix conversión de la puerta de dos qubits falló.

Parámetros

gate (Instruction)

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