/// <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));
     }
 }