Example #1
0
        public void GreedySimple()
        {
            var vertices = Generator.VerticesInIdRange(0, 6);
            var graph    = new MutableGraph();

            graph.Vertices.AddRange(vertices);
            graph.ConnectAll(vertices[0], vertices[3]);
            graph.ConnectAll(vertices[0], vertices[4]);
            graph.ConnectAll(vertices[0], vertices[5]);
            graph.ConnectAll(vertices[1], vertices[3]);
            graph.ConnectAll(vertices[1], vertices[4]);
            graph.ConnectAll(vertices[1], vertices[5]);
            graph.ConnectAll(vertices[2], vertices[3]);
            graph.ConnectAll(vertices[2], vertices[4]);
            graph.ConnectAll(vertices[2], vertices[5]);

            var coloring = graph.ToImmutable().ColorGreedily();

            Assert.Equal(1, coloring[0]);
            Assert.Equal(1, coloring[1]);
            Assert.Equal(1, coloring[2]);
            Assert.Equal(2, coloring[3]);
            Assert.Equal(2, coloring[4]);
            Assert.Equal(2, coloring[5]);
        }
Example #2
0
        public void ColoringOptimization()
        {
            var vertices = Generator.VerticesInIdRange(0, 3);
            var graph    = new MutableGraph();

            graph.Vertices.AddRange(vertices);
            graph.ConnectAll(vertices[0], vertices[1]);
            graph.ConnectAll(vertices[0], vertices[2]);

            var coloring = graph.ToImmutable().ColorGreedily();

            var originalCost = coloring.SummaryCost;

            var optimizedColoring = coloring.OptimizeByWeighting();

            var optimizedCost = optimizedColoring.SummaryCost;

            Assert.Equal(5, originalCost);
            Assert.Equal(4, optimizedCost);
        }
Example #3
0
 public static int Of(TypeMetricsReport type, MutableGraph <TypeMetricsReport> graph)
 {
     return(type.GetDirectAndIndirectDependencies(graph)
            .Count(t => !t.CompilerGenerated));
 }
Example #4
0
 private static IEnumerable <TypeMetricsReport> GetDirectAndIndirectDependencies(this TypeMetricsReport type, MutableGraph <TypeMetricsReport> graph)
 {
     return(graph.Reach(type).Vertices);
 }
 private static IEnumerable<TypeMetricsReport> GetDirectAndIndirectDependencies(this TypeMetricsReport type, MutableGraph<TypeMetricsReport> graph)
 {
     return graph.Reach(type).Vertices;
 }
 public static int Of(TypeMetricsReport type, MutableGraph<TypeMetricsReport> graph)
 {
     return type.GetDirectAndIndirectDependencies(graph)
         .Count(t => !t.CompilerGenerated);
 }
 public static StronglyConntectedComponents <NamespaceMetricsWithTypeMetrics> In(MutableGraph <NamespaceMetricsWithTypeMetrics> graph)
 {
     return(graph.Cycles());
 }
Example #8
0
 public static StronglyConntectedComponents<NamespaceMetricsWithTypeMetrics> In(MutableGraph<NamespaceMetricsWithTypeMetrics> graph)
 {
     return graph.Cycles();
 }