Oct 2020 to Nov 2020

The Graph Abstract Data Type

This project was to create two implementation of a Directed Graph, an adjacency list, and an adjacency matrix. I collaborated with two other members using Git and we wrote this in Java. A test-driven development process was followed, and we used JUnit as our testing library.

After designing these datatypes, we wrote some basic algorithms to work on these graphs.

Algorithm Function
Breadth First Search Starts a graph traversal at a node, exploring all neighbouring nodes before moving to the next depth level.
Depth First Search Starts a graph traversal at a node, exploring one path to its deepest depth level, before moving to a neighbor node.
Common Upstream Vertices Given a graph and two vertices, return a list of vertices which have an edge to both vertices.
Common Downstream Vertices Given a graph and two vertices, return a list of vertices which both vertices have an edge to.
Shortest Distance Given a graph and two vertices, returns the minimum number of edges to get from one vertex to the other.
Graph Diameter Given a graph, returns the maximum distance among all the distances between every pair of vertices.