group_wise
group_wise(mapper_fn)
Enveloppe une fonction de mappage de manière à ce qu'elle applique un opérateur à un groupe à la fois.
Plutôt que d'appliquer l'opérateur en une seule fois, la fonction encapsulée applique l'opérateur à chacun de ses éléments séparément groups , puis additionne les résultats (voir « Regrouper les termes d'un opérateur : utiliser la structure de l'opérateur »). La somme est le même opérateur dans les deux cas, mais ses termes de Pauli apparaissent regroupés : les termes d'un même groupe sont adjacents, au lieu d'être entremêlés avec ceux des autres groupes.
Cela a de l'importance car une formule de produit synthétise les termes dans l'ordre où elle les reçoit. Lorsqu'une opération de groupe s'applique à des qubits disjoints, le fait qu'ils soient adjacents permet de les planifier en parallèle, ce qui peut réduire considérablement la profondeur à deux qubits sans modifier le nombre de portes.
Utilisez-le pour encadrer n'importe quel MapperFunction:
MapperFnEvolutionSynthesis(group_wise(jordan_wigner))Un opérateur ne comportant pas de groupes est évalué en une seule fois, exactement comme s'il était mapper_fn utilisé seul.
Utiliser cette méthode va simplify() à l'encontre du but recherché, car la simplification réorganise les termes selon un ordre canonique et supprime ainsi le regroupement ainsi obtenu.
Paramètres
mapper_fn (Callable[[OperatorTrait, int], SparseObservable]) – la fonction de mappage à encapsuler.
Retours
Une fonction de mappage qui applique une fonction sur mapper_fn les groupes de l'opérateur et additionne les résultats.
Type de retour
Callable [[ OperatorTrait, int ], SparseObservable ]