static void FindOptimalAlignment(KeyValuePair <List <string>, int> trace, PetriNet minedNet, int transitionId, string alignment) { var optimal = minedNet.GetValidShortestPath(transitionId, minedNet.GetSinkPlace()); for (int i = 0; i < optimal.Count; i++) { // Console.WriteLine(minedNet.TransitionIdToName(optimal[i])); alignment = alignment + minedNet.TransitionIdToName(optimal[i]) + " - "; } var traceString = ""; foreach (var step in trace.Key) { traceString = traceString + step + " - "; } Console.WriteLine("Deviating trace: " + traceString.Substring(0, traceString.Length - 3)); Console.WriteLine("Optimal alignment: " + alignment.Substring(0, alignment.Length - 3)); //Console.WriteLine(trace); //Console.WriteLine("Cost of the optimal alignment: "); }