예제 #1
0
        public void RemoveZeroDegreeNodes()
        {
            var toDelete = OutgoingEdges.Keys.Where(vertex => !OutgoingEdges[vertex].Any() && !IncomingEdges[vertex].Any());

            foreach (var vertex in toDelete)
            {
                OutgoingEdges.Remove(vertex);
                IncomingEdges.Remove(vertex);
            }
        }
예제 #2
0
 /// <summary>
 /// Removes the edge.
 /// </summary>
 /// <param name="edge">The edge.</param>
 /// <returns>This</returns>
 public Vertex <T> RemoveEdge(Edge <T> edge)
 {
     if (edge.Sink == this)
     {
         IncomingEdges.Remove(edge);
     }
     else
     {
         OutgoingEdges.Remove(edge);
     }
     return(this);
 }
예제 #3
0
 public bool RemoveVertex(TVertex vertex)
 {
     if (!OutgoingEdges.ContainsKey(vertex))
     {
         return(false);
     }
     foreach (var other in OutgoingEdges[vertex].Keys)
     {
         IncomingEdges[other].Remove(vertex);
     }
     foreach (var other in IncomingEdges[vertex].Keys)
     {
         OutgoingEdges[other].Remove(vertex);
     }
     OutgoingEdges.Remove(vertex);
     IncomingEdges.Remove(vertex);
     return(true);
 }
 public bool Remove(DirectedEdge <T, DirectedVertex <T> > edge)
 {
     return(IncomingEdges.Remove(edge) |
            OutgoingEdges.Remove(edge));
 }