/** * get two set of Nodes (Modules) and return true if they are connected * * @param fromModule * @param toModule * @return */ public boolean isConnected(List<V> fromModule, List<V> toModule) { for (V node : fromModule) { for (E edge : this.getOutEdges(node)) { if (edge.isProvider() && toModule.contains(edge.getToNode())) return true; } } return false; }
/** * calculates the number of connections between two modules (subGraphs) as the number of all * dependency edges between these modules directing from the fromModule towards the toModule * * @param fromModule is the parent node of outgoing edges module * @param toModule is the parent node of incoming edges module * @return strength */ public int getConnections(List<V> fromModule, List<V> toModule) { List<EvolutionEdge> connections = new ArrayList<EvolutionEdge>(); for (V node : fromModule) { for (E edge : node.getOutEdges()) { if (edge.isProvider() && toModule.contains(edge.getToNode()) && (!connections.contains(edge))) { connections.add(edge); } } } return connections.size(); }
/** * propagates the frequency of a query node towards the graph set the frequency of all provider * nodes of a query * * @param node */ public void propagateFrequency(V node) { List<V> subGraph = this.getModule(node); for (V evNode : subGraph) { evNode.setFrequency(node.getFrequency()); } for (E edge : this.getOutEdges(node)) { if (edge.isProvider()) { edge.getToNode().setFrequency(edge.getToNode().getFrequency() + node.getFrequency()); this.propagateFrequency(this.getDest(edge)); } } }