QuantumRandomAccessEncoding#

class QuantumRandomAccessEncoding(max_vars_per_qubit=3)[source]#

Bases: object

This class specifies a Quantum Random Access Code that can be used to encode the binary variables of a QUBO (quadratic unconstrained binary optimization problem).

Parameters:

max_vars_per_qubit (int) – The maximum number of decision variables per qubit. Integer values 1, 2 and 3 are supported (default to 3).

Attributes

compression_ratio#

Compression ratio. Number of decision variables divided by number of qubits

frozen#

Whether the object is frozen or not.

max_vars_per_qubit#

Maximum number of variables per qubit

minimum_recovery_probability#

Minimum recovery probability, as set by max_vars_per_qubit

num_qubits#

Number of qubits

num_vars#

Number of decision variables

offset#

Relaxed Hamiltonian offset

Raises:

RuntimeError – If the offset has not been set yet. Use the encode method to construct the Hamiltonian, or make sure that the objective function has been set.

problem#

The QuadraticProgram encoding a QUBO optimization problem

Raises:

RuntimeError – If the QuadraticProgram has not been set yet. Use the encode method to set the problem.

q2vars#

Each element contains the list of decision variable indices encoded on that qubit

qubit_op#

Relaxed Hamiltonian operator.

Raises:

RuntimeError – If the objective function has not been set yet. Use the encode method to construct the Hamiltonian, or make sure that the objective function has been set.

var2op#

Maps each decision variable to (qubit_index, operator)

Methods

encode(problem)[source]#

Encodes a given QuadraticProgram as a (n,1,p) Quantum Random Access Code (QRAC) relaxed Hamiltonian. It accomplishes this by mapping each binary decision variable to one qubit of the QRAC. The encoding is designed to ensure that the problem’s objective function commutes with the QRAC encoding.

After the function is called, it sets the following attributes:
  • qubit_op: The qubit operator that encodes the input QuadraticProgram.

  • offset: The constant value in the encoded Hamiltonian.

  • problem: The original QuadraticProgram used for encoding.

Inputs:

problem: A QuadraticProgram encoding a QUBO optimization problem

Raises:
freeze()[source]#

Freeze the object to prevent further modification.

Once an instance of this class is frozen, encode can no longer be called.

state_preparation_circuit(x)[source]#

Generate a circuit that prepares the state corresponding to the given binary string.

Parameters:

x (list[int]) – A list of binary values to be encoded into the state.

Returns:

A QuantumCircuit that prepares the state corresponding to the given binary string.

Return type:

QuantumCircuit