Exemplo n.º 1
0
        private static void Main(string[] args)
        {
            RenderLicense();

            Graph<Node> g = GraphGenerator.GetGraph(Shape.Large).Map(v => new Node { Label = v, Filled = false });
            Graph<Node> d = g.GetDominatingSet();

            RenderGraph(g);
            RenderGraph(g.Map(n => new Node { Color = n.Color, Label = n.Label, Filled = d.Vertices.Contains(n) }));

            g = new Graph<Node>();
            Random r = new Random();
            var nodes = Enumerable.Range(0, r.Next(26)).ToDictionary(_ => _, _ => new Node {Label = ('A' + _).ToString(), Filled = false});
            foreach (var n in nodes.Values) {
                g.Add(n);
            }
            for (int i = 0; i < nodes.Count; i++) {
                for (int j = i + 1; j < nodes.Count; j++) {
                    if (r.NextDouble() < 0.16) {
                        g.Add(new Edge<Node>(nodes[i], nodes[j]));
                    }
                }
            }
            RenderGraph(g);
            d = g.GetDominatingSet();
            RenderGraph(g.Map(n => new Node { Color = n.Color, Label = n.Label, Filled = d.Vertices.Contains(n) }));
        }
Exemplo n.º 2
0
        public void Graph_Map()
        {
            Graph<TypeA> g = new Graph<TypeA>();
            var a = new TypeA { Label = "A" };
            var b = new TypeA { Label = "B" };
            var c = new TypeA { Label = "C" };
            var edge = new Edge<TypeA>(b, c);
            g.Add(a);
            g.Add(b);
            g.Add(c);
            g.Add(edge);

            Func<TypeA, TypeB> map = _ => new TypeB {Label = _.Label};
            Graph<TypeB> h = g.Map(map);

            Assert.IsTrue(g.Vertices.All(v => h.Vertices.Any(w => w.Label == v.Label)));
            Assert.IsFalse(g.Vertices.Any(v => h.Vertices.All(w => w.Label != v.Label)));
        }