Beispiel #1
0
        public static BE.Graph Isolate(BE.Graph graph, string root)
        {
            var edges = new List <BE.Edge>();

            AddDescendents(edges, graph, root);
            return(new BE.Graph {
                Nodes = GetNodes(edges), Edges = edges.ToArray()
            });
        }
Beispiel #2
0
        private static void AddDescendents(List <BE.Edge> edges, BE.Graph graph, string root)
        {
            var more = graph.Edges
                       .Where(edge => edge.Source.Equals(root) &&
                              !edges.Exists(o => o.Source.Equals(edge.Source) && o.Target.Equals(edge.Target)))
                       .ToList();

            if (more.Count > 0)
            {
                edges.AddRange(more);
                foreach (var edge in more)
                {
                    AddDescendents(edges, graph, edge.Target);
                }
            }
        }
Beispiel #3
0
        internal static string GraphToTgf(BE.Graph graph)
        {
            var nodes = graph.Nodes;
            var edges = graph.Edges;
            var sb    = new StringBuilder();

            for (var i = 0; i < nodes.Length; i++)
            {
                sb.AppendFormat("{0} {1}", i, nodes[i]);
                sb.AppendLine();
            }

            sb.AppendLine("#");

            foreach (var edge in edges)
            {
                sb.AppendFormat("{0} {1}", Array.IndexOf(nodes, edge.Source), Array.IndexOf(nodes, edge.Target));
                sb.AppendLine();
            }

            return(sb.ToString());
        }