private HashMap<Node, Integer> getNodeOverlap(Set<Node> nodes) { HashMap<Node, Integer> nodesOverlap = new HashMap<>(); int count; for (Node n1 : nodes) { count = 0; for (Node n2 : nodes) { if (n1.equals(n2)) continue; if (overlap(n1, n2)) count++; } nodesOverlap.put(n1, count); } return nodesOverlap; }
private static HashMap<Node, Integer> inDegreeInSet(DirectedWeightedMultigraph<Node, LabeledLink> g, Set<Node> nodes, boolean includeSelfLinks) { HashMap<Node, Integer> nodeToInDegree = new HashMap<>(); if (g == null || nodes == null) return nodeToInDegree; for (Node n : nodes) { Set<LabeledLink> incomingLinks = g.incomingEdgesOf(n); if (incomingLinks == null || incomingLinks.isEmpty()) { nodeToInDegree.put(n, 0); } else { int count = 0; for (LabeledLink l : incomingLinks) { if (includeSelfLinks) { if (nodes.contains(l.getSource())) count++; } else { if (nodes.contains(l.getSource()) && !n.equals(l.getSource())) count++; } } nodeToInDegree.put(n, count); } } return nodeToInDegree; }
private static HashMap<Node, Integer> outDegreeInSet(DirectedWeightedMultigraph<Node, LabeledLink> g, Set<Node> nodes, boolean includeSelfLinks) { HashMap<Node, Integer> nodeToOutDegree = new HashMap<>(); if (g == null || nodes == null) return nodeToOutDegree; for (Node n : nodes) { Set<LabeledLink> outgoingLinks = g.outgoingEdgesOf(n); if (outgoingLinks == null || outgoingLinks.isEmpty()) { nodeToOutDegree.put(n, 0); } else { int count = 0; for (LabeledLink l : outgoingLinks) { if (includeSelfLinks) { if (nodes.contains(l.getSource())) count++; } else { if (nodes.contains(l.getSource()) && !n.equals(l.getSource())) count++; } } nodeToOutDegree.put(n, count); } } return nodeToOutDegree; }
if (target.equals(source)) target = e.getSource();
if (n1.equals(n2)) continue;
if (n1.equals(n2)) continue;