Source: http://intranetetu.free.fr/5A_IR/CS546/CS546_Exam_Nov2008.pdf