public static Graph <int> FromFile(string path, bool isDirected) { var g = new Graph <int>(); using (var stream = File.OpenRead(path)) { using (var reader = new StreamReader(stream)) { string line; while ((line = reader.ReadLine()) != null) { var vertices = line.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); if (vertices.Any()) { var v = g.GetOrCreateVertex(int.Parse(vertices[0])); foreach (var adj in vertices.Skip(1)) { var tokens = adj.Split(','); if (tokens.Length == 2) { int i2 = int.Parse(tokens[0]); int weight = int.Parse(tokens[1]); var v2 = g.GetOrCreateVertex(i2); v.AddEdge(v2.Key, weight); } } } } } } g.IsDirected = isDirected; return(g); }
public static Graph<int> FromFile(string path, bool isDirected) { var g = new Graph<int>(); using (var stream = File.OpenRead(path)) { using (var reader = new StreamReader(stream)) { string line; while ((line = reader.ReadLine() ) != null) { var vertices = line.Split(new[] {' ', '\t'}, StringSplitOptions.RemoveEmptyEntries); if (vertices.Any()) { var v = g.GetOrCreateVertex(int.Parse(vertices[0])); foreach (var adj in vertices.Skip(1)) { var tokens = adj.Split(','); if (tokens.Length == 2) { int i2 = int.Parse(tokens[0]); int weight = int.Parse(tokens[1]); var v2 = g.GetOrCreateVertex(i2); v.AddEdge(v2.Key, weight); } } } } } } g.IsDirected = isDirected; return g; }
public void TestSmallGraph() { var g = new Graph<int>(); for (int i = 0; i < 4; ++i) g.GetOrCreateVertex(i); g.Get(0).AddEdge(1, 1); g.Get(0).AddEdge(2, 3); g.Get(1).AddEdge(2, 1); g.Get(1).AddEdge(3, 3); g.Get(2).AddEdge(3, 1); var algorithm = new Dijkstra<int>(g, 0); algorithm.Run(); Assert.AreEqual(0, g.Get(0).Score); Assert.AreEqual(1, g.Get(1).Score); Assert.AreEqual(2, g.Get(2).Score); Assert.AreEqual(3, g.Get(3).Score); }
public void TestSmallGraph() { var g = new Graph <int>(); for (int i = 0; i < 4; ++i) { g.GetOrCreateVertex(i); } g.Get(0).AddEdge(1, 1); g.Get(0).AddEdge(2, 3); g.Get(1).AddEdge(2, 1); g.Get(1).AddEdge(3, 3); g.Get(2).AddEdge(3, 1); var algorithm = new Dijkstra <int>(g, 0); algorithm.Run(); Assert.AreEqual(0, g.Get(0).Score); Assert.AreEqual(1, g.Get(1).Score); Assert.AreEqual(2, g.Get(2).Score); Assert.AreEqual(3, g.Get(3).Score); }