Пример #1
0
        private static ProcessorGraph GraphCreate(int layerCount, int minNodesPerLayer, int maxNodesPerLayer)
        {
            var result = new ProcessorGraph();

            result.AddVertex(Helper.CreateProcessor());

            var random = new Random();

            for (var i = 0; i < layerCount; i++)
            {
                var tailVertices = result.Vertices
                                   .Where(v => !result.OutEdges(v).Any())
                                   .ToList();

                var processorsOnLayer = random.Next(minNodesPerLayer, maxNodesPerLayer);

                for (var j = 0; j < processorsOnLayer; j++)
                {
                    var processor = Helper.CreateProcessor();
                    result.AddVertex(processor);

                    var processorConnectedWithVerticesCount = random.Next(1, tailVertices.Count);
                    for (var k = 0; k < processorConnectedWithVerticesCount; k++)
                    {
                        var processorConnectedWithVertexIndex = random.Next(0, tailVertices.Count);
                        result.AddEdge(new Edge <IProcessor>(tailVertices[processorConnectedWithVertexIndex], processor));
                    }
                }
            }

            return(result);
        }