This project implements a Graph Acyclicity Checker using the sink elimination algorithm to determine if a directed graph is acyclic. It also identifies and outputs cycles in non-acyclic graphs. The project was developed as part of my coursework for the BEng in Software Engineering at Informatics Institute of Technology (IIT), Sri Lanka, where I achieved a distinction score of 88/100.
- Sink Elimination Algorithm: Iteratively removes sink vertices to check graph acyclicity.
- Cycle Detection: Identifies and outputs cycles in cyclic graphs.
- Dynamic Input Parsing: Reads graph data dynamically from text files.
- Graph Representation: Efficiently represents directed graphs using adjacency lists.
- Performance Analysis: Includes runtime measurement and theoretical Big-O complexity evaluation.
- Algorithm Design: Implementing sink elimination and cycle detection.
- Data Structures: Using adjacency lists for efficient graph representation.
- Java Programming: File parsing, recursion, and handling dynamic data.
- Performance Analysis: Measuring and analyzing runtime and complexity.