There are many classes of problems encountered in practice that appear to require large computational resources such as computational time, storage space, etc. The field of computational complexity studies various classes of formal models of computation such as Boolean circuits that make bounded use of their computational resources and aims to determine the classes of computational problems that these computational models can solve.