private void AlgorithmFinal(AbstractNetworkContainer containerToChange) { Int32[] final = new Int32[containerToChange.Size]; for (int i = 0; i < final.Length; ++i) { final[i] = containerToChange.GetActiveStatus(i) ? 1 : 0; } for (int i = 0; i < containerToChange.GetActiveStatuses().Count; ++i) { if (!containerToChange.GetActiveStatus(i)) { continue; } if (Rand.NextDouble() < lambda) { Int32 index = RandomNeighbourToActivate(containerToChange, true, i); if (index != -1) { ++final[index]; } } if (Rand.NextDouble() < mu) { --final[i]; } } for (int i = 0; i < final.Count(); ++i) { // TODO get k as parameter containerToChange.SetActiveStatus(i, final[i] > 0); } }
private void ActivateVertex(AbstractNetworkContainer containerToChange, bool allPas, int n) { Int32 RandomNode = RandomNeighbourToActivate(containerToChange, allPas, n); if (RandomNode == -1) { return; } containerToChange.SetActiveStatus(RandomNode, true); }
private void Algorithm2(AbstractNetworkContainer containerToChange) { Int32 RandomActiveNode = GetRandomActiveNodeIndex(containerToChange); Debug.Assert(RandomActiveNode < containerToChange.Size); Debug.Assert(containerToChange.GetActiveStatus(RandomActiveNode)); if (Rand.NextDouble() < lambda) { ActivateVertex(containerToChange, true, RandomActiveNode); } if (Rand.NextDouble() < mu) { containerToChange.SetActiveStatus(RandomActiveNode, false); } }