public static IEnumerable <IVertice <T> > GetAdjacents <T>(this IVertice <T> vertice)
 {
     foreach (var e in vertice.Edges)
     {
         yield return(e.VerticeA == vertice ? e.VerticeB : e.VerticeA);
     }
 }
Exemple #2
0
 public Edge(string id, IVertice <T> verticeA, IVertice <T> verticeB, T cost)
 {
     this.verticeA = verticeA;
     this.verticeB = verticeB;
     this.cost     = cost;
     this.id       = id;
 }
Exemple #3
0
        public Edge(IVertice <T> verticeA, IVertice <T> verticeB, T cost)
        {
            this.verticeA = verticeA;
            this.verticeB = verticeB;
            this.cost     = cost;
            var id = verticeA.ID[0] < verticeB.ID[0] ? verticeA.ID : verticeB.ID;

            id     += VerticeA.ID == id ? verticeA.ID : verticeA.ID;
            this.id = id;
        }
 public static bool Connected <T>(this IVertice <T> vertice, IVertice <T> adjacent)
 {
     foreach (var e in vertice.Edges)
     {
         if (e.HasVertice(adjacent))
         {
             return(true);
         }
     }
     return(false);
 }
 public IEdge <T> Connect(IVertice <T> vertice, T cost)
 {
     if (vertice != this && !this.Connected(vertice))
     {
         var edge = new Edge <T>(this, vertice, cost);
         edges.Add(edge);
         vertice.Edges.Add(edge);
         return(edge);
     }
     return(null);
 }
Exemple #6
0
 public static IEdge <T> FindEdge <T>(this IGraph <T> graph, IVertice <T> verticeA, IVertice <T> verticeB)
 {
     foreach (var e in verticeA.Edges)
     {
         if (e.HasVertice(verticeB))
         {
             return(e);
         }
     }
     return(null);
 }
 public IEdge <int> Connect(IVertice <int> vertice, int cost)
 {
     if (vertice != this && !this.Connected(vertice))
     {
         var edge = new EdgeControl(this, (VerticeControl)vertice, cost);
         edges.Add(edge);
         vertice.Edges.Add(edge);
         return(edge);
     }
     return(null);
 }
Exemple #8
0
 public static bool HasVertice <T>(this IEdge <T> edge, IVertice <T> vertice)
 {
     return(edge.VerticeA == vertice || edge.VerticeB == vertice);
 }