Iterable Permutation#
- permute_iterable(iterable, perm)[source]#
Applies an arbitrary permutation to an iterable with logarithmic depth.
- Parameters:
- iterableQuantumArray or List[QuantumVariable] or QuantumVariable or List[Qubit]
The iterable to perform the permutation on.
- permList[integer]
A list specifying the permutation.
Examples
We create a QuantumArray containing increments and apply a specified permutation.
>>> from qrisp import QuantumFloat, QuantumArray, permute_iterable >>> import numpy as np >>> qa = QuantumArray(QuantumFloat(3), 8) >>> qa[:] = np.arange(8) >>> permute_iterable(qa, perm = [1,0,3,7,5,2,6,4]) >>> print(qa) {OutcomeArray([1, 0, 3, 7, 5, 2, 6, 4]): 1.0} >>> print(qa.qs)
QuantumCircuit: -------------- qa.0: ────────────X────────────────────── │ qa.1: ──────X─────┼────────────────────── │ │ qa.2: ──────┼──X──┼────────────────────── ┌───┐ │ │ │ qa_1.0: ┤ X ├─┼──┼──X────────────────────── └───┘ │ │ qa_1.1: ──────X──┼───────────────────────── │ qa_1.2: ─────────X───────────────────────── qa_2.0: ───────────────────────────X─────── ┌───┐ │ qa_2.1: ┤ X ├──────────────────────┼──X──── └───┘ │ │ qa_2.2: ───────────────────────────┼──┼──X─ ┌───┐ │ │ │ qa_3.0: ┤ X ├──────────X───────────┼──┼──┼─ ├───┤ │ │ │ │ qa_3.1: ┤ X ├──────────┼──X────────┼──┼──┼─ └───┘ │ │ │ │ │ qa_3.2: ───────────────┼──┼──X─────┼──┼──┼─ │ │ │ │ │ │ qa_4.0: ──────X────────┼──┼──┼─────┼──┼──┼─ │ │ │ │ │ │ │ qa_4.1: ──────┼──X─────┼──┼──┼─────┼──┼──┼─ ┌───┐ │ │ │ │ │ │ │ │ qa_4.2: ┤ X ├─┼──┼──X──┼──┼──┼─────┼──┼──┼─ ├───┤ │ │ │ │ │ │ │ │ │ qa_5.0: ┤ X ├─X──┼──┼──┼──┼──┼──X──X──┼──┼─ └───┘ │ │ │ │ │ │ │ │ qa_5.1: ─────────X──┼──┼──┼──┼──┼──X──X──┼─ ┌───┐ │ │ │ │ │ │ │ qa_5.2: ┤ X ├───────X──┼──┼──┼──┼──┼──X──X─ └───┘ │ │ │ │ │ │ qa_6.0: ───────────────┼──┼──┼──┼──┼──┼──── ┌───┐ │ │ │ │ │ │ qa_6.1: ┤ X ├──────────┼──┼──┼──┼──┼──┼──── ├───┤ │ │ │ │ │ │ qa_6.2: ┤ X ├──────────┼──┼──┼──┼──┼──┼──── ├───┤ │ │ │ │ │ │ qa_7.0: ┤ X ├──────────X──┼──┼──X──┼──┼──── ├───┤ │ │ │ │ qa_7.1: ┤ X ├─────────────X──┼─────X──┼──── ├───┤ │ │ qa_7.2: ┤ X ├────────────────X────────X──── └───┘ Live QuantumVariables: --------------------- QuantumFloat qa QuantumFloat qa_1 QuantumFloat qa_2 QuantumFloat qa_3 QuantumFloat qa_4 QuantumFloat qa_5 QuantumFloat qa_6 QuantumFloat qa_7