Nondeterministic programming
   HOME

TheInfoList



OR:

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 Program, programme, programmer, or programming may refer to: Business and management * Program management, the process of managing several related projects * Time management * Program, a part of planning Arts and entertainment Audio * Programm ...
(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 A computer programmer, sometimes referred to as a software developer, a software engineer, a programmer or a coder, is a person who creates computer programs — often for larger computer software. A programmer is someone who writes/creates ...
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 Backtracking is a class of algorithms for finding solutions to some computational problems, notably constraint satisfaction problems, that incrementally builds candidates to the solutions, and abandons a candidate ("backtracks") as soon as it d ...
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 th ...
, 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 ...
), 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 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 humans. Robotics integrat ...
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) Nondeterminism or nondeterministic may refer to: Computer science * Nondeterministic programming *Nondeterministic algorithm *Nondeterministic model of computation **Nondeterministic finite automaton **Nondeterministic Turing machine * Indetermina ...
* Nondeterministic programming languages *
angelic non-determinism In computer science, angelic non-determinism is the execution of a nondeterministic algorithm where particular choices are declared to always favor a desired result, if that result is possible. For example, in halting analysis of a Nondetermini ...
*
demonic non-determinism A term which describes the execution of a non-deterministic program where all choices are made in favour of non-termination. References Theoretical computer science {{comp-sci-theory-stub ...


References

{{DEFAULTSORT:Nondeterministic Programming Computer programming Programming paradigms Determinism