/* * Instancia um novo grafo por lista de adjacencia * Apartir de uma lista de vertices e uma lista de arestas * E presiso informar se o grafo gerado sera ou não direcionado, e sua função de comparação */ public Graph(List <Vertex <T> > vertices, List <Edge <T> > edges, CompareToDelegate <T> compareToDelegate, bool isDirected = false) { this.compareToDelegate = compareToDelegate; this.isDirected = isDirected; Clean(); foreach (Vertex <T> vertex in vertices) { AddVertex(vertex.value); } foreach (Edge <T> edge in edges) { AddEdge(edge.from.value, edge.to.value, edge.weight); } }
public AdjacencyMatrix(List <Vertex <T> > vertices, List <Edge <T> > edges, CompareToDelegate <T> compareToDelegate, bool isDirected = false) : base(vertices, edges, compareToDelegate, isDirected) { }
public AdjacencyMatrix(CompareToDelegate <T> compareToDelegate, bool isDirected = false) : base(compareToDelegate, isDirected) { Clean(); }
public Graph(CompareToDelegate <T> compareToDelegate, bool isDirected = false) { this.compareToDelegate = compareToDelegate; this.isDirected = isDirected; }
/* * Instanciar um novo grafo por lista de adjacencia vaziu * Exige apenas a informação de se o grafo sera ou não direcionado e a sua função de comparação */ public AdjacencyList(CompareToDelegate <T> compareToDelegate, bool isDirected = false) : base(compareToDelegate, isDirected) { adjList = new Dictionary <Vertex <T>, List <Edge <T> > >(); }
public Vertex(T value, CompareToDelegate <T> compareTo) { this.compareTo = compareTo; this.value = value; }