示例#1
0
        protected static UndirectedGraph <string, TaggedEdge <string, double> > GetUndirectedCompleteGraph(int vertex)
        {
            var random    = new QuikGraph.Utils.CryptoRandom();
            var graph     = new UndirectedGraph <string, TaggedEdge <string, double> >();
            var trueGraph = new UndirectedGraph <string, TaggedEdge <string, double> >();
            var sets      = new ForestDisjointSet <string>(vertex);

            for (int i = 0; i < vertex; ++i)
            {
                graph.AddVertex(i.ToString());
                trueGraph.AddVertex(i.ToString());
                sets.MakeSet(i.ToString());
            }

            for (int i = 0; i < vertex; ++i)
            {
                for (int j = i + 1; j < vertex; ++j)
                {
                    graph.AddEdge(
                        new TaggedEdge <string, double>(
                            i.ToString(),
                            j.ToString(),
                            random.Next(100)));
                }
            }

            return(graph);
        }
        public void EdgeCondensation()
        {
            var rand = new QuikGraph.Utils.CryptoRandom(123456);

            foreach (BidirectionalGraph <string, Edge <string> > graph in TestGraphFactory.GetBidirectionalGraphs_SlowTests())
            {
                RunEdgesCondensationAndCheck(graph, v => true);
                RunEdgesCondensationAndCheck(graph, v => rand.Next(0, 1) == 1);
            }
        }
示例#3
0
        public void ToDirectedGraphML_WithColors()
        {
            var random = new QuikGraph.Utils.CryptoRandom(123456);

            foreach (AdjacencyGraph <string, Edge <string> > graph in TestGraphFactory.GetAdjacencyGraphs_All())
            {
                Dictionary <string, GraphColor> vertexColors = graph.Vertices.ToDictionary(
                    vertex => vertex,
                    vertex => (GraphColor)random.Next(0, 3));

                DirectedGraph directedGraph = graph.ToDirectedGraphML(
                    vertex =>
                {
                    Assert.IsNotNull(vertex);
                    return(vertexColors[vertex]);
                });
                Assert.IsNotNull(graph);

                AssertGraphContentEquivalent(graph, directedGraph);

                foreach (DirectedGraphNode node in directedGraph.Nodes)
                {
                    Assert.AreEqual(
                        ColorToStringColor(vertexColors[node.Id]),
                        node.Background);
                }
            }

            #region Local function

            string ColorToStringColor(GraphColor color)
            {
                switch (color)
                {
                case GraphColor.Black:
                    return("Black");

                case GraphColor.Gray:
                    return("LightGray");

                case GraphColor.White:
                    return("White");

                default:
                    Assert.Fail("Unknown color.");
                    return(string.Empty);
                }
            }

            #endregion
        }