code: public float[] pageRank(int iterations) {
          float oneMinusAlpha = 1 - ALPHA;
          int[] degrees = loadDegrees(relTypeId , OUTGOING);
          float[] dst = new float[nodeCount]; float[] src = new float[nodeCount];
  
          for (int it = 0; it < iterations; it++) {
              for (int node = 0; node < nodeCount; node++) {
                  src[node] = ALPHA * dst[node] / (float) degrees[node];
                  dst[node] = oneMinusAlpha;
              }
              runProgram((start, end) -> dst[end] += src[start]);
          }
          for (int node = 0; node < nodeCount; node++) {
              if (degrees[node] == 0 && dst[node] == oneMinusAlpha) dst[node] = 0;
          }
          return dst;
      }
docs: /*
  let mut src: Vec<f32> = (0..nodes).map(|_| 0f32).collect();
  let mut dst: Vec<f32> = (0..nodes).map(|_| 0f32).collect();
  let mut deg: Vec<f32> = (0..nodes).map(|_| 0f32).collect();
  graph.map_edges(|x, _| { deg[x] += 1f32 });
  for _iteration in (0 .. 20) {
  for node in (0 .. nodes) {
  src[node] = alpha * dst[node] / deg[node];
  dst[node] = 1f32 - alpha;
  }
  graph.map_edges(|x, y| { dst[y] += src[x]; });
  }