private void iterate()

in graphjet-core/src/main/java/com/twitter/graphjet/algorithms/PageRank.java [94:124]


  private void iterate(double dampingAmount, LongArrayList noOuts) {
    double nextPR[] = new double[(int) (maxNodeId + 1)]; // PageRank vector after the iteration.

    // First compute how much mass is trapped at the dangling nodes.
    double dangleSum = 0.0;
    LongIterator iter = noOuts.iterator();
    while (iter.hasNext()) {
      dangleSum += prVector[(int) iter.nextLong()];
    }
    dangleSum = dampingFactor * dangleSum / nodeCount;

    // Distribute PageRank mass.
    iter = nodes.iterator();
    while (iter.hasNext()) {
      long v = iter.nextLong();
      int outDegree = graph.getOutDegree(v);
      if (outDegree > 0) {
        double outWeight = dampingFactor * prVector[(int) v] / outDegree;
        EdgeIterator edges = graph.getOutEdges(v);
        while (edges.hasNext()) {
          int nbr = (int) edges.nextLong();
          nextPR[nbr] += outWeight;
        }
      }

      nextPR[(int) v] += dampingAmount + dangleSum;
    }

    normL1 = computeL1Norm(prVector, nextPR);
    prVector = nextPR;
  }