Timetabling belongs to the class of constraint satisfaction problems and is essentially an example of a resource-constrained scheduling problem, which is NP-hard [19, 5]. Here, resources are physical entities, for example: students, rooms, overhead projectors, and so on. Time periods can also be thought of as resources.
In general, timetabling problems are always NP-complete [18], which means there is no known algorithm that can find an optimal solution in a time that is bounded by a polynomial of the problem size. As a result, these problems are often solved by means of heuristics - solution procedures that focus on finding a feasible schedule of ``good'' (as opposed to optimal) quality within an acceptable amount of time.
Traditionally, timetabling has been approached by means of linear
programming (LP) with binary variables, plus some heuristics. For
example, if i identifies a teacher, j identifies a time interval
and k identifies a class then the binary variable
if teacher i has class k at time-interval j;
otherwise. Suppose we have a set of data as small as 20
teachers, 30 time intervals, and 10 classes. If we use the LP approach
to obtain a feasible schedule out of this data, then we need to deal
with over 6000 variables to represent the problem, and
possible states. Clearly the problem becomes intractable even
for very small numbers of variables.