private static void SimulateReplications(int n, int r) { Console.WriteLine($"Disruption\tIterations"); for (double perc = 0; perc < 0.5; perc += 0.05) { var reached = -1; int iterations = 1; int disabled = (int)(perc * n); for (; iterations < n; iterations++) { var graph = new RandomRegularGraphBuilder().Build(n, r); var sourceVertex = 50; // Any var item = Guid.NewGuid().GetHashCode(); graph.Vertices[sourceVertex].AddItem(item); graph.DisableRandomVertices(disabled, sourceVertex); graph.Propagate(iterations); reached = graph.Vertices.Count(n => n.Items.Contains(item)); if (reached == n || iterations > n) { break; } } Console.WriteLine($"{perc.ToString("0.00")}\t{iterations}"); } }
private static Graph BuildRRG(int n, int k) { var b = new RandomRegularGraphBuilder(); var g = b.Build(n, k); return(g); }
private static void MeasureDiameters() { for (int r = 3; r <= 9; r += 2) { Console.WriteLine($"N\tDiameter\tVariance\t[r={r}]"); for (int n = 10; n <= 1e3; n += 99) { var list = new List <double>(); for (int i = 0; i < 100; i++) { var graph = new RandomRegularGraphBuilder().Build(n, r); list.Add(graph.GetDiameter()); } Console.WriteLine($"{n}\t{list.Average().ToString("0.00")}\t{list.StdDev().ToString("0.00")}"); } } }
public void GraphItem_ZeroDisruption_PropagationTest() { var n = (int)1e3; var k = 4; var sourceVertex = 50; var iterations = (int)Math.Ceiling(Math.Log(n, k - 1)) + 1; var graph = new RandomRegularGraphBuilder().Build(n, k); var item = Guid.NewGuid().GetHashCode(); graph.Vertices[sourceVertex].AddItem(item); graph.Propagate(iterations); Assert.AreEqual(graph.Vertices.Length, graph.Vertices.Count(n => n.Items.Contains(item))); }
public void GraphItem_MajorDisruption_PropagationTest() { var n = (int)1e3; var k = 4; var sourceVertex = 50; var disabled = (int)(0.50 * n); var iterations = (int)Math.Ceiling(Math.Log(n, k - 1)) + 1; var graph = new RandomRegularGraphBuilder().Build(n, k); var item = Guid.NewGuid().GetHashCode(); graph.Vertices[sourceVertex].AddItem(item); graph.DisableRandomVertices(disabled, sourceVertex); graph.Propagate(iterations); Assert.IsTrue(graph.Vertices.Count(n => n.Items.Contains(item)) < 500); }