/// <summary> /// Execute this naive transformation algorithm. /// </summary> protected override void Execute() { // TODO naive transformation foreach (Gate g in LogicalCircuit.Gates) { if (!g.CanBeExecutedOn(Architecture, Mapping)) { List <int> path = Architecture.GetShortestPath(g.GetQubits()[0], g.GetQubits()[1]); // Is always a cnot gate normally for (int i = path.Count - 1; i >= 1; i--) { AddSwapToCircuit(Mapping.Map[path[i]], Mapping.Map[path[i - 1]]); } } PhysicalCircuit.AddGate(g.Map(Mapping)); } }