Exemple #1
0
        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());
        }
Exemple #2
0
        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);
        }