On the Theory of Computing
I'm often asked the question "what do you do?". The question is typically posed by strangers and sometimes really means "who are you?". The short answers that are most appropriate in my case are "mathematician" and "computer scientist". The second label has the terrible effect that people think I care about the iPhone (I do), can help them buy a cheap computer (I can't) and/or am involved in making a lot of money in the tech industry (I wish). The first label is somewhat more accurate in terms of the type of work I do, and gives me a certain air of mystery, but has the problem that I may have to explain away the technicality that I actually work at computer science departments.
This article is an effort to give a reasonable answer to this question, one that I hope that anyone can understand, assuming the questioner really means "what do you do?" and not "who are you?".
The naming of "theory of computing" (from now "TOC"), my primary area of research, is unfortunate. It leads most people to think TOC has to do with speeding up the operation of computers, or with designing better software for computers. While some research in TOC does have an immediate impact on the way computers operate, a lot of the ideas are about a slew of different topics that at first sight may seem to have little to do with computers. Indeed, the uniting theme of TOC research is hard to describe, but it seems to have something to do with studying how information can be manipulated and measuring the costs associated with manipulating information. To understand the things we want to understand, we create mathematical models that describe the part of the world that we want to study. We then prove properties of these models, discovering facts that are true beyond any doubt about the mathematical models that we have designed.
To give an idea of the kinds of questions we think about, let us see some examples. We shall see several distinct examples with different themes. Here I will describe ideas in plain English, but keep in mind that everything that I'm going to talk about is backed up by very concrete mathematical models and proofs.
The Power of Interaction
Suppose a blind man finds himself at a store with the goal of buying two differently colored sheets of paper. The blind man doesn't trust the salesman at the store to be honest about the color of the paper. Is there a way that he can use the salesman to convince himself that the sheets of paper he is buying are in fact different in color, even though he cannot tell the difference himself?
There is a simple solution to this task: the blind customer can first ask the salesman to identify what the colors of the sheets of paper are. Then he takes the sheets behind his back and shuffles them, keeping track of where each paper is before asking the salesman to again identify the colors of the sheets. If the two sheets are indistinguishable, the salesman cannot keep track of what colors he assigned to which sheets and the best he can do is get lucky to pass the test with a chance of 50%. If the customer repeats the test many times, he can make sure that the chance that the salesman has of tricking him is so small as to be insignificant. On the other hand, if the sheets are in fact of a different color, the salesman will never make a mistake. In this way, the blind man can make sure that the sheets he is buying can be distinguished by the salesman.
The idea that a "computationally stronger" person can convince a "computationally weaker" person, of something that the weaker person cannot figure out for himself is a very powerful and fundamental discovery in TOC. In the example above, computational strength was measured in terms of the ability to see, but the same ideas can be applied in the case that the computationally stronger party has a more powerful computer, or knows some secret that the weaker party does not know. Among other things, these ideas have led to the discovery of the beautiful and counter-intuitive concept of Zero Knowledge Proofs. These are ways for two people A and B to talk to each other so that A is convinced that B knows a secret, yet A learns no information about that secret! Imagine that we'd like a system for customers at a bank to have a certain password that gives them access to their account. If a customer walks up to the counter, he doesn't want to reveal his password to the clerk behind the counter, but he does want to convince the clerk that he knows the password. Zero Knowledge Proofs give a way for the two parties to talk to each other so that at the end of the conversation, the clerk can be confident that the customer knows the password, yet the customer can be confident that the clerk does not know anything about his password!
Using Randomness to gain an Advantage
Let's imagine that we are stuck in a maze with 1000 identically furnished rooms and we don't know how the rooms are connected to each other before hand. What's the best way to find the exit of the maze?
The first thing one might think of is to map the maze: start walking the maze room by room, remembering where we've been and learning more and more about how the rooms are connected to each other. That idea may work when the number of rooms is small, but with a 1000 rooms, keeping track of where things are seems hopelessly complicated. If we knew that the rooms were all on one floor, then we could walk along one of the walls of the maze, walking through doors so that the wall is always to our left. That would guarantee that we'd visit every room on the floor without having to remember where we've been before. This idea doesn't work if all the rooms of the maze are not on the same floor, since we may come to a situation where it is not clear which of the exits of the room we should take next without once again making a big map. Surprisingly, it can be shown that if we simply walk the maze at random, picking the exits from each subsequent room randomly, we are extremely likely to visit every room in the maze in a relatively short amount of time, no matter what the shape of the maze! In other words, the chance that we don't find the exit of the maze in this random path is extremely small, so small that finding the exit is essentially a certainty. This is a very nice solution, because once we know that it works, executing it takes almost no effort.
Next suppose we are organizing a dinner party with seating at two different tables. The guests all have relationships with each other, each pair of guests are either friends or strangers. What we'd like to do is seat the guests at the two tables in such a way that the number of pairs of guests who are strangers and sit at different tables is maximized. How can we figure out the best arrangement of guests? This is a surprisingly difficult task. We still don't have any idea of how to do this that is any better than simply trying every single arrangement until we find the best one! On the other hand, it's quite easy to prove that if we assign each guest to a table at random by flipping a coin, we can expect to get an arrangement that is at least half as good as the best arrangement; the number of pairs of strangers who end up at different tables will typically be half as high as it can possibly be. So again, this simple random process gives something quite good.
In fact, these examples point to something that is more of a rule than an exception. The use of randomness is widespread, and not just in our limited context. For example, random mutations to genetic code are the key mechanism through which species adapt to unpredictable challenges and evolve into better versions. Our best physics models indicate that our universe also evolves randomly, the current state of the world does not determine the state of the world in the future.
Since doing things at random is so often the best way to deal with many tasks, TOC has invested a lot of effort in the past few decades to understand exactly why doing things at random is such a good idea, and whether or not this use of randomness is really necessary. For example, in the dinner party above, we can achieve the same kind of result with a process that does not involve randomness: we seat the guests at the two tables as they walk in. As each guest walks in, we look at which table has more strangers for this guest, and seat the guest at the other table. This process also guarantees that we obtain an arrangement that's half as good as the best one, though it's a bit more tiresome to implement than the idea that used randomness, since we could have had each guest flip their own coins and do the random solution in parallel. So here the randomness was not really necessary; one could achieve the same result using a slightly more inefficient non-random process.
An example of a basic question that we'd like to answer is: is it true that every task that can be handled efficiently with a random process, must have a solution of comparable efficiency that does not involve doing things randomly? This vague question can be formulated (via the powerful mathematical models developed in TOC) into a very concrete mathematical problem. The answer to this question is still unknown and is one of my own major research interests.
Reductions between Tasks and Classes of Tasks
Now it may seem that the tasks that we have discussed so far (navigating mazes, figuring out seating arrangements) are just curiosities; ideas that we develop to tackle a particular kind of task may seem to have nothing to do with ideas needed to complete other kinds of tasks. However, it turns out that there are actually many connections (called reductions) between different types of tasks. This is a very basic concept that we are all already familiar with. Consider the task of multiplying two large numbers by hand. We all know how to do this: we write the numbers down and start working on the digits one by one, multiplying single digits and adding them. This is an example of a reduction. in this case we have learnt how to reduce the task of multiplying two large numbers to the task of multiplying and adding single digit numbers. As long as we know how to multiply and add single digits, we can accomplish the harder task of multiplying many digit numbers.
Understanding whether or not these types of tasks can be efficiently handled is perhaps the central question in TOC today (one that carries a million dollars in prize money: http://www.claymath.org/millennium/), exactly because of the relevance to a whole variety of other tasks.
Conclusion