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)); }
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); }
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)); }