Deterministic algorithm
deterministic algorithm, deterministic and non deterministic algorithmIn computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently
Formally, a deterministic algorithm computes a mathematical function; a function has a unique value for any input in its domain, and the algorithm is a process that produces this particular value as output
Contents
 1 Formal definition
 2 What makes algorithms nondeterministic
 3 Disadvantages of Determinism
 4 Determinism categories in languages
 41 Mercury
 42 Haskell
 43 ML family and derived languages
 44 Java
 5 References
Formal definitionedit
Deterministic algorithms can be defined in terms of a state machine: a state describes what a machine is doing at a particular instant in time State machines pass in a discrete manner from one state to another Just after we enter the input, the machine is in its initial state or start state If the machine is deterministic, this means that from this point onwards, its current state determines what its next state will be; its course through the set of states is predetermined Note that a machine can be deterministic and still never stop or finish, and therefore fail to deliver a result
Examples of particular abstract machines which are deterministic include the deterministic Turing machine and deterministic finite automaton
What makes algorithms nondeterministicedit
A variety of factors can cause an algorithm to behave in a way which is not deterministic, or nondeterministic:
 If it uses external state other than the input, such as user input, a global variable, a hardware timer value, a random value, or stored disk data
 If it operates in a way that is timingsensitive, for example if it has multiple processors writing to the same data at the same time In this case, the precise order in which each processor writes its data will affect the result
 If a hardware error causes its state to change in an unexpected way
Although real programs are rarely purely deterministic, it is easier for humans as well as other programs to reason about programs that are For this reason, most programming languages and especially functional programming languages make an effort to prevent the above events from happening except under controlled conditions
The prevalence of multicore processors has resulted in a surge of interest in determinism in parallel programming and challenges of nondeterminism have been well documented12 A number of tools to help deal with the challenges have been proposed3456 to deal with deadlocks and race conditions
Disadvantages of Determinismedit
It is advantageous, in some cases, for a program to exhibit nondeterministic behavior The behavior of a card shuffling program used in a game of blackjack, for example, should not be predictable by players — even if the source code of the program is visible The use of a pseudorandom number generator is often not sufficient to ensure that players are unable to predict the outcome of a shuffle A clever gambler might guess precisely the numbers the generator will choose and so determine the entire contents of the deck ahead of time, allowing him to cheat; for example, the Software Security Group at Reliable Software Technologies was able to do this for an implementation of Texas Hold 'em Poker that is distributed by ASF Software, Inc, allowing them to consistently predict the outcome of hands ahead of time7 These problems can be avoided, in part, through the use of a cryptographically secure pseudorandom number generator, but it is still necessary for an unpredictable random seed to be used to initialize the generator For this purpose a source of nondeterminism is required, such as that provided by a hardware random number generator
Note that a negative answer to the P=NP problem would not imply that programs with nondeterministic output are theoretically more powerful than those with deterministic output The complexity class NP complexity can be defined without any reference to nondeterminism using the verifierbased definition
Determinism categories in languagesedit
Mercuryedit
This logicfunctional programming language establish different determinism categories for predicate modes as explained in the ref89
Haskelledit
Haskell provides several mechanisms:
nondeterminism or notion of Fail the Maybe and Either types include the notion of success in the result
 the fail method of the class Monad, may be used to signal fail as exception
 the Maybe monad and MaybeT monad transformer provide for failed computations stop the computation sequence and return Nothing10
ML family and derived languagesedit
As seen in Standard ML, OCaml and Scala
 The option type includes the notion of success
Javaedit
 The null reference value may represent an unsuccessful outofdomain result
Referencesedit
 ^ Edward A Lee "The Problem with Threads" PDF Retrieved 20090529
 ^ Bocchino Jr, Robert L; Adve, Vikram S; Adve, Sarita V; Snir, Marc 2009 Parallel Programming Must Be Deterministic by Default USENIX Workshop on Hot Topics in Parallelism
 ^ "Intel Parallel Inspector Thread Checker" Retrieved 20090529
 ^ Yuan Lin "Data Race and Deadlock Detection with Sun Studio Thread Analyzer" PDF Retrieved 20090529
 ^ Intel "Intel Parallel Inspector" Retrieved 20090529
 ^ David Worthington "Intel addresses development life cycle with Parallel Studio" Retrieved 20090526
 ^ Gary McGraw and John Viega Make your software behave: Playing the numbers: How to cheat in online gambling http://wwwibmcom/developerworks/library/splaying/#h4
 ^ Determinism categories in the Mercury programming language
 ^ Mercury predicate modes
 ^ Representing failure using the Maybe monad
 ^ The class MonadPlus
deterministic algorithm, deterministic algorithm examples, deterministic algorithms, deterministic algorithms diagram, deterministic and non deterministic algorithm, examples of deterministic algorithm examples, non deterministic algorithm, non deterministic algorithms, what is deterministic algorithm, what is non deterministic algorithm
Deterministic algorithm Information about

Deterministic algorithm beatiful post thanks!
29.10.2014
Deterministic algorithm
Deterministic algorithm
Deterministic algorithm viewing the topic.
There are excerpts from wikipedia on this article and video
Random Posts
Amorphous metal
An amorphous metal also known as metallic glass or glassy metal is a solid metallic material, usuall...Arthur Lake (bishop)
Arthur Lake September 1569 – 4 May 1626 was Bishop of Bath and Wells and a translator of the King Ja...John Hawkins (author)
Sir John Hawkins 29 March 1719 – 21 May 1789 was an English author and friend of Dr Samuel Johnson a...McDonnell Douglas MD12
The McDonnell Douglas MD12 was an aircraft design study undertaken by the McDonnell Douglas company...Search Engine
Our site has a system which serves search engine function.
You can search all data in our system with above button which written "What did you look for? "
Welcome to our simple, stylish and fast search engine system.
We have prepared this method why you can reach most accurate and most up to date knowladge.
The search engine that developed for you transmits you to the latest and exact information with its basic and quick system.
You can find nearly everything data which found from internet with this system.
Random Posts
Body politic
The body politic is a metaphor that regards a nation as a corporate entity,2 likened to a human body...Kakamega
Kakamega is a town in western Kenya lying about 30 km north of the Equator It is the headquarte...Academic year
An academic year is a period of time which schools, colleges and universities use to measure a quant...Lucrezia Borgia
Lucrezia Borgia Italian pronunciation: luˈkrɛttsja ˈbɔrdʒa; Valencian: Lucrècia Borja luˈkrɛsia...© Copyright © 2014. Search Engine