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 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:
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. ...
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.
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