public Set<Vertex<T>> getAdjacentVertices(Vertex<T> vertex) { Set<Vertex<T>> adjacentVertices = new HashSet<>(); Set<Edge<T>> incidentEdges = getOutgoingEdges(vertex); if (incidentEdges != null) { for (Edge<T> edge : incidentEdges) { adjacentVertices.add(edge.getOppositeVertex(vertex)); } } return adjacentVertices; }
private void removeEdge(Edge<T> edge) { // Remove the edge from the vertices incident edges. Vertex<T> source = edge.getSource(); Set<Edge<T>> sourceEdges = getOutgoingEdges(source); sourceEdges.remove(edge); Vertex<T> sink = edge.getSink(); Set<Edge<T>> sinkEdges = getIncomingEdges(sink); sinkEdges.remove(edge); // Remove the edge from edgeSet graphEdges.remove(edge); }
public Edge<T> getEdge(Vertex<T> source, Vertex<T> sink) { Set<Edge<T>> edges = getOutgoingEdges(source); for (Edge<T> edge : edges) { if (edge.getSink() == sink) { return edge; } } return null; }
private Cycle<T> searchCycle(List<Cycle<T>> cycles, Edge<T> edge) { for (Cycle<T> cycle : cycles) { List<Vertex<T>> path = cycle.getOriginPath(); Vertex<T> vertex = path.get(0); if (vertex.equals(edge.getSink())) { return cycle; } } return null; }
private void removeEdge(Edge<T> edge) { // Remove the edge from the vertices incident edges. Vertex<T> source = edge.getSource(); Set<Edge<T>> sourceEdges = getOutgoingEdges(source); sourceEdges.remove(edge); Vertex<T> sink = edge.getSink(); Set<Edge<T>> sinkEdges = getIncomingEdges(sink); sinkEdges.remove(edge); // Remove the edge from edgeSet graphEdges.remove(edge); }
public Set<Vertex<T>> getAdjacentVertices(Vertex<T> vertex) { Set<Vertex<T>> adjacentVertices = new HashSet<>(); Set<Edge<T>> incidentEdges = getOutgoingEdges(vertex); if (incidentEdges != null) { for (Edge<T> edge : incidentEdges) { adjacentVertices.add(edge.getOppositeVertex(vertex)); } } return adjacentVertices; }
public Edge<T> getEdge(Vertex<T> source, Vertex<T> sink) { Set<Edge<T>> edges = getOutgoingEdges(source); for (Edge<T> edge : edges) { if (edge.getSink() == sink) { return edge; } } return null; }
private void removeEdge(Edge<T> edge) { // Remove the edge from the vertices incident edges. Vertex<T> source = edge.getSource(); Set<Edge<T>> sourceEdges = getOutgoingEdges(source); sourceEdges.remove(edge); Vertex<T> sink = edge.getSink(); Set<Edge<T>> sinkEdges = getIncomingEdges(sink); sinkEdges.remove(edge); // Remove the edge from edgeSet graphEdges.remove(edge); }
public Set<Vertex<T>> getAdjacentVertices(Vertex<T> vertex) { Set<Vertex<T>> adjacentVertices = new HashSet<Vertex<T>>(); Set<Edge<T>> incidentEdges = getOutgoingEdges(vertex); if (incidentEdges != null) { for (Edge<T> edge : incidentEdges) { adjacentVertices.add(edge.getOppositeVertex(vertex)); } } return adjacentVertices; }
private Cycle<T> searchCycle(List<Cycle<T>> cycles, Edge<T> edge) { for (Cycle<T> cycle : cycles) { List<Vertex<T>> path = cycle.getOriginPath(); Vertex<T> vertex = path.get(0); if (vertex.equals(edge.getSink())) { return cycle; } } return null; }
public void remove(Edge<T> edge) { removeEdge(edge); Vertex<T> source = edge.getSource(); Vertex<T> sink = edge.getSink(); VertexHolder sourceHolder = graphVertices.get(source); VertexHolder sinkHolder = graphVertices.get(sink); // remove the edge from the source's outgoing edges sourceHolder.getOutgoingEdges().remove(edge); // remove the edge from the sink's incoming edges sinkHolder.getIncomingEdges().remove(edge); }
private boolean isCycle(DirectedGraph<T> graph, Vertex<T> from) { Set<Edge<T>> edges = graph.getOutgoingEdges(from); for (Edge<T> edge : edges) { Vertex<T> opposite = edge.getOppositeVertex(from); if (isPath(graph, opposite, from)) { // cycle found return true; } } return false; }
private Cycle<T> searchCycle(List<Cycle<T>> cycles, Edge<T> edge) { for (Cycle<T> cycle : cycles) { List<Vertex<T>> path = cycle.getOriginPath(); Vertex<T> vertex = path.get(0); if (vertex.equals(edge.getSink())) { return cycle; } } return null; }
public void remove(Edge<T> edge) { removeEdge(edge); Vertex<T> source = edge.getSource(); Vertex<T> sink = edge.getSink(); VertexHolder sourceHolder = graphVertices.get(source); VertexHolder sinkHolder = graphVertices.get(sink); // remove the edge from the source's outgoing edges sourceHolder.getOutgoingEdges().remove(edge); // remove the edge from the sink's incoming edges sinkHolder.getIncomingEdges().remove(edge); }
private boolean isCycle(DirectedGraph<T> graph, Vertex<T> from) { Set<Edge<T>> edges = graph.getOutgoingEdges(from); for (Edge<T> edge : edges) { Vertex<T> opposite = edge.getOppositeVertex(from); if (isPath(graph, opposite, from)) { // cycle found return true; } } return false; }
public Edge<T> getEdge(Vertex<T> source, Vertex<T> sink) { Set<Edge<T>> edges = getOutgoingEdges(source); for (Edge<T> edge : edges) { if (edge.getSink() == sink) { return edge; } } return null; }
public void remove(Edge<T> edge) { removeEdge(edge); Vertex<T> source = edge.getSource(); Vertex<T> sink = edge.getSink(); VertexHolder sourceHolder = graphVertices.get(source); VertexHolder sinkHolder = graphVertices.get(sink); // remove the edge from the source's outgoing edges sourceHolder.getOutgoingEdges().remove(edge); // remove the edge from the sink's incoming edges sinkHolder.getIncomingEdges().remove(edge); }
private boolean isCycle(DirectedGraph<T> graph, Vertex<T> from) { Set<Edge<T>> edges = graph.getOutgoingEdges(from); for (Edge<T> edge : edges) { Vertex<T> opposite = edge.getOppositeVertex(from); if (isPath(graph, opposite, from)) { // cycle found return true; } } return false; }
/** * Returns the outgoing or incoming adjacent vertices for a given vertex * * @param vertex the vertex. * @param outGoing true for returning outgoing vertices. * @return the adjacent vertices */ private List<Vertex<T>> getAdjacentVertices(Vertex<T> vertex, boolean outGoing) { List<Vertex<T>> adjacentVertices = new ArrayList<>(); Set<Edge<T>> edges; if (outGoing) { edges = getOutgoingEdges(vertex); } else { edges = getIncomingEdges(vertex); } for (Edge<T> edge : edges) { Vertex<T> oppositeVertex = edge.getOppositeVertex(vertex); adjacentVertices.add(oppositeVertex); } return adjacentVertices; }