@Override public Graph<V, E> create() { return new SparseMultigraph<V, E>(); } };
private static Hypergraph<ElementName, Integer> makeNonDirectional( final DirectedGraph<ElementName, Integer> packageNameGraph) { final SparseMultigraph<ElementName, Integer> g = new SparseMultigraph<ElementName, Integer>(); int i = 0; for (final ElementName each : packageNameGraph.getVertices()) { g.addVertex(each); for (final ElementName s : packageNameGraph.getSuccessors(each)) { g.addEdge(i, each, s); i++; } } return g; }
@Override public int getEdgeCount(EdgeType edge_type) { return getEdges(edge_type).size(); }
@Override public boolean isSource(V vertex, E edge) { if (!containsEdge(edge) || !containsVertex(vertex)) { return false; } return getSource(edge).equals(vertex); }
@Override public boolean isDest(V vertex, E edge) { if (!containsEdge(edge) || !containsVertex(vertex)) { return false; } return getDest(edge).equals(vertex); }
public boolean removeVertex(V vertex) { if (!containsVertex(vertex)) return false; // copy to avoid concurrent modification in removeEdge Set<E> incident = new HashSet<E>(getIncoming_internal(vertex)); incident.addAll(getOutgoing_internal(vertex)); for (E edge : incident) removeEdge(edge); vertices.remove(vertex); return true; }
SparseMultigraph<MyNode, MyLink> g = new SparseMultigraph<>(); g.addEdge( new MyLink(seg.getLength(), node1, node2, edgeCount++), node1,
public BroadcastNetwork buildLink(String name){ BroadcastNetwork link = new BroadcastNetwork(this,name); sliceGraph.addVertex(link); return link; } public BroadcastNetwork buildBroadcastLink(String name){
@Override public boolean addEdge(E edge, Pair<? extends V> endpoints, EdgeType edgeType) { Pair<V> new_endpoints = getValidatedEndpoints(edge, endpoints); if (new_endpoints == null) return false; V v1 = new_endpoints.getFirst(); V v2 = new_endpoints.getSecond(); if (!vertices.containsKey(v1)) this.addVertex(v1); if (!vertices.containsKey(v2)) this.addVertex(v2); vertices.get(v1).getSecond().add(edge); vertices.get(v2).getFirst().add(edge); edges.put(edge, new_endpoints); if(edgeType == EdgeType.DIRECTED) { directedEdges.add(edge); } else { vertices.get(v1).getFirst().add(edge); vertices.get(v2).getSecond().add(edge); } return true; }
public void addStitch(RequestResource a, RequestResource b, Interface s){ if(s instanceof InterfaceNode2Net){ ndlModel.add((InterfaceNode2Net)s); } sliceGraph.addEdge(s, a, b); }
public boolean removeEdge(E edge) { if (!containsEdge(edge)) { return false; } Pair<V> endpoints = getEndpoints(edge); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); // remove edge from incident vertices' adjacency sets vertices.get(v1).getSecond().remove(edge); vertices.get(v2).getFirst().remove(edge); if(directedEdges.remove(edge) == false) { // its an undirected edge, remove the other ends vertices.get(v2).getSecond().remove(edge); vertices.get(v1).getFirst().remove(edge); } edges.remove(edge); return true; }
public void deleteResource(Interface i){ //TODO: Only handles InterfaceNode2Net for now ndlModel.remove((InterfaceNode2Net)i); sliceGraph.removeEdge(i); }
@Override public boolean removeVertex(V vertex) { if (!containsVertex(vertex)) { return false; } // copy to avoid concurrent modification in removeEdge Set<E> incident = new HashSet<E>(getIncoming_internal(vertex)); incident.addAll(getOutgoing_internal(vertex)); for (E edge : incident) { removeEdge(edge); } vertices.remove(vertex); return true; }
public StitchPort buildStitchPort(String name, String label, String port, long bandwidth){ StitchPort node = new StitchPort(this,name,label,port,bandwidth); sliceGraph.addVertex(node); return node; } public BroadcastNetwork buildLink(String name){
@Override public boolean addEdge(E edge, Pair<? extends V> endpoints, EdgeType edgeType) { Pair<V> new_endpoints = getValidatedEndpoints(edge, endpoints); if (new_endpoints == null) { return false; } V v1 = new_endpoints.getFirst(); V v2 = new_endpoints.getSecond(); if (!vertices.containsKey(v1)) { this.addVertex(v1); } if (!vertices.containsKey(v2)) { this.addVertex(v2); } vertices.get(v1).getSecond().add(edge); vertices.get(v2).getFirst().add(edge); edges.put(edge, new_endpoints); if (edgeType == EdgeType.DIRECTED) { directedEdges.add(edge); } else { vertices.get(v1).getFirst().add(edge); vertices.get(v2).getSecond().add(edge); } return true; }
public boolean isSource(V vertex, E edge) { if (!containsEdge(edge) || !containsVertex(vertex)) return false; return getSource(edge).equals(vertex); }
public boolean isDest(V vertex, E edge) { if (!containsEdge(edge) || !containsVertex(vertex)) return false; return getDest(edge).equals(vertex); }
public InterfaceNode2Net buildInterfaceNode2Net(Node node, Network net){ LIBNDL.logger().debug("PRUTH_BUILD_INTERFACE: " + node + ", " + net); InterfaceNode2Net i = new InterfaceNode2Net(node,net,this); sliceGraph.addEdge(i, node, net); return i; }
@Override public boolean removeEdge(E edge) { if (!containsEdge(edge)) { return false; } Pair<V> endpoints = getEndpoints(edge); V v1 = endpoints.getFirst(); V v2 = endpoints.getSecond(); // remove edge from incident vertices' adjacency sets vertices.get(v1).getSecond().remove(edge); vertices.get(v2).getFirst().remove(edge); if (directedEdges.remove(edge) == false) { // its an undirected edge, remove the other ends vertices.get(v2).getSecond().remove(edge); vertices.get(v1).getFirst().remove(edge); } edges.remove(edge); return true; }
public Graph<V,E> get() { return new SparseMultigraph<V,E>(); } };