protected override void Init()
 {
     Graph.UpdateEvenCycles();
     Cycles            = new List <Cycle>(Graph.EvenCycles);
     LargestFirstOrder = new List <Vertex>(Graph.Vertices);
     LargestFirstOrder.Sort((v1, v2) => v2.Edges.Count.CompareTo(v1.Edges.Count));
 }
示例#2
0
 protected override void Init()
 {
     GraphCopy = new Graph(Graph);
     GraphCopy.UpdateEvenCycles();
     Cycles            = new List <Cycle>(GraphCopy.EvenCycles);
     n                 = Cycles.Count;
     LargestFirstOrder = new List <Vertex>(GraphCopy.Vertices);
 }
示例#3
0
        protected override StepResult MakeStep()
        {
            var oldV = Graph.Vertices[stepNumber];

            NewGraph.AddVertex(oldV);
            NewGraph.UpdateEvenCycles();
            var v      = NewGraph.Vertices[stepNumber];
            var banned = (from e in v.Edges select e.Color);

            foreach (var c in v.EvenCycles)
            {
                if (c.Colors.Keys.Count == 2)
                {
                    banned = banned.Concat(c.Colors.Keys);
                }
            }
            v.Color    = v.FindMinColor(banned.ToList());
            oldV.Color = v.Color;
            return(new StepResult(oldV, stepNumber < Graph.Vertices.Count - 1));
        }