Example #1
0
  /*
   * "...At each time-step, we choose NeY vertices at random, with
   * probabilities proportional to Zi.  For each vertex chosen we
   * choose one of its neighbors uniformly at random and delete the
   * connection to that neighbor...."
   */
  private void removeRandomFriendship() {

    removalMap.clear();
    double zeeSum = 0;
    int nEdges = 0;

    for (int i = 0; i < numNodes; i++) {
      JinGirNewNode node = (JinGirNewNode) agentList.get(i);
      int degree = node.getOutDegree();
      if (degree > 1) {
        removalMap.put(zeeSum, node);
        zeeSum += degree * (degree - 1);
      }

      nEdges += degree;
    }

    nEdges = nEdges / 2;
    int numPicks = (int) Math.round(nEdges * removeProb);

    for (int n = 0; n < numPicks; n++) {
      double pick = Random.uniform.nextDoubleFromTo(0, zeeSum);
      JinGirNewNode node = (JinGirNewNode) removalMap.get(pick);
      node.removeFriend();
    }
  }