It's been a little while since I've done a Dijkstra's Algorithm implementation but you can represent your data in a few ways. You can have a list of lists, for example, or an array of lists. You could then treat the array index as the vertex label and the list as the list of arrays that it's connected to.
public class Node
{
public int Weight { get; set; }
public int Connected { get; set; }
}
// You can use either an array of lists or a list of lists
List<List<Node>> graph = new List<List<Node>>();
// The index is the edge label - e.g. arr[0] is the edge labeled "0"
graph[0] = new List<Node>()
{
new Node() { Weight = 175, Connected = 1 },
new Node() { Weight= 100, Connected = 2 }
// Etc...
};
graph[1] = new List<Node>()
{
// Basically, to represent an undirected edge you're representing two weighted edges
// (i.e. a connection from 1 -> 2 and a connection from 2 -> 1)
// This also makes directed edges easy to represent
new Node() { Weight = 175, Connected = 1 }
// Etc...
};
You can also, for example, have a list (or set) of vertices and a list of edges. (In fact, in the formal mathematical sense, that is the actual definition of a graph - a set of edges and a set of vertices).
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments