Usefulness Of Non Determinism

From InteractiveComputationIsMorePowerfulThanNonInteractive:

"Nondeterminism" is in practice used to refer to any unpredictability in the outcome of a process. IOW, we as observers cannot predict the outcome given our current knowledge. There are several factors that can lead to this:

In attempting to predict something like the weather, for instance, all of these factors apply. They also apply to computer systems: for instance, the spinning of a disk drive (and therefore its observable response time) is subject to air turbulence, which again involves all of these factors.

In sequential computation, the nondeterminism that is always present in the implementation of the computer system can be easily hidden. In most forms of concurrent computation (excluding DeclarativeConcurrency), it cannot be hidden. It really is not usually the case that we know some details of the computation -- such as the message interarrival times in the ActorsModel -- and even if we did know them, we would not want to have to rely on that knowledge.

A model of computation is a specification for a computer system. There is another kind of unpredictability that applies only to specifications: the spec may intentionally allow multiple outcomes from a given initial or intermediate state (this is sometimes called "don't care" or specification nondeterminism).

There are two main reasons for introducing specification nondeterminism:

So in a sense, "ignorance of determinism" is a form of nondeterminism.


Some people dispute the above explanation. For instance:

The first two factors (ignorance) don't produce non-determinism. -- EricHodges

Do you consider the outcome of rolling a well-shaken die to be nondeterministic? That is unpredictable due to precisely the same factors.

No, I don't. Complexity doesn't negate determinism. No matter how well ActorsModel shakes its dice, the dice behave deterministically.

Well, I submit that you have an unconventional view of nondeterminism.

Refusing to predict an event doesn't make the event unpredictable. Model error is an error and can be corrected. If the ActorsModel mandated amplification of quantum effects so that they decided which message won the race, then that would produce non-deterministic output. But it doesn't.

[...] Run any "program" (the same tape) twice (or in parallel on two TMs) you'll always get the same output. The capability of running the same program and getting distinct output is non-determinism. That's something TM do not have. Therefore you cannot ever "model" a non-deterministic machine inside a TM, because you'd have to be able to run the same program twice and be able to obtain distinct results. The ActorsModel is non-deterministic by definition, it has nothing to do with QM or whatever, it's a mathematical abstraction -- not a description of physical phenomena.

I'm not saying you can model a non-deterministic machine inside a TM. I'm saying using the ActorsModel doesn't make a machine non-deterministic. It isn't non-deterministic by definition. ...

Well, the ActorsModel is perhaps a special case, because it was explicitly designed to reflect physical implementability and to be motivated by physical constraints on computation. For instance, quoting from the abstract of "Actors and Continuous Functionals" <http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-194.pdf>:

  This paper presents precise versions of some "laws" that must be satisfied by
  computations involving communicating parallel processes. The laws take the form
  of stating plausible restrictions on the histories of computations that are physically
  realizable. The laws are very general in that they are obeyed by parallel processes
  executing on a time varying number of distributed physical processors. For example,
  some of the processors might be in orbiting satellites. The laws are justified by
  appeal to physical intuition and are to be regarded as falsifiable assertions about
  the kinds of computations that occur in nature rather than as proved theorems in
  mathematics. The laws are intended to be used to analyze the mechanisms by which
  multiple processes can communicate to work effectively together.

Also, in Section VII:

  We would like to formalize the physical intuition that computation is local and there
  can be no "action at a distance". The laws of locality presented in this section are
  intended to capture these intuitions.

OTOH, some aspects of the actor model may specify stronger constraints on computation than physical reality. For example, it is a theorem proven in "Foundations of Actor Semantics" <http://www.cypherpunks.to/erights/history/actors/AITR-633.pdf> that there exists a global ordering consistent with the partial event ordering specified by the actor laws. It is not obvious, and probably not true that the corresponding property holds physically in either GeneralRelativity or QuantumMechanics. OTOH^2, it may be that the ActorsModel is more useful as a result of not quite reflecting the physical realities that it was intended to reflect. A model that tried to allow all of the phenomena permitted by quantum mechanics could be quite confusing!


An example of an entire branch of computation that depends critically on nondeterminism is cryptography. Key generation and many other cryptographic operations require an unpredictable source of randomness, which cannot be replaced by any pseudorandom approximation.


Is the test for "usefulness" also non-deterministic? :-)


See NonDeterministic

CategoryMath CategoryConcurrency CategoryPhysics


EditText of this page (last edited May 10, 2010) or FindPage with title or text search