/// <summary>Создает случайный граф</summary> /// <param name="elements">Количество элементов</param> /// <returns>Созданный граф</returns> private static Graph CreateRandomGraph(int elements = ELEMENTS) { Graph newGraph = new Graph(); //Добавляем в граф вершины for (int i = 0; i < elements; i++) { newGraph.AddNode(i); } GraphPrinter.CreateGraphInfo(newGraph); //Добавляем связи между вершинами for (int i = 0; i < elements; i++) { for (int j = 0; j < rnd.Next(1) + 2; j++) { bool isGenerated = false; while (!isGenerated) { int toNode = rnd.Next(elements); if (toNode != i) { isGenerated = newGraph.AddEdge(i, toNode, rnd.Next(MAX_WEIGHT)); } if (newGraph.Nodes[i].Edges.Count >= 2) { isGenerated = true; } } } } return(newGraph); }
/// <summary>Создает заранее зарадкоженый граф (для наглядности ДЗ)</summary> /// <returns>Созданный граф</returns> private static Graph CreatePredefinedGraph() { const int ELEMENTS_PREDEF = 15; Graph newGraph = new Graph(); //Добавляем в граф вершины for (int i = 0; i < ELEMENTS_PREDEF; i++) { newGraph.AddNode(i); } //Предварительное создание массива координат вершин GraphPrinter.CreateGraphInfo(newGraph); //Расставляем вершины так как нам нужно int[,] coords = { { 32, 0 }, { 16, 3 }, { 32, 4 }, { 48, 2 }, { 6, 7 }, { 24, 7 }, { 36, 8 }, { 54, 7 }, { 7, 11 }, { 22, 12 }, { 36, 12 }, { 54, 12 }, { 18, 15 }, { 30, 15 }, { 34, 19 } }; for (int i = 0; i < ELEMENTS_PREDEF; i++) { GraphPrinter.MoveNode(i, coords[i, 0], coords[i, 1], false); } //Добавляем ребра int[,] edges = { { 0, 1 }, { 0, 2 }, { 0, 3 }, { 1, 4 }, { 1, 5 }, { 2, 6 }, { 3, 6 }, { 3, 7 }, { 4, 8 }, { 5, 9 }, { 5, 10 }, { 6, 10 }, { 6, 11 }, { 7, 11 }, { 8, 9 }, { 8, 12 }, { 9, 13 }, { 10, 13 }, { 11, 14 }, { 13, 14 }, { 12, 14 } }; for (int i = 0; i < edges.Length / 2; i++) { newGraph.AddEdge(edges[i, 0], edges[i, 1], rnd.Next(MAX_WEIGHT)); } return(newGraph); }