public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { GraphPathVM g = value as GraphPathVM; if (g == null) { return(string.Empty); } if (!g.Edges.Any()) { return(string.Empty); } StringBuilder sb = new StringBuilder(); sb.Append(g.Edges.First().Begin.Name); foreach (var edge in g.Edges) { sb.Append(" -> "); sb.Append(edge.End.Name); } return(sb.ToString()); }
public static GraphPathVM GeneratePath(GraphVM graph, Individual individual) { GraphPathVM path = new GraphPathVM(graph); for (uint i = 1; i < individual.Length; i++) { var b = (int)individual[i]; var p = (int)individual[i - 1]; var edge = new GraphEdgeVM() { Begin = graph.Nodes[p], End = graph.Nodes[b], }; path.Edges.Add(edge); } // add last - first path.Edges.Add(new GraphEdgeVM() { Begin = path.Edges.Last().End, End = path.Edges.First().Begin, }); foreach (var edge in path.Edges) { if (!path.Nodes.Contains(edge.Begin)) { path.Nodes.Add(edge.Begin); } if (!path.Nodes.Contains(edge.End)) { path.Nodes.Add(edge.End); } } return(path); }