Skip to content

Instantly share code, notes, and snippets.

@primaryobjects
Last active August 5, 2021 19:37
Show Gist options
  • Save primaryobjects/10009f68a870b3945033180a29a41a16 to your computer and use it in GitHub Desktop.
Save primaryobjects/10009f68a870b3945033180a29a41a16 to your computer and use it in GitHub Desktop.
A quantum computing circuit to swap two bits in Qiskit.
def swap(b, a):
"""
A quantum circuit that swaps the input bits.
01 => 10
"""
swap = QuantumCircuit(2, 2)
if a:
swap.x(0)
if b:
swap.x(1)
swap.cx(0, 1)
swap.cx(1, 0)
swap.cx(0, 1)
swap.measure_all()
job = qiskit.execute(swap, qiskit.BasicAer.get_backend('qasm_simulator'))
return job.result().get_counts()
def swap_test(b, a):
# Set our input bits to be swapped.
input = [b, a]
# Create a string version '10'.
input_str = '{}{}'.format(input[0], input[1])
# Swap the bits.
output = swap(input[0], input[1])
# Create a string version of the output '01'.
output_str = list(output.keys())[0].split(' ')[0]
# Verify the output.
print('{} => {} ? {}'.format(input_str, output_str, input_str[::-1] == output_str))
swap_test(0, 0)
swap_test(1, 0)
swap_test(0, 1)
swap_test(1, 1)
Note, input/output bits are read from right to left.
00 => 00 ? True
10 => 01 ? True
01 => 10 ? True
11 => 11 ? True

Quantum Circuit to Swap Bits

An example of swapping two bits from input to output in Qiskit.

Demo on IBM Quantum Composer.

Calculating Depth

[0 0]
X1: [0, 1]
CX1: [1, 2]
CX2: [3, 3]
CX3: [4, 4]
M1: [5,4]
M2: [5,5]
print(swap.depth())
# 5
@primaryobjects
Copy link
Author

swap

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment