コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }