private void forward()

in computer-algorithm/src/main/java/org/apache/hugegraph/computer/algorithm/centrality/betweenness/BetweennessCentrality.java [127:161]


    private void forward(ComputationContext context, Vertex vertex,
                         IdList sequence, IdSet arrivingVertices) {
        if (sequence.size() == 0) {
            return;
        }

        BetweennessValue value = vertex.value();
        IdSet arrivedVertices = value.arrivedVertices();
        Id source = sequence.get(0);
        // The source vertex is arriving at first time
        if (!arrivedVertices.contains(source)) {
            arrivingVertices.add(source);

            SeqCount seqCount = this.seqTable.computeIfAbsent(
                    source, k -> new SeqCount());
            seqCount.totalCount++;
            // Accumulate the number of shortest paths for intermediate vertices
            for (int i = 1; i < sequence.size(); i++) {
                Id id = sequence.get(i);
                Map<Id, Integer> idCounts = seqCount.idCount;
                idCounts.put(id, idCounts.getOrDefault(id, 0) + 1);
            }

            Id selfId = vertex.id();
            sequence.add(selfId);
            BetweennessMessage newMessage = new BetweennessMessage(sequence);
            for (Edge edge : vertex.edges()) {
                Id targetId = edge.targetId();
                if (this.sample(selfId, targetId, edge) &&
                    !sequence.contains(targetId)) {
                    context.sendMessage(targetId, newMessage);
                }
            }
        }
    }