Пример #1
0
    private void AddEdges(GraphToColor graph, IEnumerable <XmlNode> inputNodes)
    {
        var intInput = inputNodes
                       .Select(vertex => vertex.ChildNodes)
                       .Select(
            firstSecond
            => Tuple.Create(int.Parse(firstSecond.Item(0).InnerText),
                            int.Parse(firstSecond.Item(1).InnerText)));

        foreach (var(item1, item2) in intInput)
        {
            graph.AddEdge(item1, item2);
        }
    }
Пример #2
0
    private void CheckResultColoring(GraphToColor graph, int[] resultColoring)
    {
        var dictKeysValues = graph.GetAdjacencyDictKeysValues();

        foreach (var(currentVertex, adjacentVertexes) in dictKeysValues)
        {
            foreach (var vertex in adjacentVertexes)
            {
                if (vertex != currentVertex && resultColoring[vertex] == resultColoring[currentVertex])
                {
                    Assert.Fail($"Adjacent vertexes with the same color: {vertex} {currentVertex}");
                }
            }
        }
    }
Пример #3
0
    public void GraphColoringTest(string input)
    {
        var docXml = new XmlDocument();

        docXml.LoadXml(input);
        var inputXmlNodes = docXml
                            .DocumentElement
                            .ChildNodes
                            .OfType <XmlNode>()
                            .ToArray();

        var graph = new GraphToColor(int.Parse(inputXmlNodes.First().InnerText));

        AddEdges(graph, inputXmlNodes.Skip(1));

        CheckResultColoring(graph, graph.GreedyColoring());
    }
Пример #4
0
    public static void Main(string[] args)
    {
        var graph = new GraphToColor(5);

        // graph.AddEdge(0, 1);
        // graph.AddEdge(0, 2);
        // graph.AddEdge(1, 2);
        // graph.AddEdge(1, 4);
        // graph.AddEdge(2, 4);
        // graph.AddEdge(4, 3);

        graph.AddEdge(0, 1);
        graph.AddEdge(0, 2);
        graph.AddEdge(1, 2);
        graph.AddEdge(1, 3);
        graph.AddEdge(2, 3);
        graph.AddEdge(3, 4);

        Console.Write(string.Join(" ", graph.GreedyColoring()));
    }