private double computeMaxValueAndTempValues(Graph graph, HashMap<Integer, Node> indicies, HashMap<Node, Integer> invIndicies, double[] tempValues, double[] centralityValues, boolean directed) { double max = 0.; int N = graph.getNodeCount(); for (int i = 0; i < N; i++) { Node u = indicies.get(i); EdgeIterable iter; if (directed) { iter = ((DirectedGraph) graph).getInEdges(u); } else { iter = graph.getEdges(u); } for (Edge e : iter) { Node v = graph.getOpposite(u, e); Integer id = invIndicies.get(v); tempValues[i] += centralityValues[id]; } max = Math.max(max, tempValues[i]); if (isCanceled) { return max; } } return max; }
void updateAutorithy(Graph graph, double[] newValues, double[] hubValues, boolean isDirected, Map<Node, Integer> indices) { double norm = 0; for (Node q : indices.keySet()) { double auth = 0; EdgeIterable edge_iter; if (isDirected) { edge_iter = ((DirectedGraph) graph).getInEdges(q); } else { edge_iter = graph.getEdges(q); } for (Edge edge : edge_iter) { if (!edge.isSelfLoop()) { Node p = graph.getOpposite(q, edge); auth += hubValues[indices.get(p)]; } } newValues[indices.get(q)] = auth; norm += auth * auth; if (isCanceled) { return; } } norm = Math.sqrt(norm); if (norm > 0) { for (int i = 0; i < newValues.length; i++) { newValues[i] = newValues[i] / norm; } } }
private Map<Node, Set<Node>> calculateInNeighborsPerNode(Graph graph, boolean directed) { Map<Node, Set<Node>> inNeighborsPerNode = new Object2ObjectOpenHashMap<>(); NodeIterable nodesIterable = graph.getNodes(); for (Node node : nodesIterable) { Set<Node> nodeInNeighbors = new ObjectOpenHashSet<>(); EdgeIterable edgesIterable; if (directed) { edgesIterable = ((DirectedGraph) graph).getInEdges(node); } else { edgesIterable = graph.getEdges(node); } for (Edge edge : edgesIterable) { if (!edge.isSelfLoop()) { Node neighbor = graph.getOpposite(node, edge); nodeInNeighbors.add(neighbor); } if (isCanceled) { edgesIterable.doBreak(); break; } } inNeighborsPerNode.put(node, nodeInNeighbors); if (isCanceled) { nodesIterable.doBreak(); break; } } return inNeighborsPerNode; }
edgesIterable = ((DirectedGraph) graph).getInEdges(node); } else { edgesIterable = graph.getEdges(node);