public IList <Edge> GetEdges(LocalArrangement localArrangement, int u) { if (localArrangement == null) { return(g.GetEdges(u)); } var vs = localArrangement.ToArray(); var edges = new List <Edge>(vs.Length); foreach (int v in vs) { edges.Add(g.CreateEdge(u, v)); } return(edges); }
/// <summary> /// Create the current local arrangement for vertex 'u' - if the arrangment /// already exists then that arrangement is used. /// </summary> /// <param name="u">vertex to get the arrangement around</param> /// <returns>current local arrangement</returns> private LocalArrangement CreateArrangement(int u) { if (!arrangement.TryGetValue(u, out LocalArrangement la)) { la = new LocalArrangement(); int d = g.Degree(u); for (int j = 0; j < d; ++j) { Edge e = g.EdgeAt(u, j); la.Add(e.Other(u)); } arrangement[u] = la; } return(la); }