private void Generate(uint stepCount, double probability, uint edges)
        {
            GenerateInitialGraph(probability);
            container = initialcontainer;

            while (stepCount > 0)
            {
                double[] probabilyArray = container.CountProbabilities();
                container.AddVertex();
                container.RefreshNeighbourships(MakeGenerationStep(probabilyArray, edges));
                --stepCount;
            }
        }
 public ConnectedComponents GetSubGraph(IEnumerable<int> nodes)
 {
     ConnectedComponents comp;
     NonHierarchicContainer g = new NonHierarchicContainer();
     Dictionary<int, int> tempnodes = new Dictionary<int, int>();
     for (int i = 0; i < nodes.Count(); i++)
     {
         tempnodes = AddNodesToList(nodes);
         g.AddVertex();
     }
     foreach (var n in g.Neighbourship.Keys.ToList())
     {
         foreach (var neigh in container.Neighbourship[tempnodes[n]])
         {
             for (int i = 0; i < tempnodes.Count; i++)
             {
                 if (tempnodes[i] == neigh)
                 {
                     g.AddConnection(n, i);
                 }
             }
         }
     }
     comp = new ConnectedComponents(g, tempnodes, tempnodes.Count);
     return comp;
 }