@Override public Set<N> predecessors(N node) { return network.predecessors(node); }
@Override public Set<N> successors(N node) { return delegate().predecessors(node); // transpose }
@Override public Set<N> predecessors(N node) { return delegate().predecessors(node); }
@Override public Set<N> successors(N node) { return delegate().predecessors(node); // transpose }
@Override public Set<N> predecessors(N node) { return delegate().predecessors(node); }
@Override public Set<N> predecessors(N node) { return delegate().predecessors(node); }
@Override public Set<N> successors(N node) { return delegate().predecessors(node); // transpose }
assertThat(network.outEdges(nodeU)).contains(edge); assertThat(network.incidentEdges(nodeU)).contains(edge); assertThat(network.predecessors(nodeV)).contains(nodeU); assertThat(network.adjacentNodes(nodeV)).contains(nodeU); assertThat(network.inEdges(nodeV)).contains(edge); assertThat(network.predecessors(node)).isEqualTo(asGraph.predecessors(node)); assertThat(network.successors(node)).isEqualTo(asGraph.successors(node)); assertThat(network.outEdges(node)).hasSize(network.outDegree(node)); } else { assertThat(network.predecessors(node)).isEqualTo(network.adjacentNodes(node)); assertThat(network.successors(node)).isEqualTo(network.adjacentNodes(node)); assertThat(network.inEdges(node)).isEqualTo(network.incidentEdges(node)); assertThat(network.predecessors(otherNode).contains(node)).isEqualTo(connected); for (E edge : edgesConnecting) { assertThat(network.incidentNodes(edge)) network.predecessors(node).contains(adjacentNode) || network.successors(node).contains(adjacentNode)); assertTrue( for (N predecessor : sanityCheckSet(network.predecessors(node))) { assertThat(network.successors(predecessor)).contains(node); assertThat(network.edgesConnecting(predecessor, node)).isNotEmpty(); assertThat(network.predecessors(successor)).contains(node); assertThat(network.edgesConnecting(node, successor)).isNotEmpty();
@Override public Set<N> predecessors(N node) { return network.predecessors(node); }
@Override public Set<N> successors(N node) { return delegate().predecessors(node); // transpose }
@Override public Set<N> successors(N node) { return delegate().predecessors(node); // transpose }
@Override public Set<N> predecessors(N node) { return delegate().predecessors(node); }
@Override public Set<N> predecessors(N node) { return delegate().predecessors(node); }
/** * A graph is "forest-shaped" if it is directed, acyclic, and each node has at most one * predecessor. */ public static <N> boolean isForestShaped(Network<N, ?> graph) { checkNotNull(graph, "graph"); return graph.isDirected() && !Graphs.hasCycle(graph) && graph.nodes().stream().allMatch(node -> graph.predecessors(node).size() <= 1); }
for (N u : graph.predecessors(v)) { for (E e : graph.edgesConnecting(u, v)) { double weight = getEdgeWeight(u, e).doubleValue();
/** Updates the value for this node. Called by <code>step()</code>. */ @Override public double update(N v) { collectDisappearingPotential(v); double v_input = 0; for (N u : graph.predecessors(v)) { for (E e : graph.edgesConnecting(u, v)) { v_input += (getCurrentValue(u) * getEdgeWeight(u, e).doubleValue()); } } // modify total_input according to alpha double new_value = alpha > 0 ? v_input * (1 - alpha) + getNodePrior(v) * alpha : v_input; setOutputValue(v, new_value); return Math.abs(getCurrentValue(v) - new_value); }
/** Updates the value for this node. Called by <code>step()</code>. */ @Override public double update(N v) { if (!cumulative) { return super.update(v); } collectDisappearingPotential(v); double v_input = 0; for (N u : graph.predecessors(v)) { for (E e : graph.edgesConnecting(u, v)) { v_input += (getCurrentValue(u) * getEdgeWeight(u, e).doubleValue()); } } // modify total_input according to alpha double new_value = alpha > 0 ? v_input * (1 - alpha) + getNodePrior(v) * alpha : v_input; setOutputValue(v, new_value + getCurrentValue(v)); // FIXME: DO WE NEED TO CHANGE HOW DISAPPEARING IS COUNTED? NORMALIZE? return Math.abs(getCurrentValue(v) - new_value); } }
/** Updates the value for this node. */ @Override protected double update(N v) { collectDisappearingPotential(v); double v_auth = 0; for (N u : graph.predecessors(v)) { for (E e : graph.edgesConnecting(u, v)) { v_auth += (getCurrentValue(u).hub * getEdgeWeight(u, e).doubleValue()); } } double v_hub = 0; for (N w : graph.successors(v)) { for (E e : graph.edgesConnecting(v, w)) { v_hub += (getCurrentValue(w).authority * getEdgeWeight(w, e).doubleValue()); } } // modify total_input according to alpha if (alpha > 0) { v_auth = v_auth * (1 - alpha) + getNodePrior(v).authority * alpha; v_hub = v_hub * (1 - alpha) + getNodePrior(v).hub * alpha; } setOutputValue(v, new HITS.Scores(v_hub, v_auth)); return Math.max( Math.abs(getCurrentValue(v).hub - v_hub), Math.abs(getCurrentValue(v).authority - v_auth)); }
assertThat(network.outEdges(nodeU)).contains(edge); assertThat(network.incidentEdges(nodeU)).contains(edge); assertThat(network.predecessors(nodeV)).contains(nodeU); assertThat(network.adjacentNodes(nodeV)).contains(nodeU); assertThat(network.inEdges(nodeV)).contains(edge); assertThat(network.predecessors(node)).isEqualTo(asGraph.predecessors(node)); assertThat(network.successors(node)).isEqualTo(asGraph.successors(node)); assertThat(network.outEdges(node)).hasSize(network.outDegree(node)); } else { assertThat(network.predecessors(node)).isEqualTo(network.adjacentNodes(node)); assertThat(network.successors(node)).isEqualTo(network.adjacentNodes(node)); assertThat(network.inEdges(node)).isEqualTo(network.incidentEdges(node)); assertThat(network.predecessors(otherNode).contains(node)).isEqualTo(connected); for (E edge : edgesConnecting) { assertThat(network.incidentNodes(edge)) network.predecessors(node).contains(adjacentNode) || network.successors(node).contains(adjacentNode)); assertTrue( for (N predecessor : sanityCheckSet(network.predecessors(node))) { assertThat(network.successors(predecessor)).contains(node); assertThat(network.edgesConnecting(predecessor, node)).isNotEmpty(); assertThat(network.predecessors(successor)).contains(node); assertThat(network.edgesConnecting(node, successor)).isNotEmpty();