Beispiel #1
0
        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);
        }
Beispiel #2
0
 /// <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);
 }