-
Notifications
You must be signed in to change notification settings - Fork 165
Description
The following hypothetical channels offer optimised implementations compatible with QuEST's distribution strategy.
-
mixPauliStr(Qureg, qreal p, PauliStr)which effects$\rho \rightarrow (1-p)\rho + p \hat{\sigma}\rho\hat{\sigma}^\dagger$ where$\hat{\sigma}$ is an any-targetPauliStr. This corresponds to superoperator$S=(1-p)I\otimes I + p (\hat{\sigma}^* \otimes \hat{\sigma})$ which we would not instantiate (unlike howmixKrausMap()operates). Instead, we trivially prepare$\hat{\sigma}' = \hat{\sigma} \otimes \hat{\sigma}$ (in$O(1)$ bit operations), set$p' = \pm p$ (negative when$\hat{\sigma}$ contains an odd number of$Y$ operators) and require the backend to effect$\alpha_i$ via$\alpha_i \rightarrow p' \beta_i + (1-p)\alpha_i$ where$\beta_i$ is the pair amplitude induced by$\hat{\sigma}'$ . Such a backend subroutine already exists as used by Pauli gadgets! 🎉We alas cannot extend this to a sum of
PauliStrsince if any differ in their prefix Paulis (beyond$\hat{X} \leftrightarrow \hat{Y}$ and$\hat{I} \leftrightarrow \hat{Z}$ ), then each node requires more amplitudes than can fit in its communication buffer. -
setUnitaryKrausMap(KrausMap, qreal* probs, CompMatr* unitaries)which initialises the KrausMap to$\{ \sqrt{1-\sum probs} I, \sqrt{probs[i]} unitaries[i] \}$ such that its subsequent operation viamixKrausMapeffects$\rho \rightarrow (1-\sum probs) + \sum_i probs[i] u_i \rho u_i^\dagger $ , i.e. a "random unitary channel" (convex combination of unitary maps).
Note a similar-spirited strategy to mixPauliStr for mixing a single unitary (as CompMatr) is not possible. Channel mixKrausMap()) while effecting