Content deleted Content added
m linking |
Citation bot (talk | contribs) Added isbn. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Computer programming | #UCB_Category 142/144 |
||
(3 intermediate revisions by 3 users not shown) | |||
Line 1:
{{more citations needed|date =April 2017}}
{{Programming paradigms}}▼
A '''nondeterministic programming''' language is a [[programming language|language]] which can specify, at certain points in the [[Computer program|program]] (called "choice points"), various alternatives for [[Control flow|program flow]]. Unlike an [[Conditional (computer programming)|if-then statement]], the method of choice between these alternatives is not directly specified by the programmer; the program must decide at [[runtime (program lifecycle phase)|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 (evaluator)|Amb]],<ref>{{Cite web |
Another method of choice is [[reinforcement learning]], embodied in systems such as [[Alisp]].<ref>{{cite journal|author1=David Andre |author2=Stuart J. Russell|title=State abstraction for programmable reinforcement learning agents|journal=Eighteenth National Conference on Artificial Intelligence|date=July 2002|pages=119–125|isbn=978-0-262-51129-2 |url=https://dl.acm.org/doi/10.5555/777092.777114}}</ref> 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]] 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==
Line 17 ⟶ 16:
==References==
{{Reflist}}
▲{{Programming paradigms navbox}}
{{DEFAULTSORT:Nondeterministic Programming}}
|