graph-coloring-red-black-tree

This project involved implementing a solution for graph coloring using greedy algorithms and managing a dictionary using Red Black Trees. The primary objective was to generate a conflict-free final exam schedule for students at Carnegie Mellon University by processing class schedule data.

Key Tasks

  • Graph Construction: Built an adjacency matrix from the input data file, where vertices represent courses and edges represent student enrollment in multiple courses.
  • Graph Coloring: Applied a greedy algorithm to color the graph, ensuring no two adjacent vertices (courses with common students) share the same color, thus preventing exam schedule conflicts.
  • Red Black Trees: Implemented a dictionary as a Red Black Tree to efficiently manage course names and their corresponding integer identifiers.
  • File Processing: Read and parsed the input data file, and generated the required output formats, including the adjacency matrix and the final exam schedule.

Skills Demonstrated

  • Java Programming: Writing efficient and well-structured Java code.
  • Data Structures: Utilizing graphs, adjacency matrices, and Red Black Trees.
  • Algorithms: Implementing and applying greedy algorithms.
  • File I/O Operations: Handling file reading and writing operations.

The project achieved an efficient method for scheduling exams, ensuring no student had overlapping exams, and provided a comprehensive, well-documented solution with an emphasis on code readability and maintainability.