Esempio n. 1
0
 @Override
 protected NodeCluster findSingleInLinkClusters(TreeMap<Integer, NodeCluster> clusters) {
   double minFlow = Double.POSITIVE_INFINITY;
   NodeCluster outCluster = null;
   for (int i : clusters.keySet()) {
     NodeCluster nc = clusters.get(i);
     if (nc.getInLinks().size() == 1) {
       for (ClusterLink cl : nc.getInLinks().values()) {
         NodeCluster newCluster;
         newCluster =
             new NodeCluster(
                 cl.getFromCluster(),
                 nc,
                 internalFlowMethod,
                 internalFlowMethodParameters,
                 clusterSteps,
                 cl.getFromCluster().getId());
         if (newCluster.getDeltaFlow() < minFlow) {
           minFlow = newCluster.getDeltaFlow();
           outCluster = newCluster;
         }
       }
     }
   }
   return outCluster;
 }
 private boolean hasSharedLinks(NodeCluster nc1, NodeCluster nc2) {
   for (ClusterLink l : nc1.getInLinks().values()) {
     if (nc2.getOutLinks().get(l.getId()) != null) {
       return true;
     }
   }
   for (ClusterLink l : nc1.getOutLinks().values()) {
     if (nc2.getInLinks().get(l.getId()) != null) {
       return true;
     }
   }
   return false;
 }
 private void updateLinksAndNodes(NodeCluster newCluster) {
   for (ClusterLink l : newCluster.getInLinks().values()) {
     l.setNewRoot(newCluster, false);
     l.setToCluster(newCluster);
   }
   for (ClusterLink l : newCluster.getOutLinks().values()) {
     l.setNewRoot(newCluster, false);
     l.setFromCluster(newCluster);
   }
   for (ClusterLink l : newCluster.getInterLinks().values()) {
     l.setNewRoot(newCluster, true);
   }
   for (ClusterNode n : newCluster.getNodes().values()) {
     n.setNewRoot(newCluster);
   }
   newCluster.getChild1().setParent(newCluster);
   newCluster.getChild2().setParent(newCluster);
 }