RY
class RY(num_qubits, depth=3, entangler_map=None, entanglement='full', initial_state=None, entanglement_gate='cz', skip_unentangled_qubits=False, skip_final_ry=False)
DEPRECATED. The RY Variational Form.
The RY trial wave function is layers of rotations with entanglements. When none of qubits are unentangled to other qubits the number of parameters and the entanglement gates themselves have no additional parameters, the number of optimizer parameters this form creates and uses is given by , where is the total number of qubits and is the depth of the circuit.
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 parameters to the unentangled qubits only introduce overhead without bringing any benefit; furthermore, theoretically, applying multiple RY gates in a row can be reduced to a single RY gate with the summed rotation angles.
If the form uses entanglement gates with parameters (such as ‘crx’) the number of parameters increases by the number of entanglements. For instance with ‘linear’ or ‘sca’ entanglement the total number of parameters is . For ‘full’ entanglement an additional parameters, hence a total of . It is possible to skip the final layer or rotations by setting the argument skip_final_ry to True. Then the number of parameters in above formulae decreases by .
- ‘full’ entanglement is each qubit is entangled with all the others.
- ‘linear’ entanglement is qubit entangled with qubit , for all , where is the total number of qubits.
- ‘sca’ (shifted-circular-alternating) entanglement it is a generalized and modified version of the proposed circuit 14 in Sim et al.. It consists of circular entanglement where the ‘long’ entanglement connecting the first with the last qubit is shifted by one each block. Furthermore the role of control and target qubits are swapped every block (therefore alternating).
The entanglement parameter can be overridden by an entangler_map explicitly The entangler map is specified in the form of a list; where each element in the list is a list pair of a source qubit and a target qubit index. Indexes are integer values from to , where is the total number of qubits, as in the following example:
entangler_map = [[0, 1], [0, 2], [1, 3]]
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 pair describes [source, target], or None for as defined by entanglement. Note that the order is the list is the order of applying the two-qubit gate. - entanglement (
str
) – (‘full’ | ‘linear’ | ‘sca’), overridden by ‘entangler_map` if its provided. ‘full’ is all-to-all entanglement, ‘linear’ is nearest-neighbor and ‘sca’ is a shifted-circular-alternating entanglement. - initial_state (
Optional
[InitialState
]) – An initial state object - entanglement_gate (
str
) – (‘cz’ | ‘cx’ | ‘crx’) - skip_unentangled_qubits (
bool
) – Skip the qubits not in the entangler_map - skip_final_ry (
bool
) – Skip the final layer of Y rotations
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
RY.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 RY.get_entangler_map(map_type, num_qubits, offset=0)
returns entangler map
validate_entangler_map
static RY.validate_entangler_map(entangler_map, num_qubits)
validate entangler map