Submuestreo
qiskit_addon_sqd.subsampling
Funciones para crear lotes de muestras a partir de una matriz de cadenas de bits.
subsample
subsample(bitstring_matrix, probabilities, samples_per_batch, num_batches, rand_seed=None)
Submuestreo de lotes de matrices de bits a partir de una entrada bitstring_matrix.
Cada lote individual se muestreará sin sustitución a partir de la entrada bitstring_matrix. Las muestras se sustituirán tras la creación de cada lote, por lo que distintos lotes pueden contener muestras idénticas.
Parámetros
- bitstring_matrix (ndarray) – Una matriz 2D de representaciones
boolde valores de bits de forma que cada fila representa una única cadena de bits. - probabilities (ndarray) – Una matriz 1D que especifica una distribución de probabilidad sobre las cadenas de bits
- samples_per_batch (int) – El número de muestras que se deben tomar para cada lote
- num_batches (int) – El número de lotes que se van a generar
- rand_seed (Generator |int | None) – Una semilla para controlar el comportamiento aleatorio
Devuelve
Una lista de matrices de cadenas de bits submuestreadas a partir de la matriz de cadenas de bits de entrada.
Eleva
- ValueError : el número de elementos de
probabilitiesdebe ser igual al número de filas debitstring_matrix. - ValueError : el número de muestras por lote y el número de lotes deben ser números enteros positivos.
Tipo de retorno
partition_subsample
partition_subsample(bitstring_matrix, probabilities, samples_per_batch, num_batches, rand_seed=None)
Dividir un conjunto de matrices de bits con submuestreo en lotes disjuntos.
A diferencia de subsample(), que extrae cada lote de forma independiente, esta función extrae un único conjunto de cadenas samples_per_batch * num_batches de bits sin repetición y lo divide entre los lotes, de modo que ninguna cadena de bits aparezca en más de un lote.
Está pensado para utilizarse con un solucionador que compare los lotes entre sí y combine los resultados que conserven, como, por ejemplo, TrimPolicy. Los lotes seleccionados de forma independiente se solapan en gran medida, ya que es probable que las cadenas de bits de alta probabilidad se incluyan en todos los lotes. Esto reduce el número de candidatos distintos y samples_per_batch * num_batches sesga la selección, ya que una cadena de bits que aparece en varios lotes tiene varias oportunidades de pasar el filtro. Los lotes disjuntos dan a cada candidato exactamente una oportunidad y hacen que el conjunto de candidatos distintos sea tan amplio como lo permitan los lotes.
El conjunto se completa mediante un sorteo ponderado sin reposición; a continuación, se baraja y se reparte por turnos entre los lotes, de modo que cada lote es un subconjunto aleatorio uniforme del conjunto, en lugar de una muestra del mismo seleccionada en función de la probabilidad.
Si la entrada contiene menos de cadenas samples_per_batch * num_batches de bits, se utiliza toda la entrada como conjunto y los lotes resultantes son, en consecuencia, más pequeños.
Lo que hace que sean disjuntas son las cadenas de bits y, por lo tanto, las configuraciones. Las matrices de cadenas de CI derivadas de ellas, una por cada sector de espín, pueden seguir compartiendo cadenas entre lotes, ya que dos configuraciones diferentes pueden coincidir en una de sus mitades. Por el contrario, la partición de las matrices por espín es un esquema diferente, con consecuencias distintas en cuanto a la distribución de las cadenas solicitadas y de arrastre, y no es lo que hace esta función.
Parámetros
- bitstring_matrix (ndarray) – Una matriz 2D de representaciones
boolde valores de bits de forma que cada fila representa una única cadena de bits. - probabilities (ndarray) – Una matriz 1D que especifica una distribución de probabilidad sobre las cadenas de bits
- samples_per_batch (int) – El número de muestras de cada lote
- num_batches (int) – El número de lotes que se van a generar
- rand_seed (Generator |int | None) – Una semilla para controlar el comportamiento aleatorio
Devuelve
Una lista de matrices de cadenas de bits, disjuntas entre sí, obtenidas mediante un submuestreo de la matriz de cadena de bits de entrada.
Eleva
- ValueError : el número de elementos de
probabilitiesdebe ser igual al número de filas debitstring_matrix. - ValueError : el número de muestras por lote y el número de lotes deben ser números enteros positivos.
Tipo de retorno
postselect_and_subsample
postselect_and_subsample(bitstring_matrix, probabilities, *, hamming_right, hamming_left, samples_per_batch, num_batches, rand_seed=None)
Submuestreo de lotes de matrices de bits con el peso hamming correcto a partir de una entrada bitstring_matrix.
Las muestras de cadenas de bits con un peso hamming incorrecto en su mitad izquierda o derecha no se muestrearán.
Cada lote individual se muestreará sin sustitución a partir de la entrada bitstring_matrix. Las muestras se sustituirán tras la creación de cada lote, por lo que distintos lotes pueden contener muestras idénticas.
La función qiskit_addon_sqd.subsampling.postselect_and_subsample() está obsoleta a partir de qiskit-addon-sqd 0.12.0. Se retirará no antes de v0.13.0. En su lugar, utilice las funciones postselect_by_hamming_right_and_left y subsample .
Parámetros
- bitstring_matrix (ndarray) – Una matriz 2D de representaciones
boolde valores de bits de forma que cada fila representa una única cadena de bits. - probabilities (ndarray) – Una matriz 1D que especifica una distribución de probabilidad sobre las cadenas de bits
- hamming_right (int) – El peso de Hamming objetivo para la mitad derecha de las cadenas de bits muestreadas
- hamming_left (int) – El peso de Hamming objetivo para la mitad izquierda de las cadenas de bits muestreadas
- samples_per_batch (int) – El número de muestras que se deben tomar para cada lote
- num_batches (int) – El número de lotes que se van a generar
- rand_seed (Generator |int | None) – Una semilla para controlar el comportamiento aleatorio
Devuelve
Una lista de matrices de cadenas de bits con el peso hamming correcto submuestreadas a partir de la matriz de cadenas de bits de entrada
Eleva
- ValueError : el número de elementos de
probabilitiesdebe ser igual al número de filas debitstring_matrix. - ValueError : los pesos de Hamming deben ser números enteros no negativos.
- ValueError : el número de muestras por lote y el número de lotes deben ser números enteros positivos.
Tipo de retorno
postselect_by_hamming_right_and_left
postselect_by_hamming_right_and_left(bitstring_matrix, probabilities, *, hamming_right, hamming_left)
Posselección de cadenas de bits en función del peso Hamming deseado en las mitades derecha e izquierda.
Parámetros
- bitstring_matrix (ndarray) – Una matriz 2D de representaciones
boolde valores de bits de forma que cada fila representa una única cadena de bits. - probabilities (ndarray) – Una matriz 1D que especifica una distribución de probabilidad sobre las cadenas de bits
- hamming_right (int) – El peso de Hamming objetivo para la mitad derecha de las cadenas de bits muestreadas
- hamming_left (int) – El peso de Hamming objetivo para la mitad izquierda de las cadenas de bits muestreadas
Devuelve
Matriz de cadenas de bits postseleccionadas y probabilidades. La nueva matriz de cadenas de bits contiene sólo aquellas cadenas de bits de la matriz original que tienen el peso Hamming deseado en las mitades derecha e izquierda, y las nuevas probabilidades se construyen tomando las probabilidades originales correspondientes a las cadenas de bits postseleccionadas y reescalándolas para que sumen uno.
Eleva
- ValueError : los pesos de Hamming deben ser números enteros no negativos.
- ValueError : el número de columnas en debe
bitstring_matrixser par. - ValueError : el número de elementos de
probabilitiesdebe ser igual al número de filas debitstring_matrix.
Tipo de retorno