This project is a PHP implementation of my idea for a schedule generator. This means entering in all the courses that you want to take along with the available sections and the times it meets, then generating every possible non-conflicting schedule.

You can use the schedule generator project here.

You can use the University of Richmond specific version here.

The code is available on my GitHub here.

And the manual version is here.

Please comment or email with your questions, suggestions, etc.

### Algorithm

The new algorithm implemented by commit 9102865 is the Bron-Kerbosch maximal clique finding algorithm. I realized that the scheduling program could be thought of as a graph where vertices represent a section of a class and edges exist between vertices that are compatible (can be taken together).

Representing the problem as a graph means that possible non-conflicting schedules are maximal cliques. Therefore, to find all possible schedules, I implemented the Bron-Kerbosch maximal clique finding algorithm. This does run faster than my old algorithm and generates fewer total schedules because the old algorithm generated some schedules that were included in larger ones (sub-graphs).

## Old Algorithm

Below is an illustration of how the schedule generating algorithm generally works.

## Leave a Reply