SwapRZ
class SwapRZ(num_qubits, depth=3, entangler_map=None, entanglement='full', initial_state=None, skip_unentangled_qubits=False)
DEPRECATED. The SwapRZ Variational Form.
This trial wave function is layers of swap plus rotations with entanglements. It was designed principally to be a particle-preserving variational form for qiskit.chemistry
. Given an initial state as a set of 1’s and 0’s it will preserve the number of 1’s - where for chemistry a 1 will indicate a particle.
In chemistry, to define the particles for SwapRZ, use a HartreeFock
initial state with the Jordan-Wigner qubit mapping
For the case of none of qubits are unentangled to other qubits, the number of optimizer parameters SwapRz creates and uses is given by , where denotes the cardinality of or, more precisely, the length of (since is not just a set, but a list). Nonetheless, in some cases, if an entangler_map does not include all qubits, that is, some qubits are not entangled by other qubits. The number of parameters is reduced by , where is the number of unentangled qubits. This is because adding more Rz gates to the unentangled qubits only introduce overhead without bringing any benefit; furthermore, theoretically, applying multiple Rz gates in a row can be reduced to a single Rz gate with the summed rotation angles.
See RY
for more detail on entangler_map and entanglement which apply here too but note SwapRZ only supports ‘full’ and ‘linear’ values.
Parameters
- num_qubits (
int
) – Number of qubits, has a minimum value of 1. - depth (
int
) – Number of rotation layers, has a minimum value of 1. - entangler_map (
Optional
[List
[List
[int
]]]) – Describe the connectivity of qubits, each list describes [source, target], or None for full entanglement. Note that the order is the list is the order of applying the two-qubit gate. - entanglement (
str
) – (‘full’ | ‘linear’) overridden by ‘entangler_map` if its provided. ‘full’ is all-to-all entanglement, ‘linear’ is nearest-neighbor. - initial_state (
Optional
[InitialState
]) – An initial state object - skip_unentangled_qubits (
bool
) – Skip the qubits not in the entangler_map
Attributes
num_parameters
Number of parameters of the variational form.
Returns
An integer indicating the number of parameters.
Return type
int
num_qubits
Number of qubits of the variational form.
Returns
An integer indicating the number of qubits.
Return type
int
parameter_bounds
Parameter bounds.
Returns
A list of pairs indicating the bounds, as (lower, upper). None indicates an unbounded parameter in the corresponding direction. If None is returned, problem is fully unbounded.
Return type
list
preferred_init_points
Return preferred init points.
If an initial state is provided then the variational form may provide back this set of parameters which when used on the variational form should result in the overall state being that defined by the initial state
setting
support_parameterized_circuit
Whether or not the sub-class support parameterized circuit.
Returns
indicate the sub-class support parameterized circuit
Return type
boolean
Methods
construct_circuit
SwapRZ.construct_circuit(parameters, q=None)
Construct the variational form, given its parameters.
Parameters
- parameters (Union(numpy.ndarray, list[Parameter], ParameterVector)) – circuit parameters
- q (QuantumRegister) – Quantum Register for the circuit.
Returns
a quantum circuit with given parameters
Return type
Raises
ValueError – the number of parameters is incorrect.
get_entangler_map
static SwapRZ.get_entangler_map(map_type, num_qubits, offset=0)
returns entangler map
validate_entangler_map
static SwapRZ.validate_entangler_map(entangler_map, num_qubits)
validate entangler map