June 06 meeting algorithm
while circuit is not empty used qubits = ∅ for gate ∈ available gates if gate can be performed perform gate and remove from circuit used qubits ⟵ used qubits υ {gate[0], gate[1]}
for gate ∈ remaining available gates
for qubit∈gate and qubit is not used
if ∃"excellent" neighbor ∈ Neighbors(gate) and neighbor is not used
swap qubit with "excellent" neighbor
used qubits ⟵ used qubits υ {qubit, neighbor}
else if ∃"good" neighbor ∈ Neighbors(gate) and neighbor is not used
swap qubit with "good" neighbbor
used qubits ⟵ used qubits υ {qubit, neighbor}
else
// do nothing