Abstract

A fundamental problem in computer science is, stated informally: Given a problem, how hard is it?. We measure hardness by looking at the following question: Given a set A whats is the fastest algorithm to determine if “x ∈ A? ” We measure the speed of an algorithm by how long it takes to run on inputs of length n, as a function of n. For example, sorting a list of length n can be done in roughly n log n steps. Obtaining a fast algorithm is only half of the problem. Can you prove that there is no better algorithm? This is notoriously difficult; however, we can classify problems into complexity classes where those in the same class are roughly equally hard. In this chapter we define many complexity classes and describing natural problems that are in them. Our classes go all the way from regular languages to various shades of undecidable. We then summarize all that is known about these classes.

    Similar works

    Full text

    thumbnail-image

    Available Versions