package com.anuragkapur.ds.graph;
import java.util.ArrayList;
import java.util.List;
/**
* @author: anuragkapur
* @since: 09/05/2014
*/
public class GraphFactory {
/**
* 1----->2--------->4
* | > ^
* | / |
* | / |
* | / 5
* > /
* 3
*
* @return a directed acyclic graph
*/
public static Graph getDirectedAcyclicGraph() {
Vertex v1 = new Vertex(1);
Vertex v2 = new Vertex(2);
Vertex v3 = new Vertex(3);
Vertex v4 = new Vertex(4);
Vertex v5 = new Vertex(5);
List<Vertex> vertices = new ArrayList<>(5);
vertices.add(v1);
vertices.add(v2);
vertices.add(v3);
vertices.add(v4);
vertices.add(v5);
Edge edge1 = new DirectedEdge(v1, v2);
Edge edge2 = new DirectedEdge(v1, v3);
Edge edge3 = new DirectedEdge(v3, v2);
Edge edge4 = new DirectedEdge(v2, v4);
Edge edge5 = new DirectedEdge(v5, v4);
List<Edge> edges = new ArrayList<>(5);
edges.add(edge1);
edges.add(edge2);
edges.add(edge3);
edges.add(edge4);
edges.add(edge5);
Graph graph = new Graph();
graph.setVertices(vertices);
graph.setEdges(edges);
return graph;
}
/**
* 1----->2--------->4
* ^ / ^
* | / |
* | / |
* | / 5
* | <
* 3
*
* @return a directed cyclic graph
*/
public static Graph getDirectedCyclicGraph() {
/*
1----->2--------->4
^ / ^
| / |
| / |
| / 5
| <
3
*/
Vertex v1 = new Vertex(1);
Vertex v2 = new Vertex(2);
Vertex v3 = new Vertex(3);
Vertex v4 = new Vertex(4);
Vertex v5 = new Vertex(5);
List<Vertex> vertices = new ArrayList<>(5);
vertices.add(v1);
vertices.add(v2);
vertices.add(v3);
vertices.add(v4);
vertices.add(v5);
Edge edge1 = new DirectedEdge(v1, v2);
Edge edge2 = new DirectedEdge(v2, v3);
Edge edge3 = new DirectedEdge(v3, v1);
Edge edge4 = new DirectedEdge(v2, v4);
Edge edge5 = new DirectedEdge(v5, v4);
List<Edge> edges = new ArrayList<>(5);
edges.add(edge1);
edges.add(edge2);
edges.add(edge3);
edges.add(edge4);
edges.add(edge5);
Graph graph = new Graph();
graph.setVertices(vertices);
graph.setEdges(edges);
return graph;
}
}