This project implements various graph algorithms in Java, including breadth-first search, depth-first search, and topological sort. It includes both directed and undirected graph implementations using adjacency lists.
-
Graph Implementations:
- Adjacency List Directed Graph
- Adjacency List Undirected Graph
-
Algorithms:
- Breadth-First Search (BFS)
- Depth-First Search (DFS)
- Topological Sort
- Six Degrees of Kevin Bacon implementation
Graph.java
- Abstract base class for graph implementationsAdjacencyListDirectedGraph.java
- Directed graph implementationAdjacencyListUndirectedGraph.java
- Undirected graph implementationBreadthFirstSearch.java
- BFS algorithm implementationDepthFirstSearch.java
- DFS algorithm implementationTopologicalSort.java
- Topological sorting implementationVertex.java
- Vertex class implementationGraphDriver.java
- Main driver class with test cases and examples
The program accepts input commands in the format:
level_test additional_args
Where level_test
is a number between 1 and 5:
-
Print graph (U/D for undirected/directed)
1 U 1 D
-
Breadth-first traversal
2 U [startVertex] 2 D [startVertex]
-
Depth-first traversal
3 U [startVertex] 3 D [startVertex]
-
Topological Sort (Y/N to print graph)
4 Y 4 N
-
Kevin Bacon number calculator
5
// Create an undirected graph
Graph g = new AdjacencyListUndirectedGraph();
// Add edges
g.addEdge("a", "b");
g.addEdge("b", "c");
g.addEdge("b", "d");
// Perform BFS
BreadthFirstSearch bfs = new BreadthFirstSearch(g, g.getVertex("a"));
List<Vertex> traversalList = bfs.getBreadFirstTraversalList();
// Find shortest path
List<Vertex> path = bfs.pathTo(g.getVertex("d"));
This project is for educational purposes only.
Starter files were provided by instructors at Flinders University.
Do not redistribute or use for commercial purposes.