in reply to Room Booking... any thoughts?
A very similar problem is treated in "the Panther" aka:
Advanced Perl Programming by Sriram Srinivasan.
Chapter 2. Professors, Students, Courses
He treats each item (IE course) as a hash, and a professor's (or course's) schedule as a bitmap vector. Each bit represents a time slot that can be reserved/scheduled.
For example, to see if a professor is available to teach a course, AND his schedule vector with the Course's. Any non 0 result represents a collision.