public void traverseSubgraphLeftToRight()

in graphjet-core/src/main/java/com/twitter/graphjet/algorithms/salsa/subgraph/SalsaSubgraphInternalState.java [182:208]


  public void traverseSubgraphLeftToRight(SalsaNodeVisitor.NodeVisitor nodeVisitor) {
    int currentEdgeArrayIndex = 0;
    double weightResetToQueryNode = 0;
    for (int i = 0; i < numLeftNodesAdded; i++) {
      long leftNode = subgraphLeftNodes[i];
      int degree = subgraphLeftNodeDegree[i];
      double weightPerEdge = (double) currentLeftNodes.get(leftNode) / (double) degree;
      weightResetToQueryNode += currentLeftNodes.get(leftNode) * salsaRequest.getResetProbability();
      for (int j = 0; j < degree; j++) {
        long rightNode = subgraphEdgesArray[currentEdgeArrayIndex];
        long edgeMetadata = subgraphEdgeMetadataArray[currentEdgeArrayIndex];
        byte edgeType = subgraphEdgeTypesArray[currentEdgeArrayIndex];
        currentEdgeArrayIndex++;
        int numVisits = visitRightNode(
          nodeVisitor,
          leftNode,
          rightNode,
          edgeType,
          edgeMetadata,
          weightPerEdge
        );
        salsaStats.updateVisitStatsPerRightNode(numVisits);
      }
    }
    salsaStats.addToNumRHSVisits(currentEdgeArrayIndex);
    resetCurrentLeftNodes(salsaRequest.getQueryNode(), (int) weightResetToQueryNode);
  }