pub fn recognize_variational_pattern(
expr: &Expression,
) -> Option<VariationalPattern>Expand description
Try to recognize a single-gate variational-circuit pattern.
Structurally recognizes exp(-i θ G / 2) (via is_rotation_gate) where
G is a single-qubit Pauli generator:
- if
θcontains anis_qaoa_parameter-recognizedbeta*factor andGis theXgenerator, this is aVariationalPattern::QaoaMixer; - if
θcontains anis_qaoa_parameter-recognizedgamma*factor andGis theZgenerator, this is aVariationalPattern::QaoaCost; - otherwise it is a generic
VariationalPattern::SingleRotationaround the recognized axis.
Returns None when expr is not a structurally recognizable single-axis
rotation. This function never produces
VariationalPattern::EntanglingLayer/VariationalPattern::VqeAnsatz;
see the enum-level doc comment on VariationalPattern for why those
require multi-gate context that this function does not have.