A nondeterministic programming language is a
language
Language is a structured system of communication. The structure of a language is its grammar and the free components are its vocabulary. Languages are the primary means by which humans communicate, and may be conveyed through a variety of ...
which can specify, at certain points in the
program (called "choice points"), various alternatives for
program flow. Unlike an
if-then statement, the method of choice between these alternatives is not directly specified by the programmer; the program must decide at
run time between the alternatives, via some general method applied to all choice points. A
programmer specifies a limited number of alternatives, but the program must later choose between them. ("Choose" is, in fact, a typical name for the nondeterministic operator.) A hierarchy of choice points may be formed, with higher-level choices leading to branches that contain lower-level choices within them.
One method of choice is embodied in
backtracking systems (such as
Amb
AMB may refer to:
* Active magnetic bearing
* Advanced Memory Buffer, used in Fully Buffered DIMM memory
* Al-Aqsa Martyrs Brigades, one of the armed sections of the Palestinian Fatah movement
* Ambergate railway station, abbreviation used in the ...
, or unification in
Prolog
Prolog is a logic programming language associated with artificial intelligence and computational linguistics.
Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily a ...
), in which some alternatives may "fail," causing the program to backtrack and try other alternatives. If all alternatives fail at a particular choice point, then an entire branch fails, and the program will backtrack further, to an older choice point. One complication is that, because any choice is tentative and may be remade, the system must be able to restore old program states by undoing side-effects caused by partially executing a branch that eventually failed.
Another method of choice is reinforcement learning, embodied in systems such as
Alisp.
[http://www.cs.berkeley.edu/~russell/papers/aaai02-alisp.pdf ] In such systems, rather than backtracking, the system keeps track of some measure of success and learns which choices often lead to success, and in which situations (both internal program state and environmental input may affect the choice). These systems are suitable for applications to
robotics
Robotics is an interdisciplinarity, interdisciplinary branch of computer science and engineering. Robotics involves design, construction, operation, and use of robots. The goal of robotics is to design machines that can help and assist human ...
and other domains in which backtracking would involve attempting to undo actions performed in a dynamic environment, which may be difficult or impractical.
See also
*
Nondeterminism (disambiguation)
*
Nondeterministic programming languages
*
angelic non-determinism
*
demonic non-determinism
References
{{DEFAULTSORT:Nondeterministic Programming
Computer programming
Programming paradigms
Determinism