This is the original draft manuscript as submitted for publication in the fourth edition of the Encyclopedia of Computer Science, edited by Anthony Ralston, Edwin Reilly, and David Hemmendinger.