public void WeakVertices_in_3v_where_Graph_Is_Triangle() { int size = 3; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(0); // добавляем вершины testGraph.AddVertex(10); testGraph.AddVertex(20); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 2); testGraph.AddEdge(1, 2); List <Vertex <int> > WeakList = testGraph.WeakVertices(); int expectedCount = 0; int actualCount = WeakList.Count; if (WeakList.Count != 0) { WeakList.ForEach((item) => Console.Write("{0} ", item.Value)); } else { Console.WriteLine("[]"); } Assert.IsNotNull(WeakList); Assert.AreEqual(expectedCount, actualCount); }
public void SimpleGraphTest() { //SimpleGraph graph = new SimpleGraph(4); int[] arr = { 10, 15, 21, 23 }; foreach (int item in arr) { graph.AddVertex(item); for (int i = 0; i < graph.max_vertex; i++) { if (graph.vertex[i] != null) { if (graph.vertex[i].Value == item) { for (int j = 0; j < graph.max_vertex; j++) { if (graph.IsEdge(i, j)) { Assert.Fail(); } } } } } } }
/* * 0 1 2 3 4 5 6 7 8 9 * * * 0 0 1 1 0 1 0 0 0 0 0 * * 1 1 0 0 0 0 0 0 1 0 1 * * 2 1 0 0 1 0 0 0 0 0 0 * * 3 0 0 1 0 1 0 0 0 0 0 * * 4 1 0 0 1 0 1 0 0 0 0 * * 5 0 0 0 0 1 0 0 0 0 1 * * 6 0 0 0 0 0 0 0 1 0 1 * * 7 0 1 0 0 0 0 1 0 0 0 * * 8 0 0 0 0 0 0 0 0 0 0 * * 9 0 1 0 0 0 1 1 0 0 0 */ private SimpleGraph <int> GetGraphB() { SimpleGraph <int> graph = new SimpleGraph <int>(10); graph.AddVertex(0); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); graph.AddVertex(4); graph.AddVertex(5); graph.AddVertex(6); graph.AddVertex(7); graph.AddVertex(8); graph.AddVertex(9); graph.AddEdge(0, 1); graph.AddEdge(0, 2); graph.AddEdge(0, 4); graph.AddEdge(1, 7); graph.AddEdge(1, 9); graph.AddEdge(2, 3); graph.AddEdge(3, 4); graph.AddEdge(4, 5); graph.AddEdge(5, 9); graph.AddEdge(6, 7); graph.AddEdge(6, 9); return(graph); }
public void TestAddED_RemoveED_3() { SimpleGraph graph = new SimpleGraph(4); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); graph.AddVertex(4); graph.AddEdge(0, 1); graph.AddEdge(0, 2); graph.AddEdge(0, 3); graph.AddEdge(2, 3); Assert.IsFalse(graph.IsEdge(1, 3)); Assert.IsFalse(graph.IsEdge(1, 2)); Assert.IsTrue(graph.IsEdge(0, 1)); Assert.IsTrue(graph.IsEdge(0, 2)); Assert.IsTrue(graph.IsEdge(0, 3)); Assert.IsTrue(graph.IsEdge(2, 3)); graph.RemoveVertex(2); Assert.IsTrue(graph.vertex[2] == null); Assert.IsFalse(graph.IsEdge(0, 2)); Assert.IsFalse(graph.IsEdge(2, 0)); Assert.IsFalse(graph.IsEdge(3, 2)); }
public void BreadthFirstSearch_5_Vertex_Where_path_has_2v() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(0); // добавляем вершины testGraph.AddVertex(10); testGraph.AddVertex(20); testGraph.AddVertex(30); testGraph.AddVertex(40); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 3); testGraph.AddEdge(0, 4); testGraph.AddEdge(1, 2); testGraph.AddEdge(2, 3); testGraph.AddEdge(3, 4); List <Vertex <int> > vList = testGraph.BreadthFirstSearch(0, 4); // попытка построения пути из 0 (0) в 4 (40). vList.ForEach((item) => Console.Write(" {0}", item.Value)); Assert.IsNotNull(vList); Assert.IsTrue(vList.Count == 2); }
public void AddEdge_in_5v_Graph_If_v1_Is_not_Exists() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(19); testGraph.AddVertex(18); testGraph.AddVertex(17); testGraph.AddVertex(16); testGraph.AddEdge(0, 4); for (int i = 0; i < testGraph.m_adjacency.GetLength(0); i++) { for (int j = 0; j < testGraph.m_adjacency.GetLength(1); j++) { Console.Write(testGraph.m_adjacency[i, j] + " "); } Console.WriteLine(); } Assert.IsTrue(testGraph.vertex[0].Value == 19); // вершина не изменились Assert.IsTrue(testGraph.vertex[1].Value == 18); Assert.IsTrue(testGraph.vertex[2].Value == 17); Assert.IsTrue(testGraph.vertex[3].Value == 16); Assert.IsNull(testGraph.vertex[4]); // вершина не существует Assert.AreEqual(0, testGraph.m_adjacency[0, 4]); // ребро не добавлено к v0 Assert.AreEqual(0, testGraph.m_adjacency[4, 0]); // ребро не добавлено к v4 }
public void TestAddED_RemoveED_5() { SimpleGraph graph = new SimpleGraph(3); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); graph.AddEdge(0, 1); graph.AddEdge(0, 2); Assert.IsTrue(graph.m_adjacency[0, 1] == 1); Assert.IsTrue(graph.m_adjacency[0, 2] == 1); graph.RemoveEdge(0, 2); Assert.IsTrue(graph.m_adjacency[0, 1] == 1); Assert.IsTrue(graph.m_adjacency[0, 2] == 0); graph.AddEdge(2, 0); Assert.IsTrue(graph.m_adjacency[0, 1] == 1); Assert.IsTrue(graph.m_adjacency[0, 2] == 1); graph.RemoveEdge(2, 0); Assert.IsTrue(graph.m_adjacency[0, 1] == 1); Assert.IsTrue(graph.m_adjacency[2, 0] == 0); }
public void AddVertex_5v_in_5v_Graph() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(19); testGraph.AddVertex(18); testGraph.AddVertex(17); testGraph.AddVertex(16); testGraph.AddVertex(15); Assert.IsTrue(testGraph.vertex[0].Value == 19); Assert.IsTrue(testGraph.vertex[1].Value == 18); Assert.IsTrue(testGraph.vertex[2].Value == 17); Assert.IsTrue(testGraph.vertex[3].Value == 16); Assert.IsTrue(testGraph.vertex[4].Value == 15); Assert.AreEqual(size, testGraph.max_vertex); Assert.AreEqual(size, testGraph.vertex.Length); Assert.AreEqual(size, testGraph.m_adjacency.GetLength(0)); Assert.AreEqual(size, testGraph.m_adjacency.GetLength(1)); Assert.AreEqual(0, testGraph.m_adjacency[0, 0]); Assert.AreEqual(0, testGraph.m_adjacency[1, 0]); Assert.AreEqual(0, testGraph.m_adjacency[2, 0]); Assert.AreEqual(0, testGraph.m_adjacency[3, 0]); Assert.AreEqual(0, testGraph.m_adjacency[4, 0]); }
public void AddVertex() { var g = new SimpleGraph(10); g.AddVertex(1); g.AddVertex(2); Assert.True(!g.IsEdge(1, 2)); }
public void RemoveVertex_1v_in_5v_Graph() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(19); testGraph.AddVertex(18); testGraph.AddVertex(17); testGraph.AddVertex(16); testGraph.AddVertex(15); testGraph.AddEdge(0, 0); // добавление ребёр между вершинами testGraph.AddEdge(0, 1); testGraph.AddEdge(0, 2); testGraph.AddEdge(0, 3); testGraph.AddEdge(2, 1); testGraph.AddEdge(2, 3); for (int i = 0; i < testGraph.m_adjacency.GetLength(0); i++) { for (int j = 0; j < testGraph.m_adjacency.GetLength(1); j++) { Console.Write(testGraph.m_adjacency[i, j] + " "); } Console.WriteLine(); } Console.WriteLine(); testGraph.RemoveVertex(0); // удаление вершины for (int i = 0; i < testGraph.m_adjacency.GetLength(0); i++) { for (int j = 0; j < testGraph.m_adjacency.GetLength(1); j++) { Console.Write(testGraph.m_adjacency[i, j] + " "); } Console.WriteLine(); } Assert.AreEqual(0, testGraph.m_adjacency[0, 0]); // проверка удаления ребра вершины на саму себя Assert.AreEqual(0, testGraph.m_adjacency[0, 1]); // проверка удаления всех рёбер Assert.AreEqual(0, testGraph.m_adjacency[1, 0]); Assert.AreEqual(0, testGraph.m_adjacency[0, 2]); Assert.AreEqual(0, testGraph.m_adjacency[2, 0]); Assert.AreEqual(0, testGraph.m_adjacency[0, 3]); Assert.AreEqual(0, testGraph.m_adjacency[3, 0]); Assert.AreEqual(1, testGraph.m_adjacency[1, 2]); Assert.AreEqual(1, testGraph.m_adjacency[2, 1]); Assert.AreEqual(1, testGraph.m_adjacency[2, 3]); Assert.AreEqual(1, testGraph.m_adjacency[3, 2]); Assert.IsNull(testGraph.vertex[0]); // вершина удалена }
public void TestAddVertex() { Assert.IsNull(_graph.vertex[4]); _graph.AddVertex(5); Assert.IsNotNull(_graph.vertex[4]); for (int i = 0; i < _graph.max_vertex; i++) { Assert.AreEqual(0, _graph.m_adjacency[4, i]); Assert.AreEqual(0, _graph.m_adjacency[i, 4]); } }
public void TestAdd_Edge_1() { SimpleGraph graph = new SimpleGraph(5); graph.AddVertex(22); graph.AddVertex(5); graph.AddVertex(7); graph.AddEdge(0, 2); Assert.IsFalse(graph.IsEdge(1, 2)); Assert.IsFalse(graph.IsEdge(0, 1)); Assert.IsTrue(graph.IsEdge(0, 2)); }
public void AddEdge_5e_in_5v_Graph() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(19); testGraph.AddVertex(18); testGraph.AddVertex(17); testGraph.AddVertex(16); testGraph.AddVertex(15); Assert.IsTrue(testGraph.vertex[0].Value == 19); Assert.IsTrue(testGraph.vertex[1].Value == 18); Assert.IsTrue(testGraph.vertex[2].Value == 17); Assert.IsTrue(testGraph.vertex[3].Value == 16); Assert.IsTrue(testGraph.vertex[4].Value == 15); Assert.AreEqual(size, testGraph.max_vertex); Assert.AreEqual(size, testGraph.vertex.Length); Assert.AreEqual(size, testGraph.m_adjacency.GetLength(0)); Assert.AreEqual(size, testGraph.m_adjacency.GetLength(1)); Assert.AreEqual(0, testGraph.m_adjacency[0, 2]); Assert.AreEqual(0, testGraph.m_adjacency[2, 0]); testGraph.AddEdge(0, 1); // добавление ребра между вершинами testGraph.AddEdge(0, 2); testGraph.AddEdge(0, 3); testGraph.AddEdge(2, 1); testGraph.AddEdge(2, 3); for (int i = 0; i < testGraph.m_adjacency.GetLength(0); i++) { for (int j = 0; j < testGraph.m_adjacency.GetLength(1); j++) { Console.Write(testGraph.m_adjacency[i, j] + " "); } Console.WriteLine(); } Assert.AreEqual(1, testGraph.m_adjacency[0, 1]); Assert.AreEqual(1, testGraph.m_adjacency[0, 2]); Assert.AreEqual(1, testGraph.m_adjacency[0, 3]); Assert.AreEqual(1, testGraph.m_adjacency[1, 0]); Assert.AreEqual(1, testGraph.m_adjacency[1, 2]); Assert.AreEqual(1, testGraph.m_adjacency[2, 0]); Assert.AreEqual(1, testGraph.m_adjacency[2, 1]); Assert.AreEqual(1, testGraph.m_adjacency[2, 3]); Assert.AreEqual(1, testGraph.m_adjacency[3, 0]); Assert.AreEqual(1, testGraph.m_adjacency[3, 2]); }
public void AddVertex_1v_in_5v_Graph() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(5); testGraph.AddVertex(19); foreach (Vertex <int> item in testGraph.vertex) { if (item != null) { Console.Write(item.Value + ", "); } else { Console.Write("null, "); } } Assert.IsTrue(testGraph.vertex[0].Value == 19); Assert.AreEqual(size, testGraph.max_vertex); Assert.AreEqual(size, testGraph.vertex.Length); Assert.AreEqual(size, testGraph.m_adjacency.GetLength(0)); Assert.AreEqual(size, testGraph.m_adjacency.GetLength(1)); Assert.AreEqual(0, testGraph.m_adjacency[0, 0]); }
public void TestAddED_RemoveED_2() { SimpleGraph graph = new SimpleGraph(4); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); graph.AddVertex(4); graph.AddEdge(0, 1); graph.AddEdge(0, 2); graph.AddEdge(0, 3); graph.AddEdge(2, 3); Assert.IsFalse(graph.IsEdge(1, 3)); Assert.IsFalse(graph.IsEdge(1, 2)); Assert.IsTrue(graph.IsEdge(0, 1)); Assert.IsTrue(graph.IsEdge(0, 2)); Assert.IsTrue(graph.IsEdge(0, 3)); Assert.IsTrue(graph.IsEdge(2, 3)); graph.RemoveVertex(2); Assert.IsTrue(graph.vertex[2] == null); Assert.IsFalse(graph.IsEdge(0, 2)); Assert.IsFalse(graph.IsEdge(2, 0)); Assert.IsFalse(graph.IsEdge(2, 3)); Assert.IsFalse(graph.IsEdge(3, 2)); Assert.IsTrue(graph.vertex[0] != null); Assert.IsTrue(graph.vertex[1] != null); Assert.IsTrue(graph.vertex[2] == null); Assert.IsTrue(graph.vertex[3] != null); Assert.IsTrue(graph.m_adjacency[0, 0] == 0); Assert.IsTrue(graph.m_adjacency[0, 1] == 1); Assert.IsTrue(graph.m_adjacency[0, 2] == 0); Assert.IsTrue(graph.m_adjacency[0, 3] == 1); Assert.IsTrue(graph.m_adjacency[1, 0] == 1); Assert.IsTrue(graph.m_adjacency[1, 2] == 0); Assert.IsTrue(graph.m_adjacency[1, 3] == 0); Assert.IsTrue(graph.m_adjacency[2, 0] == 0); Assert.IsTrue(graph.m_adjacency[2, 1] == 0); Assert.IsTrue(graph.m_adjacency[2, 3] == 0); Assert.IsTrue(graph.m_adjacency[3, 0] == 1); Assert.IsTrue(graph.m_adjacency[3, 1] == 0); Assert.IsTrue(graph.m_adjacency[3, 2] == 0); }
public void TestAdd_1() { SimpleGraph graph = new SimpleGraph(5); graph.AddVertex(22); graph.AddVertex(5); graph.AddVertex(7); graph.AddVertex(41); graph.AddVertex(92); Assert.IsTrue(graph.vertex[0].Value == 22); Assert.IsTrue(graph.vertex[1].Value == 5); Assert.IsTrue(graph.vertex[2].Value == 7); Assert.IsTrue(graph.vertex[3].Value == 41); Assert.IsTrue(graph.vertex[4].Value == 92); Assert.IsFalse(graph.vertex[0].Value == 91); }
// TODO: граничные случаи public static void Main(string[] args) { var g = new SimpleGraph <int>(9); g.AddVertex(0); g.AddVertex(1); g.AddVertex(2); g.AddVertex(3); g.AddVertex(4); g.AddVertex(5); g.AddVertex(6); g.AddVertex(7); g.AddVertex(8); g.AddEdge(0, 1); g.AddEdge(0, 2); g.AddEdge(0, 3); g.AddEdge(0, 4); g.AddEdge(1, 0); g.AddEdge(1, 2); g.AddEdge(1, 6); g.AddEdge(2, 1); g.AddEdge(2, 0); g.AddEdge(2, 3); g.AddEdge(3, 2); g.AddEdge(3, 0); g.AddEdge(3, 4); g.AddEdge(3, 7); g.AddEdge(4, 0); g.AddEdge(4, 3); g.AddEdge(4, 5); g.AddEdge(5, 4); g.AddEdge(5, 6); g.AddEdge(5, 7); g.AddEdge(6, 1); g.AddEdge(6, 5); g.AddEdge(7, 5); g.AddEdge(7, 3); var result = g.BreadthFirstSearch(1, 5); Console.WriteLine(result); }
public void TestFirstSilly_1() { SimpleGraph <int> graph = new SimpleGraph <int>(5); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); graph.AddVertex(4); graph.AddVertex(5); graph.AddEdge(0, 1); graph.AddEdge(0, 4); graph.AddEdge(1, 2); graph.AddEdge(2, 3); graph.AddEdge(3, 4); List <Vertex <int> > list = graph.BreadthFirstSearch(0, 4); }
public void DepthFirstSearch_5_Vertex_where_1v_has_not_Adj() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(19); // добавляем вершины testGraph.AddVertex(18); testGraph.AddVertex(17); testGraph.AddVertex(16); testGraph.AddVertex(15); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 4); testGraph.AddEdge(1, 3); testGraph.AddEdge(3, 4); for (int i = 0; i < testGraph.m_adjacency.GetLength(0); i++) { for (int j = 0; j < testGraph.m_adjacency.GetLength(1); j++) { Console.Write(testGraph.m_adjacency[i, j] + " "); } Console.WriteLine(); } List <Vertex <int> > vList = testGraph.DepthFirstSearch(0, 2); // попытка построения пути из 0 (ключ 19) в 2 (ключ 17). List <Vertex <int> > vList2 = testGraph.DepthFirstSearch(1, 2); // 1 (ключ 18) в 2 (ключ 17). List <Vertex <int> > vList3 = testGraph.DepthFirstSearch(3, 2); // 3 (ключ 16) в 2 (ключ 17). List <Vertex <int> > vList4 = testGraph.DepthFirstSearch(4, 2); // 4 (ключ 15) в 2 (ключ 17). vList.ForEach((item) => Console.WriteLine(item.Value)); vList2.ForEach((item) => Console.WriteLine(item.Value)); vList3.ForEach((item) => Console.WriteLine(item.Value)); vList4.ForEach((item) => Console.WriteLine(item.Value)); Assert.IsNotNull(vList); Assert.IsNotNull(vList2); Assert.IsNotNull(vList3); Assert.IsNotNull(vList4); Assert.IsTrue(vList.Count == 0); Assert.IsTrue(vList2.Count == 0); Assert.IsTrue(vList3.Count == 0); Assert.IsTrue(vList4.Count == 0); }
public void TestAddRemove_Edge_1() { SimpleGraph graph = new SimpleGraph(5); graph.AddVertex(2); graph.AddVertex(5); graph.AddEdge(0, 1); Assert.IsFalse(graph.IsEdge(1, 2)); Assert.IsFalse(graph.IsEdge(4, 2)); Assert.IsTrue(graph.IsEdge(0, 1)); Assert.IsTrue(graph.IsEdge(1, 0)); graph.RemoveVertex(0); Assert.IsTrue(graph.vertex[0] == null); for (int i = 0; i < graph.vertex.Length; i++) { Assert.IsTrue(graph.m_adjacency[i, 0] == 0); Assert.IsTrue(graph.m_adjacency[0, i] == 0); } }
public void DepthFirstSearch_5_Vertex() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(19); // добавляем вершины testGraph.AddVertex(18); testGraph.AddVertex(17); testGraph.AddVertex(16); testGraph.AddVertex(15); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 3); testGraph.AddEdge(0, 4); testGraph.AddEdge(1, 2); testGraph.AddEdge(1, 3); testGraph.AddEdge(2, 3); testGraph.AddEdge(3, 4); for (int i = 0; i < testGraph.m_adjacency.GetLength(0); i++) { for (int j = 0; j < testGraph.m_adjacency.GetLength(1); j++) { Console.Write(testGraph.m_adjacency[i, j] + " "); } Console.WriteLine(); } List <Vertex <int> > vList = testGraph.DepthFirstSearch(1, 4); // попытка построения пути из 1 (ключ 18) в 4 (ключ 15). vList.ForEach((item) => Console.WriteLine(item.Value)); Assert.IsNotNull(vList); Assert.IsTrue(vList.Count == 3); Assert.AreEqual(18, vList[0].Value); Assert.AreEqual(19, vList[1].Value); Assert.AreEqual(15, vList[2].Value); }
public void BreadthFirstSearch_10_Vertex_Where_Path_is_not_Exists() { int size = 10; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(0); // добавляем вершины testGraph.AddVertex(10); testGraph.AddVertex(20); testGraph.AddVertex(30); testGraph.AddVertex(40); testGraph.AddVertex(50); testGraph.AddVertex(60); testGraph.AddVertex(70); testGraph.AddVertex(80); testGraph.AddVertex(90); // ребро без связей testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 2); testGraph.AddEdge(0, 3); testGraph.AddEdge(1, 4); testGraph.AddEdge(2, 5); testGraph.AddEdge(3, 6); testGraph.AddEdge(4, 7); testGraph.AddEdge(5, 7); testGraph.AddEdge(5, 8); testGraph.AddEdge(6, 8); List <Vertex <int> > vList = testGraph.BreadthFirstSearch(0, 9); // попытка построения пути из 0 (0) в 9 (90). vList.ForEach((item) => Console.Write(" {0}", item.Value)); Assert.IsNotNull(vList); Assert.IsTrue(vList.Count == 0); }
private static IUndirectedGraph <String, Edge <String> > CreateStringGraph() { var g = new SimpleGraph <String, Edge <String> >(new EdgeFactory <string, Edge <string> >()); var vertex1 = "1"; var vertex2 = "2"; var vertex3 = "3"; var vertex4 = "4"; // add the vertices g.AddVertex(vertex1); g.AddVertex(vertex2); g.AddVertex(vertex3); g.AddVertex(vertex4); // add edges to create a circuit g.AddEdge(vertex1, vertex2); g.AddEdge(vertex2, vertex3); g.AddEdge(vertex3, vertex4); g.AddEdge(vertex4, vertex1); return(g); }
public void RemoveEdge() { var g = new SimpleGraph(4); g.AddVertex(1); g.AddVertex(2); g.AddEdge(1, 2); g.AddEdge(1, 1); Assert.True(g.IsEdge(1, 2)); Assert.True(g.IsEdge(1, 1)); g.RemoveEdge(1, 2); Assert.True(!g.IsEdge(1, 2)); Assert.True(g.IsEdge(1, 1)); g.RemoveEdge(1, 1); Assert.True(!g.IsEdge(1, 2)); Assert.True(!g.IsEdge(1, 1)); g.RemoveEdge(3, 3); }
public void WeakVertices_in_5v_where_2v_Is_Weak() { int size = 5; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(0); // добавляем вершины testGraph.AddVertex(10); testGraph.AddVertex(30); testGraph.AddVertex(50); testGraph.AddVertex(70); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 2); testGraph.AddEdge(0, 3); testGraph.AddEdge(0, 4); testGraph.AddEdge(3, 4); List <Vertex <int> > WeakList = testGraph.WeakVertices(); int expectedCount = 2; int actualCount = WeakList.Count; if (WeakList.Count != 0) { WeakList.ForEach((item) => Console.Write("{0} ", item.Value)); } else { Console.WriteLine("[]"); } Assert.IsNotNull(WeakList); Assert.AreEqual(expectedCount, actualCount); Assert.IsTrue(WeakList[0].Value == 10); Assert.IsTrue(WeakList[1].Value == 30); }
public void WeakVertices_in_3v_where_All_Is_Weak() { int size = 3; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(0); // добавляем вершины testGraph.AddVertex(10); testGraph.AddVertex(20); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 2); List <Vertex <int> > WeakList = testGraph.WeakVertices(); int expectedCount = 3; int actualCount = WeakList.Count; WeakList.ForEach((item) => Console.Write("{0} ", item.Value)); Assert.AreEqual(expectedCount, actualCount); Assert.IsTrue(WeakList[0].Value == 0); Assert.IsTrue(WeakList[1].Value == 10); Assert.IsTrue(WeakList[2].Value == 20); }
public void WeakVertices_in_9v_where_2v_Is_Weak() { int size = 9; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(0); // добавляем вершины testGraph.AddVertex(10); testGraph.AddVertex(20); testGraph.AddVertex(30); testGraph.AddVertex(40); testGraph.AddVertex(50); testGraph.AddVertex(60); testGraph.AddVertex(70); testGraph.AddVertex(80); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 3); testGraph.AddEdge(0, 4); testGraph.AddEdge(1, 5); testGraph.AddEdge(2, 5); testGraph.AddEdge(2, 6); testGraph.AddEdge(3, 4); testGraph.AddEdge(4, 5); testGraph.AddEdge(5, 6); testGraph.AddEdge(3, 7); testGraph.AddEdge(4, 7); testGraph.AddEdge(6, 8); List <Vertex <int> > WeakList = testGraph.WeakVertices(); int expectedCount = 2; int actualCount = WeakList.Count; WeakList.ForEach((item) => Console.Write("{0} ", item.Value)); Assert.AreEqual(expectedCount, actualCount); Assert.IsTrue(WeakList[0].Value == 10); Assert.IsTrue(WeakList[1].Value == 80); }
public void TestAddED_RemoveED_4() { SimpleGraph graph = new SimpleGraph(7); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3); graph.AddVertex(4); graph.AddVertex(5); graph.AddVertex(6); graph.AddVertex(7); graph.AddEdge(0, 1); graph.AddEdge(0, 2); graph.AddEdge(0, 3); graph.AddEdge(0, 4); graph.AddEdge(0, 5); graph.AddEdge(0, 6); graph.AddEdge(3, 5); Assert.IsTrue(graph.m_adjacency[0, 3] == 1); Assert.IsTrue(graph.m_adjacency[0, 5] == 1); Assert.IsTrue(graph.vertex[3] != null); Assert.IsTrue(graph.vertex[5] != null); graph.RemoveVertex(3); Assert.IsTrue(graph.m_adjacency[0, 3] == 0); Assert.IsTrue(graph.m_adjacency[0, 5] == 1); Assert.IsTrue(graph.vertex[3] == null); Assert.IsTrue(graph.vertex[5] != null); graph.RemoveEdge(0, 5); Assert.IsTrue(graph.m_adjacency[0, 5] == 0); Assert.IsTrue(graph.vertex[5] != null); graph.AddEdge(5, 0); Assert.IsTrue(graph.m_adjacency[0, 5] == 1); Assert.IsTrue(graph.vertex[5] != null); }
public void DepthFirstSearch_7_Vertex_where_Suboptimal_Path() { int size = 7; SimpleGraph <int> testGraph = new SimpleGraph <int>(size); testGraph.AddVertex(10); // добавляем вершины testGraph.AddVertex(20); testGraph.AddVertex(30); testGraph.AddVertex(40); testGraph.AddVertex(50); testGraph.AddVertex(70); // вершина короткого пути testGraph.AddVertex(60); testGraph.AddEdge(0, 1); // добавление рёбер между вершинами testGraph.AddEdge(0, 5); testGraph.AddEdge(1, 2); testGraph.AddEdge(2, 3); testGraph.AddEdge(3, 4); testGraph.AddEdge(4, 6); testGraph.AddEdge(5, 6); for (int i = 0; i < testGraph.m_adjacency.GetLength(0); i++) { for (int j = 0; j < testGraph.m_adjacency.GetLength(1); j++) { Console.Write(testGraph.m_adjacency[i, j] + " "); } Console.WriteLine(); } List <Vertex <int> > vList = testGraph.DepthFirstSearch(0, 6); // попытка построения пути из 0 (ключ 10) в 6 (ключ 60). vList.ForEach((item) => Console.WriteLine(item.Value)); Assert.IsNotNull(vList); Assert.IsTrue(vList.Count == 6); }
public void TestAdd_Edge_2() { SimpleGraph graph = new SimpleGraph(5); graph.AddVertex(22); graph.AddVertex(5); graph.AddVertex(7); graph.AddVertex(11); graph.AddVertex(52); graph.AddVertex(27); for (int i = 0; i < graph.max_vertex; i++) { Assert.IsTrue(graph.vertex[i].Value != 27); } graph.AddEdge(1, 4); graph.AddEdge(3, 4); graph.AddEdge(0, 1); Assert.IsFalse(graph.IsEdge(1, 2)); Assert.IsFalse(graph.IsEdge(1, 3)); Assert.IsFalse(graph.IsEdge(2, 0)); Assert.IsFalse(graph.IsEdge(2, 1)); Assert.IsFalse(graph.IsEdge(2, 3)); Assert.IsFalse(graph.IsEdge(3, 0)); Assert.IsFalse(graph.IsEdge(3, 1)); Assert.IsFalse(graph.IsEdge(3, 2)); Assert.IsFalse(graph.IsEdge(4, 0)); Assert.IsFalse(graph.IsEdge(4, 2)); Assert.IsTrue(graph.IsEdge(4, 1)); Assert.IsTrue(graph.IsEdge(1, 4)); Assert.IsTrue(graph.IsEdge(3, 4)); Assert.IsTrue(graph.IsEdge(4, 3)); Assert.IsTrue(graph.IsEdge(0, 1)); Assert.IsTrue(graph.IsEdge(1, 0)); }