Implement an equivalent to legacy `succ_full` option
See original GitHub issueWhat is the expected enhancement?
The legacy UCCSD
implementation had a method_doubles="succ_full"
option which is not yet implemented in Qiskit Nature.
This option is a variant of the (now named) SUCCD
option which also includes symmetrically mirrored double excitations, however, using the same parameter as the symmetric counter part (as also noted here).
The original implementation in Qiskit Aqua came from the work of this paper in which sections II.E.2 and appendix E provide more in-depth information.
The following Qiskit Nature snippet shows the current state of the SUCCD
ansatz for the example discussed the aforementioned paperβs appendix:
from qiskit_nature.circuit.library.ansatzes import SUCCD
from qiskit_nature.converters.second_quantization import QubitConverter
from qiskit_nature.mappers.second_quantization import JordanWignerMapper
converter = QubitConverter(JordanWignerMapper())
ansatz = SUCCD(converter, (1, 1), 6)
print(ansatz.decompose().draw())
print(ansatz.excitation_list)
which outputs:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΒ»
q_0: β€0 βΒ»
β βΒ»
q_1: β€1 βΒ»
β βΒ»
q_2: β€2 βΒ»
β exp(-it (IYYIXY + IXXIXY + IXYIYY + IYXIYY + IXYIXX + IYXIXX + IYYIYX + IXXIYX))(1.0*t[0]) βΒ»
q_3: β€3 βΒ»
β βΒ»
q_4: β€4 βΒ»
β βΒ»
q_5: β€5 βΒ»
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΒ»
Β« βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΒ»
Β«q_0: β€0 βΒ»
Β« β βΒ»
Β«q_1: β€1 βΒ»
Β« β βΒ»
Β«q_2: β€2 βΒ»
Β« β exp(-it (YZYIXY + XZXIXY + XZYIYY + YZXIYY + XZYIXX + YZXIXX + YZYIYX + XZXIYX))(1.0*t[1]) βΒ»
Β«q_3: β€3 βΒ»
Β« β βΒ»
Β«q_4: β€4 βΒ»
Β« β βΒ»
Β«q_5: β€5 βΒ»
Β« βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΒ»
Β« βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Β«q_0: β€0 β
Β« β β
Β«q_1: β€1 β
Β« β β
Β«q_2: β€2 β
Β« β exp(-it (YZYXZY + XZXXZY + XZYYZY + YZXYZY + XZYXZX + YZXXZX + YZYYZX + XZXYZX))(1.0*t[2]) β
Β«q_3: β€3 β
Β« β β
Β«q_4: β€4 β
Β« β β
Β«q_5: β€5 β
Β« βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[((0, 3), (1, 4)), ((0, 3), (1, 5)), ((0, 3), (2, 5))]
In this context, the goal of this issue is to implement a variant of SUCCD
(or an additional keyword argument to its constructor) which results in the inclusion of the ((0, 3), (2, 4))
excitation, while at the same time still using only three parameters (namely t[0]-t[2]
in the example above). This should be achieved by ensuring that ((0, 3), (1, 5))
and ((0, 3), (2, 4))
are assigned the same parameter (namely t[1]
in the example above).
Issue Analytics
- State:
- Created 2 years ago
- Comments:9 (5 by maintainers)
Top GitHub Comments
I donβt mind and actually feel happy that this issue could be solved without me. Feel free to go ahead.
@mrossinek Thanks for the reminder. I checked the code and believe I have a workflow pipeline in my mind. The modification involves how to pass the parameters up to its parent class
UCC
. The work can be divided in two steps: 1. Get the excitation list and pair the symmetric excitations together. 2. Pass each two symmetric excitations as one operator(maybe this is the easiest way) up.I think I still need some time to figure out the relation between
EvolvedOperatorAnsatz
,UCC
andSUCCD
. I donβt think I am now aiming at getting the bounty because I have another deadline by this week(But anyone else interested can still aim at this cash bounty). If not, I will still keep working on this problem later.