private void GenerateFullGraph(Int32[] nodes) { for (UInt32 i = 0; i < nodes.Length - 1; ++i) { for (UInt32 j = i + 1; j < nodes.Length; ++j) { container.AddConnection(nodes[i], nodes[j]); } } }
private void GenerateInitialNetwork(int vertexCount, int numberOfEdges) { List <EdgesAddedOrRemoved> initialStep = (GenerationSteps != null) ? new List <EdgesAddedOrRemoved>() : null; for (int i = 0; i < vertexCount; ++i) { for (int k = 1; k <= numberOfEdges / 2; ++k) { int j = (i + k) < vertexCount ? (i + k) : (i + k) % vertexCount; container.AddConnection(i, j); initialStep.Add(new EdgesAddedOrRemoved(i, j, true)); } } GenerationSteps.Add(initialStep); }
private void Generate(Int32 numberOfVertices, Int32 edges, Double probability, String function) { int initial_vertex_count_ = 1; int additional_verteses_count_ = numberOfVertices; int vertexcount_ = additional_verteses_count_ + initial_vertex_count_; int edgespervertex_ = edges; double vertex_addition_probability_ = probability; DistributedRandom distributed_random_ = new DistributedRandom(function); List <double> fitnesses_ = new List <double>(vertexcount_); for (int current_initial_vertex = 0; current_initial_vertex < initial_vertex_count_; ++current_initial_vertex) { fitnesses_.Add(distributed_random_.get_distributed_probability()); container.AddVertex(); if (current_initial_vertex % 2 == 1) { container.AddConnection(current_initial_vertex, current_initial_vertex - 1); } if (current_initial_vertex == initial_vertex_count_ - 1 && current_initial_vertex != 0 && current_initial_vertex % 2 == 0) { container.AddConnection(current_initial_vertex, current_initial_vertex - 1); } } int current_vertex = initial_vertex_count_; while (current_vertex != vertexcount_) { double prob = distributed_random_.get_probability(); if (prob <= vertex_addition_probability_) { fitnesses_.Add(distributed_random_.get_distributed_probability()); container.AddVertex(); for (int j = 0; j < Math.Min(current_vertex, edgespervertex_); ++j) { int vertex_to_connect = get_vertex_to_connect(current_vertex, fitnesses_, distributed_random_); Debug.Assert(vertex_to_connect >= 0, "internal error"); container.AddConnection(current_vertex, vertex_to_connect); } current_vertex++; } else { add_internal_links(1, fitnesses_, distributed_random_); } } }
private void GenerateInitialGraph(double probability) { for (int i = 0; i < container.Size; ++i) { for (int j = i + 1; j < container.Size; ++j) { if (rand.NextDouble() < probability) { initialcontainer.AddConnection(i, j); } } } }
private void GenerateInitialGraph(Double probability) { List <EdgesAddedOrRemoved> initialStep = (GenerationSteps != null) ? new List <EdgesAddedOrRemoved>() : null; for (Int32 i = 0; i < container.Size; ++i) { for (Int32 j = i + 1; j < container.Size; ++j) { if (rand.NextDouble() < probability) { container.AddConnection(i, j); if (initialStep != null) { initialStep.Add(new EdgesAddedOrRemoved(i, j, true)); } } } } if (GenerationSteps != null) { GenerationSteps.Add(initialStep); } }
private void FillValuesByProbability(double p) { for (int i = 0; i < container.Size; ++i) { for (int j = i + 1; j < container.Size; ++j) { double a = rand.NextDouble(); if (a < p) { container.AddConnection(i, j); } } } }
private void FillValuesByProbability(double p) { int edgesAdded = 0; int numberOfVertices = container.Size; List <EdgesAddedOrRemoved> l = new List <EdgesAddedOrRemoved>(); if (GenerationSteps != null) { GenerationSteps.Add(null); } for (int i = 0; i < container.Size; ++i) { for (int j = i + 1; j < container.Size; ++j) { if (rand.NextDouble() < p) { container.AddConnection(i, j); if (GenerationSteps != null) { l.Add(new EdgesAddedOrRemoved(i, j, true)); if (edgesAdded >= ((numberOfVertices - 1) / p)) { GenerationSteps.Add(l); l = new List <EdgesAddedOrRemoved>(); edgesAdded = 0; } edgesAdded++; } } } } if (GenerationSteps != null) { if (l.Count != 0) { GenerationSteps.Add(l); } } }