ó
    Óz	i"  ã                  óL   • S r SSKJr  SSKrSSKJr  SSKJrJ	r	  SS jr
SS jrg)	z@Synthesis algorithm for Permutation gates for full-connectivity.é    )ÚannotationsN)ÚQuantumCircuit)Ú_synth_permutation_basicÚ_synth_permutation_acgc                ó>   • [         R                  " [        U 5      SS9$ )a  Synthesize a permutation circuit for a fully-connected
architecture using sorting.

More precisely, if the input permutation is a cycle of length ``m``,
then this creates a quantum circuit with ``m-1`` SWAPs (and of depth ``m-1``);
if the input  permutation consists of several disjoint cycles, then each cycle
is essentially treated independently.

Args:
    pattern: Permutation pattern, describing
        which qubits occupy the positions 0, 1, 2, etc. after applying the
        permutation. That is, ``pattern[k] = m`` when the permutation maps
        qubit ``m`` to position ``k``. As an example, the pattern ``[2, 4, 3, 0, 1]``
        means that qubit ``2`` goes to position ``0``, qubit ``4`` goes to
        position ``1``, etc.

Returns:
    The synthesized quantum circuit.
T©Úlegacy_qubits)r   Ú_from_circuit_datar   ©Úpatterns    Úg/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/synthesis/permutation/permutation_full.pyÚsynth_permutation_basicr      s   € ô( ×,Ò,Ô-EÀgÓ-NÐ^bÑcÐcó    c                ó>   • [         R                  " [        U 5      SS9$ )uå  Synthesize a permutation circuit for a fully-connected
architecture using the Alon, Chung, Graham method.

This produces a quantum circuit of depth 2 (measured in the number of SWAPs).

This implementation is based on the Proposition 4.1 in reference [1] with
the detailed proof given in Theorem 2 in reference [2]

Args:
    pattern: Permutation pattern, describing
        which qubits occupy the positions 0, 1, 2, etc. after applying the
        permutation. That is, ``pattern[k] = m`` when the permutation maps
        qubit ``m`` to position ``k``. As an example, the pattern ``[2, 4, 3, 0, 1]``
        means that qubit ``2`` goes to position ``0``, qubit ``4`` goes to
        position ``1``, etc.

Returns:
    The synthesized quantum circuit.

References:
    1. N. Alon, F. R. K. Chung, and R. L. Graham.
       *Routing Permutations on Graphs Via Matchings.*,
       Proceedings of the Twenty-Fifth Annual ACM Symposium on Theory of Computing(1993).
       Pages 583â€“591.
       `(Extended abstract) 10.1145/167088.167239 <https://doi.org/10.1145/167088.167239>`_
    2. N. Alon, F. R. K. Chung, and R. L. Graham.
       *Routing Permutations on Graphs Via Matchings.*,
       `(Full paper) <https://www.cs.tau.ac.il/~nogaa/PDFS/r.pdf>`_
Tr   )r   r
   r   r   s    r   Úsynth_permutation_acgr   0   s   € ô< ×,Ò,Ô-CÀGÓ-LÐ\`ÑaÐar   )r   zlist[int] | np.ndarray[int]Úreturnr   )Ú__doc__Ú
__future__r   ÚnumpyÚnpÚqiskit.circuit.quantumcircuitr   Ú(qiskit._accelerate.synthesis.permutationr   r   r   r   © r   r   Ú<module>r      s%   ðñ Gå "ã Ý 8÷ôdõ.br   