<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=89.71.0.0%2F16</id>
	<title>formulasearchengine - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=89.71.0.0%2F16"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/wiki/Special:Contributions/89.71.0.0/16"/>
	<updated>2026-08-04T15:51:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.47.0-wmf.7</generator>
	<entry>
		<id>https://en.formulasearchengine.com/w/index.php?title=Quantum_annealing&amp;diff=13919</id>
		<title>Quantum annealing</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/w/index.php?title=Quantum_annealing&amp;diff=13919"/>
		<updated>2014-02-03T20:39:02Z</updated>

		<summary type="html">&lt;p&gt;89.71.154.32: /* Implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;kinetic Monte Carlo (KMC)&#039;&#039;&#039; method is a [[Monte Carlo method]] computer simulation intended to simulate the time evolution of some processes occurring in nature.  Typically these are processes that occur with a given known rate.  It is important to understand that these rates are inputs to the KMC algorithm, the method itself cannot predict them.&lt;br /&gt;
&lt;br /&gt;
The KMC method is essentially the same as the [[dynamic Monte Carlo method]] and the [[Gillespie algorithm]].&lt;br /&gt;
&lt;br /&gt;
==Algorithm==&lt;br /&gt;
[[Image:Transfer_rates.svg|thumb|240px|alt=Transfer rates between one initial and four final states|At each step, the system can jump into several ending states, the transfer rates between the initial state and all the possible ending states are supposed to be known.]]&lt;br /&gt;
&lt;br /&gt;
The KMC algorithm for simulating the time evolution of a system where some processes can occur with known rates r can be written for instance as follows:&lt;br /&gt;
&lt;br /&gt;
[[Image:State decision in KMC.svg|thumb|240px|Choice of the final state : a random var is chosen between 0 and Γ&amp;lt;sub&amp;gt;tot&amp;lt;/sub&amp;gt;; the probability that the system jumps into state &#039;&#039;i&#039;&#039; is proportional to Γ&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
# Set the time &amp;lt;math&amp;gt;t = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Form a list of all possible rates in the system &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt;&lt;br /&gt;
# Calculate the cumulative function &amp;lt;math&amp;gt;R_i=\sum_{j=1}^i r_j&amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;i=1,\ldots,N&amp;lt;/math&amp;gt;, where &#039;&#039;N&#039;&#039; is the total number of transitions.&lt;br /&gt;
# Get a uniform random number &amp;lt;math&amp;gt;u \in (0, 1]&amp;lt;/math&amp;gt;&lt;br /&gt;
# Find the event to carry out &#039;&#039;i&#039;&#039; by finding the &#039;&#039;i&#039;&#039; for which &amp;lt;math&amp;gt;R_{i-1} &amp;lt; u R_N \le R_i&amp;lt;/math&amp;gt; (this can be achieved efficiently using [[binary search]]).&lt;br /&gt;
# Carry out event &#039;&#039;i&#039;&#039;.&lt;br /&gt;
# Get a new uniform random number &amp;lt;math&amp;gt;u^\prime \in (0, 1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Update the time with &amp;lt;math&amp;gt;t = t + \Delta t&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\Delta t =  R_N^{-1} \ln(1/u^\prime)&amp;lt;/math&amp;gt;&lt;br /&gt;
# Recalculate all rates &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; which may have changed due to the transition. If appropriate, remove or add new transitions &#039;&#039;i&#039;&#039;. Update &#039;&#039;N&#039;&#039; and the list of events accordingly.&lt;br /&gt;
# Return to step 2.&lt;br /&gt;
&lt;br /&gt;
(Note: because the average value of &amp;lt;math&amp;gt;\ln(1/u^\prime)&amp;lt;/math&amp;gt; is equal to unity, the same &#039;&#039;average&#039;&#039; time scale can be obtained by instead using &amp;lt;math&amp;gt;\Delta t = R_N^{-1} &amp;lt;/math&amp;gt; in step 8. In this case, however, the delay associated with transition &#039;&#039;i&#039;&#039; will not be drawn from the [[Poisson distribution]] described by &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt;, but will instead be the mean of that distribution.)&lt;br /&gt;
&lt;br /&gt;
This algorithm is known in different sources variously as the &#039;&#039;&#039;residence-time algorithm&#039;&#039;&#039; or the &#039;&#039;&#039;&#039;&#039;n&#039;&#039;-fold way&#039;&#039;&#039; or the &#039;&#039;&#039;Bortz-Kalos-Lebowitz  (BKL)&#039;&#039;&#039; algorithm or just the &#039;&#039;&#039;kinetic Monte Carlo (KMC)&#039;&#039;&#039; algorithm. It is important to note that the timestep involved is a function of the probability that all events &#039;&#039;i&#039;&#039;, did not occur.&lt;br /&gt;
&lt;br /&gt;
==Time-dependent Algorithms==&lt;br /&gt;
If the rates &amp;lt;math&amp;gt;r_i(t)&amp;lt;/math&amp;gt; are time dependent, step 8 has to be modified by (Prados 1997):&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_{0}^{\Delta t} R_i(t&#039;) dt&#039; =  \ln(1/u^\prime)&amp;lt;/math&amp;gt;.&lt;br /&gt;
The reaction (step 5) has to be chosen after this  by&lt;br /&gt;
:&amp;lt;math&amp;gt;R_{i-1}(\Delta t)  &amp;lt;  u  R_N( \Delta t ) \leq R_i(\Delta t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another very similar algorithm is called the First Reaction Method (FRM). It consists of choosing the first-occurring reaction, meaning to choose the smallest time &amp;lt;math&amp;gt;\Delta t_i&amp;lt;/math&amp;gt;, and the corresponding reaction number &#039;&#039;i&#039;&#039;, from the formula&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_{0}^{\Delta t_i} r_i(t&#039;) dt&#039; =  \ln(1/u_i) &amp;lt;/math&amp;gt;,&lt;br /&gt;
where the &amp;lt;math&amp;gt;u_i \in (0, 1]&amp;lt;/math&amp;gt; are N random numbers.&lt;br /&gt;
&lt;br /&gt;
==Comments on the algorithm==&lt;br /&gt;
The key property of the KMC algorithm (and of the FRM one) is that if the rates are correct, if the processes associated with the rates are of the [[Poisson process]] type, and if different processes are independent (i.e. not correlated) then the KMC algorithm gives the correct time scale for the evolution of the simulated system.&lt;br /&gt;
&lt;br /&gt;
If furthermore the transitions follow [[detailed balance]], the KMC algorithm can be used to simulate thermodynamic equilibrium. However, KMC is widely used to simulate non-equilibrium processes (Meng 1994), in which case detailed balance need not be obeyed.&lt;br /&gt;
&lt;br /&gt;
The KMC algorithm is efficient in the sense that every iteration is guaranteed to produce a transition. However, in the form presented above it requires &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; operations for each transition, which is not too efficient. In many cases this can be much improved on by binning the same kinds of transitions into bins, and/or forming a tree data structure of the events. A constant-time scaling algorithm of this type has recently been developed and tested in (Slepoy 2008).&lt;br /&gt;
&lt;br /&gt;
The major disadvantage with KMC is that all possible rates &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; and reactions have to be known in advance. The method itself can do nothing about predicting them.&lt;br /&gt;
&lt;br /&gt;
==Examples of use==&lt;br /&gt;
KMC has been used in simulations of the following physical systems:&lt;br /&gt;
# Surface diffusion&lt;br /&gt;
# Surface growth (Meng 1996)&lt;br /&gt;
# [[Vacancy defect|Vacancy]] diffusion in alloys (this was the original use in (Young 1966))&lt;br /&gt;
# Coarsening of domain evolution&lt;br /&gt;
# Defect mobility and clustering in ion or neutron irradiated solids including, but not limited to, damage accumulation and amorphization/recrystallization models.&lt;br /&gt;
# Viscoelasticity of physically crosslinked networks (Baeurle 2006)&lt;br /&gt;
&lt;br /&gt;
To give an idea what the &amp;quot;objects&amp;quot; and &amp;quot;events&amp;quot; may be in practice, here is one concrete simple example, corresponding to example 2 above.&lt;br /&gt;
&lt;br /&gt;
Consider a system where individual atoms are deposited on a surface one at a time (typical of [[physical vapor deposition]]), but also may migrate on the surface with some known jump rate &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt;. In this case the &amp;quot;objects&amp;quot; of the KMC algorithm are simply the individual atoms.&lt;br /&gt;
&lt;br /&gt;
If two atoms come right next to each other, they become immobile. Then the flux of incoming atoms determines a rate &#039;&#039;r&#039;&#039;&amp;lt;sub&amp;gt;deposit&amp;lt;/sub&amp;gt;, and the system can be simulated with KMC considering all deposited mobile atoms which have not (yet) met a counterpart and become immobile. This way there are the following events possible at each KMC step:&lt;br /&gt;
&lt;br /&gt;
* A new atom comes in with rate &#039;r&#039;&#039;&amp;lt;sub&amp;gt;deposit&amp;lt;/sub&amp;gt;&lt;br /&gt;
* An already deposited atom jumps one step with rate &#039;&#039;w&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
After an event has been selected and carried out with the KMC algorithm, one then needs to check whether the new or just jumped atom has become immediately adjacent to some other atom. If this has happened, the atom(s) which are now adjacent needs to be moved away from the list of mobile atoms, and correspondingly their jump events removed from the list of possible events.&lt;br /&gt;
&lt;br /&gt;
Naturally in applying KMC to problems in physics and chemistry, one has to first consider whether the real system follows the assumptions underlying KMC well enough.&lt;br /&gt;
Real processes do not necessarily have well-defined rates, the&lt;br /&gt;
transition processes may be correlated, in case of atom or particle jumps&lt;br /&gt;
the jumps may not occur in random directions, and so on. When simulating&lt;br /&gt;
widely disparate time scales one also needs to consider whether&lt;br /&gt;
new processes may be present at longer time scales. If any of these&lt;br /&gt;
issues are valid, the time scale and system evolution predicted by KMC&lt;br /&gt;
may be skewed or even completely wrong.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
The first  publication which described the basic features of the KMC method (namely using a cumulative function to select an event and a time scale calculation of the form 1/&#039;&#039;R&#039;&#039;) was by Young and Elcock in 1966 (Young 1966). The residence-time algorithm was also published at about the same time in (Cox 1965).&lt;br /&gt;
&lt;br /&gt;
Apparently independent of the work of Young and Elcock, Bortz, Kalos and Lebowitz (Bortz 1975) developed a KMC algorithm for simulating the [[Ising model]], which they called the &#039;&#039;n-fold way&#039;&#039;. The basics of their algorithm is the same as that of (Young 1966), but they do provide much greater detail on the method.&lt;br /&gt;
&lt;br /&gt;
The following year [[Dan Gillespie]] published what is now known as the [[Gillespie algorithm]] to describe chemical reactions (Gillespie 1976). The algorithm is similar and the time advancement scheme essentially the same as in KMC.&lt;br /&gt;
&lt;br /&gt;
There is as of the writing of this (June 2006) no definitive treatise of the theory of KMC, but Fichthorn and Weinberg have discussed the theory for thermodynamic equilibrium KMC simulations in detail in (Fichthorn 1991). A good introduction is given also by Art Voter (Voter 2005),[http://www.ipam.ucla.edu/publications/matut/matut_5898_preprint.pdf] and by A.P.J. Jansen (Jansen 2003),[http://arxiv.org/abs/cond-mat/0303028],&lt;br /&gt;
and a recent review is (Chatterjee 2007) or (Chotia 2008).&lt;br /&gt;
&lt;br /&gt;
In March, 2006 the, probably, first commercial software using Kinetic Monte Carlo to simulate the diffusion and activation/deactivation of dopants in Silicon and Silicon-like materials is released by [[Synopsys]], reported by Martin-Bragado et al. (Martin-Bragado 06).&lt;br /&gt;
&lt;br /&gt;
==Varieties of KMC==&lt;br /&gt;
The KMC method can be subdivided by how the objects are moving or reactions&lt;br /&gt;
occurring. At least the following subdivisions are used:&lt;br /&gt;
&lt;br /&gt;
* Lattice KMC (&#039;&#039;&#039;LKMC&#039;&#039;&#039;) signifies KMC carried out on an atomic [[crystal structure|lattice]]. Often this variety is also called atomistic KMC, (&#039;&#039;&#039;AKMC&#039;&#039;&#039;). A typical example is simulation of [[vacancy (chemistry)|vacancy]] [[diffusion]] in [[alloy]]s, where a [[vacancy (chemistry)|vacancy]] is allowed to jump around the lattice with rates that depend on the local elemental composition&lt;br /&gt;
&lt;br /&gt;
* Object KMC (&#039;&#039;&#039;OKMC&#039;&#039;&#039;) means KMC carried out for [[crystallographic defect|defects]] or [[impurity|impurities]], which are jumping either in random or lattice-specific directions. Only the positions of the jumping objects are included in the simulation, not those of the &#039;background&#039; lattice atoms. The basic KMC step is one object jump.&lt;br /&gt;
&lt;br /&gt;
* Event KMC (&#039;&#039;&#039;EKMC&#039;&#039;&#039;) or First-passage KMC (&#039;&#039;&#039;FPKMC&#039;&#039;&#039;) signifies an OKMC variety where the following reaction between objects (e.g. clustering of two [[impurity|impurities]] or [[vacancy (chemistry)|vacancy]]-[[interstitial defect|interstitial]] annihilation) is chosen with the KMC algorithm, taking the object positions into account, and this event is then immediately carried out (Dalla Torre 2005, Oppelstrup 2006).&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.roentzsch.org/RealBit/ 3D lattice kinetic Monte Carlo simulation in &#039;bit language&#039;]&lt;br /&gt;
* [http://www.roentzsch.org/Rayleigh/ KMC simulation of the Plateau-Rayleigh instability]&lt;br /&gt;
* [http://www.roentzsch.org/SurfDiff/ KMC simulation of f.c.c. vicinal (100)-surface diffusion]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* (Cox 1965): D.R. Cox and H.D. Miller, The Theory of Stochastic Processes (Methuen, London, 1965, pp 6–7.&lt;br /&gt;
&lt;br /&gt;
* (Young 1966): W. M. Young and E. W. Elcock, Proceedings of the Physical Society  89 (1966) 735.&lt;br /&gt;
&lt;br /&gt;
* (Bortz 1975): A. B. Bortz and M. H. Kalos and J. L. Lebowitz, Journal of Computational Physics 17 (1975) 10 [http://dx.doi.org/10.1016/0021-9991(75)90060-1 Journal of Computational Physics 17 (1975) 10] (needs subscription)&lt;br /&gt;
&lt;br /&gt;
* (Gillespie 1976): D. T. Gillespie, Journal of Computational Physics 22 (1976) 403&lt;br /&gt;
&lt;br /&gt;
* (Fichthorn 1991): K. A. Fichthorn and W. H. Weinberg, [http://dx.doi.org/10.1063/1.461138 Journal of Chemical Physics 95 (1991) 1090] (needs subscription)&lt;br /&gt;
&lt;br /&gt;
* (Meng 1994): B. Meng and W. H. Weinberg, J. Chem. Phys. 100, 5280 (1994).&lt;br /&gt;
&lt;br /&gt;
* (Meng 1996): B. Meng, W.H. Weinberg, Surface Science 364 (1996) 151-163.&lt;br /&gt;
&lt;br /&gt;
* (Prados 1997): A. Prados, J. J. Brey and B. Sanchez-Rey, Journal of Statistical Physics 89, 709-734 (1997)&lt;br /&gt;
&lt;br /&gt;
* (Jansen 2003): A.P.J. Jansen, An Introduction To Monte Carlo Simulations Of Surface Reactions, Condensed Matter, abstract [http://arxiv.org/abs/cond-mat/0303028 cond-mat/0303028].&lt;br /&gt;
&lt;br /&gt;
* (Dalla Torre 2005): J. Dalla Torre, J.-L. Bocquet, N.V. Doan, E. Adam and A. Barbu, Phil. Mag. 85 (2005), p.&amp;amp;nbsp;549.&lt;br /&gt;
&lt;br /&gt;
* (Voter 2005): A. F. Voter, Introduction to the Kinetic Monte Carlo Method, in Radiation Effects in Solids, edited by K. E. Sickafus and E. A. Kotomin (Springer, NATO Publishing Unit, Dordrecht, The Netherlands, 2005).&lt;br /&gt;
&lt;br /&gt;
* (Opplestrup 2006): T. Opplestrup, V. V. Bulatov, G. H. Gilmer, M. H. Kalos, and B. Sadigh, First-Passage Monte Carlo Algorithm: Diffusion without All the Hops, Physical Review Letters 97, 230602 (2006)&lt;br /&gt;
&lt;br /&gt;
* (Chatterjee 2007): A. Chatterjee and D. G. Vlachos, An overview of spatial microscopic and accelerated kinetic Monte Carlo methods, J. Computer-Aided Mater. Des. 14, 253 (2007).&lt;br /&gt;
&lt;br /&gt;
* (Chotia 2008): A. Chotia, M. Viteau, T. Vogt, D. Comparat and P. Pillet, Kinetic Monte Carlo modelling of dipole blockade in Rydberg excitation experiment, New Journal of Physics 10 pages 045031 (2008)&lt;br /&gt;
&lt;br /&gt;
* (Martinez 2008): E.Martinez, J.Marian, M.H.Kalos, J.M.Perlado, Synchronous Parallel Kinetic Monte Carlo for Continuum Diffusion-Reaction Systems, Journal of Computational Physics, Volume 227, Issue 8, 1 April 2008, Pages 3804-3823&lt;br /&gt;
&lt;br /&gt;
* (Martin-Bragado 2008): I. Martin-Bragado, S. Tian, M. Johnson, P. Castrillo, R. Pinacho, J. Rubio and M. Jaraiz, Modeling charged defects, dopant diffusion and activation mechanisms for TCAD simulations using kinetic Monte Carlo. [http://dx.doi.org/10.1016/j.nimb.2006.10.035 Nuclear Instruments and Methods in Physics Research B, 253 (2006) 63-67 (needs subscription).]&lt;br /&gt;
&lt;br /&gt;
* (Slepoy 2008): A. Slepoy, A. P. Thompson, and S. J. Plimpton, A constant-time kinetic Monte Carlo algorithm for simulation of large biochemical reaction networks, Journal of Chemical Physics, Volume 128, Issue 20, December 2007, Page 205101&lt;br /&gt;
&lt;br /&gt;
* (Baeurle 2006): S.A. Baeurle, T. Usami and A.A. Gusev, Polymer 47 (2006) 8604 [http://dx.doi.org/10.1016/j.polymer.2006.10.017].&lt;br /&gt;
{{Use dmy dates|date=September 2010}}&lt;br /&gt;
&lt;br /&gt;
* (Serebrinsky 2011): S.A. Serebrinsky, Physical time scale in kinetic Monte Carlo simulations of continuous-time Markov chains, Physical Review E, Volume 83, Issue 3, March 2011, Paper no. 037701 [http://pre.aps.org/abstract/PRE/v83/i3/e037701 [4&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
[[Category:Monte Carlo methods]]&lt;br /&gt;
[[Category:Statistical mechanics]]&lt;br /&gt;
[[Category:Stochastic simulation]]&lt;/div&gt;</summary>
		<author><name>89.71.154.32</name></author>
	</entry>
	<entry>
		<id>https://en.formulasearchengine.com/w/index.php?title=Euler%27s_factorization_method&amp;diff=21715</id>
		<title>Euler&#039;s factorization method</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/w/index.php?title=Euler%27s_factorization_method&amp;diff=21715"/>
		<updated>2013-10-02T15:17:07Z</updated>

		<summary type="html">&lt;p&gt;89.71.152.246: /* Worked example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This article is a temporary experiment to see whether it is feasible and desirable to merge the articles [[Recursive set]], [[Recursive language]], [[Decidable language]], [[Decidable problem]] and [[Undecidable problem]]. Input on how best to do this is very much welcome on [[Talk:Recursive languages and sets|the article&#039;s talk page]]. This is a work in progress so the current version may seem awkward.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In [[computability theory]], a set is &#039;&#039;&#039;decidable&#039;&#039;&#039;, &#039;&#039;&#039;computable&#039;&#039;&#039;, or &#039;&#039;&#039;recursive&#039;&#039;&#039; if there is an [[algorithm]] that terminates after a finite amount of time and correctly decides whether a given object belongs to the set. Decidability of a set is of particular interest when the set is viewed as a [[decision problem]]; a decidable set is also a  &#039;&#039;&#039;decidable problem&#039;&#039;&#039;, &#039;&#039;&#039;computable problem&#039;&#039;&#039;, and &#039;&#039;&#039;recursive problem&#039;&#039;&#039;. The remainder of this article uses the term &#039;&#039;decidable&#039;&#039;, although &#039;&#039;recursive&#039;&#039; and &#039;&#039;computable&#039;&#039; are equivalent in this context. &lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;language&#039;&#039;&#039; is a set of [[String (computer science)|finite strings]] over a particular [[Alphabet (computer science)|alphabet]]. A language is decidable (also computable, recursive) if it is a decidable set.&lt;br /&gt;
&lt;br /&gt;
A set, language, or decision problem that is not decidable is &#039;&#039;&#039;undecidable&#039;&#039;&#039;, &#039;&#039;&#039;non-recursive&#039;&#039;&#039;, &#039;&#039;&#039;non-computable&#039;&#039;&#039;, or &#039;&#039;&#039;uncomputable&#039;&#039;&#039;. There are many known undecidable sets; one of the earliest, and most famous, examples is the [[halting problem]].&lt;br /&gt;
&lt;br /&gt;
Decidable sets and languages are a strict subclass of the class of [[recursively enumerable set]]s.  For those sets, it is only required that there is an algorithm that correctly decides when an input &#039;&#039;is&#039;&#039; in the set; the algorithm may fail to terminate for inputs not belonging to the set.&lt;br /&gt;
&lt;br /&gt;
==Formal definition==&lt;br /&gt;
&lt;br /&gt;
A subset &#039;&#039;S&#039;&#039; of the [[natural numbers]] is called &#039;&#039;&#039;decidable&#039;&#039;&#039; if there exists a [[total function|total]] [[computable function]] &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; such that &lt;br /&gt;
&amp;lt;math&amp;gt;f(x) = 0\,&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;x \in S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;f(x) \not = 0&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;x \notin S&amp;lt;/math&amp;gt;.  In other words, the set &#039;&#039;S&#039;&#039; is decidable [[if and only if]] the [[indicator function]] &amp;lt;math&amp;gt;1_{S}&amp;lt;/math&amp;gt; is [[computable function|computable]].&lt;br /&gt;
&lt;br /&gt;
A parallel definition applies to sets of strings over some finite alphabet; these sets are often called &#039;&#039;&#039;languages&#039;&#039;&#039;. A language is decidable if there is a computable function taking strings over the alphabet as input, which returns 0 when presented with a string not in the language, and returns 1 when presented with a string in the language. &lt;br /&gt;
&lt;br /&gt;
The definition can be extended to arbitrary countable sets via [[Gödel numbering]]s. If each element of a set &#039;&#039;U&#039;&#039; has a unique associated natural number, a subset &#039;&#039;C&#039;&#039; of &#039;&#039;U&#039;&#039; is called computable if the set of natural numbers corresponding to the elements of &#039;&#039;C&#039;&#039; is decidable under the definition above. A similar definition can be made in which elements of &#039;&#039;U&#039;&#039; are identified with finite strings rather than natural numbers.&lt;br /&gt;
&lt;br /&gt;
The definition can also be extended to sets of ordered pairs, ordered triples, and more generally finite sequences of objects. One way to do this is to use computable functions taking more than one argument &amp;amp;ndash; for example, a set &#039;&#039;A&#039;&#039; of ordered pairs of elements of a set &#039;&#039;X&#039;&#039; is decidable if there is a computable function &#039;&#039;g&#039;&#039; taking two arguments, such that for all &#039;&#039;x&#039;&#039; and &#039;&#039;y&#039;&#039; in &#039;&#039;X&#039;&#039;, &#039;&#039;g&#039;&#039;(&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;)= 0 if the pair (&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;) is not in &#039;&#039;A&#039;&#039;, and &#039;&#039;g&#039;&#039;(&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;)=1 if the pair is in &#039;&#039;A&#039;&#039;. Another way of defining decidability for sets of sequences is to use a [[Cantor pairing function|pairing function]] to identify each sequence with a single object (natural number or string). Then the definitions of decidability above can be directly applied. This second method is particularly useful when the set in question contains sequences of varying lengths.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
There are many examples of decidable sets:&lt;br /&gt;
* The [[empty set]] is decidable, and the entire set of natural numbers is decidable.&lt;br /&gt;
* Every finite or [[cofinite]] subset of the natural numbers is decidable.&lt;br /&gt;
* The set of [[prime number]]s is decidable.&lt;br /&gt;
* The finite binary strings with an even number of 1s is decidable.&lt;br /&gt;
* If &#039;&#039;f&#039;&#039; is a [[computable function]] then the set of pairs (&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;) such that &#039;&#039;f&#039;&#039;(&#039;&#039;x&#039;&#039;) = &#039;&#039;y&#039;&#039; is decidable.&lt;br /&gt;
&lt;br /&gt;
It is possible for a set to be decidable even if the precise algorithm that decides it is not known. For example, consider the set &#039;&#039;A&#039;&#039; containing all natural numbers &#039;&#039;n&#039;&#039; such that there is a pair of [[twin prime]]s larger than &#039;&#039;n&#039;&#039;.  It is not presently known whether there are infinitely many twin primes, or whether (otherwise) there is a largest pair of twin primes. But in either case, the set &#039;&#039;A&#039;&#039; is decidable. If there are infinitely many twin primes, &#039;&#039;A&#039;&#039;  contains every natural number, and is thus decidable. Otherwise, there is a largest pair of twin primes, which means &#039;&#039;A&#039;&#039; is finite, and thus decidable. This means that, regardless of whether there are infinitely many twin primes, the set &#039;&#039;A&#039;&#039; is decidable, despite the fact that the correct algorithm has not been identified.&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
&lt;br /&gt;
The class of decidable sets has numerous closure properties.&lt;br /&gt;
*If &#039;&#039;A&#039;&#039; is a decidable set then the [[complement (set theory)|complement]] of &#039;&#039;A&#039;&#039; is also a decidable set.&lt;br /&gt;
*If &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; are decidable sets then &#039;&#039;A&#039;&#039; &amp;amp;cap; &#039;&#039;B&#039;&#039;, &#039;&#039;A&#039;&#039; &amp;amp;cup; &#039;&#039;B&#039;&#039;, and &amp;lt;math&amp;gt;A \setminus B&amp;lt;/math&amp;gt; are decidable.&lt;br /&gt;
* If &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; are decidable sets then &#039;&#039;A&#039;&#039; &amp;amp;times; &#039;&#039;B&#039;&#039; is decidable; this is the set of pairs (&#039;&#039;x&#039;&#039;,&#039;&#039;y&#039;&#039;) such that &#039;&#039;x&#039;&#039; is in &#039;&#039;A&#039;&#039; and &#039;&#039;y&#039;&#039; is in &#039;&#039;B&#039;&#039;. Moreover, the image of &#039;&#039;A&#039;&#039; &amp;amp;times; &#039;&#039;B&#039;&#039; under the [[Cantor pairing function]] is decidable.&lt;br /&gt;
*The [[preimage]] of a decidable set under a [[total function|total]] [[computable function]] is a decidable set.&lt;br /&gt;
* The image of a decidable set under a total computable [[bijection]] is decidable.&lt;br /&gt;
Sets of strings have additional closure properties. If &#039;&#039;L&#039;&#039; and &#039;&#039;P&#039;&#039; are two decidable languages, then the following languages are also decidable:&lt;br /&gt;
* The [[Kleene star]] &#039;&#039;L&#039;&#039;&amp;lt;sup&amp;gt;&amp;amp;lowast;&amp;lt;/sup&amp;gt;. A string is in this set if and only if it can be obtained by concatenating zero or more elements of &#039;&#039;L&#039;&#039;, with repetition allowed.&lt;br /&gt;
* The concatenation &#039;&#039;L&#039;&#039;&amp;amp;#8728; &#039;&#039;P&#039;&#039;. A string is in this set if and only if it can be written as an element of &#039;&#039;L&#039;&#039; followed by an element of &#039;&#039;P&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Several characterizations of decidable sets are known. &lt;br /&gt;
* A set &#039;&#039;A&#039;&#039; is decidable if and only if both &#039;&#039;A&#039;&#039; and the [[complement (set theory)|complement]] of &#039;&#039;A&#039;&#039; are [[recursively enumerable set]]s.&lt;br /&gt;
* A set of natural numbers is decidable if and only if it is at level &amp;lt;math&amp;gt;\Delta^0_1&amp;lt;/math&amp;gt; of the [[arithmetical hierarchy]].&lt;br /&gt;
* A set of natural numbers is decidable if and only if it is either the range of a nondecreasing total computable function or is the empty set. Conversely, the image of a decidable set under a nondecreasing total computable function is decidable.&lt;br /&gt;
&lt;br /&gt;
==Decidable languages==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;decidable language&#039;&#039;&#039; in [[mathematics]], [[logic]] and [[computer science]], is a type of [[formal language]] which is also called &#039;&#039;&#039;recursive&#039;&#039;&#039; or &#039;&#039;&#039;Turing-decidable&#039;&#039;&#039;. Since computational problems can be formulated in terms of testing membership in a language, showing that a language is decidable is thus considered the same as showing that an equivalent computational problem is decidable.&amp;lt;ref&amp;gt;{{cite book|last=Sipser|first=Michael|title=Introduction to the Theory of Computation, Third Edition|year=2013|publisher=Cengage Learning|location=Boston, MA|isbn=978-1-133-18779-0|page=195}}&amp;lt;/ref&amp;gt;  In other words, we can say that a language L is decidable if there is a [[Turing Machine]] which decides L and halts on every input (meaning it either accepts or rejects, but never enters an infinite loop).  A computational problem is thus considered decidable if it can be solved by a computer.&lt;br /&gt;
&lt;br /&gt;
The class of all decidable languages is often called &#039;&#039;&#039;[[R (complexity)|R]]&#039;&#039;&#039;, although this name is also used for the class [[RP (complexity)|RP]].  All decidable languages are [[recursively enumerable language|recursively enumerable]], and all [[regular language|regular]], [[context-free language|context-free]] and [[context-sensitive language|context-sensitive]] languages are decidable. In other words, all languages recognized by [[Deterministic finite automaton|DFA]]’s, [[Nondeterministic finite automaton|NFA]]’s, and [[Context-free grammar|CFG]]’s are decidable. However, not all languages recognized by a [[Turing machine|TM]] are decidable.  Similarly, not all languages that are recognizable are decidable.&amp;lt;ref&amp;gt;{{cite book|last=Sipser|first=Michael|title=Introduction to the Theory of Computation, Third Edition|year=2013|publisher=Cengage Learning|location=Boston, MA|isbn=978-1-133-18779-0|page=201}}&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This type of language was not defined in the [[Chomsky hierarchy]] of {{Harv|Chomsky|1959}}, and there is no simple class of [[formal grammar]]s that capture the decidable languages.{{Citation needed|date=October 2008}}&lt;br /&gt;
&lt;br /&gt;
=== List of Common Decidable Languages and Problems &amp;lt;ref&amp;gt;{{cite book|last=Sipser|first=Michael|title=Introduction to the Theory of Computation, Third Edition|year=2013|publisher=Cengage Learning|location=Boston, MA|isbn=978-1-133-18779-0|pages=194–200}}&amp;lt;/ref&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{DFA} = \{\langle B,w \rangle \mid B \text{ is a DFA that accepts input string } w \}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{NFA} = \{\langle B,w \rangle \mid B \text{ is a NFA that accepts input string } w \}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{REX} = \{\langle R,w \rangle \mid R \text{ is a regular expression that generates string } w \}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A_{CFG} = \{\langle G,w \rangle \mid G \text{ is a CFG that generates string } w \}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
E_{DFA} = \{\langle A \rangle \mid A \text{ is a DFA and } L \left( A \right)= \empty \}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EQ_{DFA} = \{\langle A, B \rangle \mid A \text { and } B \text{ are DFA&#039;s and } L \left( A \right)= L\left( B \right) \}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
E_{CFG} = \{\langle G \rangle \mid G \text{ is a CFG and } L \left( G \right)= \empty \}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Undecidability ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;[[decision problem]]&#039;&#039;&#039; is, informally, a problem whose solution is either &amp;quot;yes&amp;quot; or &amp;quot;not&amp;quot;. Each such problem is characterized by the set of inputs whose solution is &amp;quot;yes&amp;quot;. As a result, decision problems are formally defined as being sets, either of strings or of natural numbers: any such set defines the problem of deciding whether a given object belongs to the set.&lt;br /&gt;
&lt;br /&gt;
A decision problem &#039;&#039;A&#039;&#039; is called &#039;&#039;&#039;decidable&#039;&#039;&#039; or &#039;&#039;&#039;effectively solvable&#039;&#039;&#039; if &#039;&#039;A&#039;&#039; is a [[recursive set]], that is, there exists an algorithm for establishing the presence of the element in the set. A problem is called &#039;&#039;&#039;partially decidable&#039;&#039;&#039;, &#039;&#039;&#039;semidecidable&#039;&#039;&#039;, &#039;&#039;&#039;solvable&#039;&#039;&#039;, or &#039;&#039;&#039;provable&#039;&#039;&#039; if &#039;&#039;A&#039;&#039; is a [[recursively enumerable set]].  Partially decidable problems and any other problems that are not decidable are called &#039;&#039;&#039;undecidable&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===The halting problem ===&lt;br /&gt;
{{main|Halting problem}}&lt;br /&gt;
&lt;br /&gt;
In [[computability theory (computer science)|computability theory]], the &#039;&#039;&#039;halting problem&#039;&#039;&#039; is a [[decision problem]] which can be stated as follows:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Given a description of a [[computer program|program]] and a finite input, decide whether the program eventually halts when started with that input, or whether it runs forever..&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Alan Turing]] proved in 1936 that a general [[algorithm]] to solve the halting problem for &#039;&#039;all&#039;&#039; possible program-input pairs cannot exist; the set of pairs (&#039;&#039;e&#039;&#039;,&#039;&#039;n&#039;&#039;) such that the program with description &#039;&#039;e&#039;&#039; halts on input &#039;&#039;n&#039;&#039; is undecidable.&lt;br /&gt;
&lt;br /&gt;
=== Decidability of logical theories ===&lt;br /&gt;
&lt;br /&gt;
{{main|Decidability (logic)}}&lt;br /&gt;
&lt;br /&gt;
In [[mathematical logic]], a &#039;&#039;&#039;[[theory (mathematical logic)|theory]]&#039;&#039;&#039; is a set of formal sentences that is closed under [[logical consequence]] (essentially, any sentence that can be proved from sentences in the theory is itself in the theory). Important examples are the set of all [[Peano arithmetic|arithmetical sentences]] that are satisfied by the set of [[natural numbers]], and the set of arithmetical sentences provable from the axioms of [[Peano arithmetic]].  &lt;br /&gt;
&lt;br /&gt;
Many formal theories have been studied in the context of decidability. For example, the theory of the real numbers (in the [[signature (logic)|signature]] of [[field (mathematics)|fields]]) is decidable, while the [[first-order logic|first-order]] theory of the natural numbers is not.  [[Gödel&#039;s incompleteness theorem]] implies that no first-order theory capable of interpreting a sufficient amount of the theory of the natural numbers can be decidable.&lt;br /&gt;
&lt;br /&gt;
==List of undecidable problems==&lt;br /&gt;
&lt;br /&gt;
In [[computability theory]], an &#039;&#039;&#039;undecidable problem&#039;&#039;&#039; is a problem whose language is not a [[recursive set]]. More informally, such problems cannot be solved in general by computers; see [[Decidability (logic)|decidability]]. This is a list of undecidable problems. Note that there are [[uncountable set|uncountably]] many undecidable problems, so this list is necessarily incomplete. Though undecidable languages are not recursive languages, they may be a [[subset]] of [[Alan Turing|Turing]] recognizable languages.&lt;br /&gt;
&lt;br /&gt;
=== Problems related to abstract machines ===&lt;br /&gt;
&lt;br /&gt;
* The [[halting problem]] (determining whether a specified machine halts or runs forever).&lt;br /&gt;
* The [[busy beaver]] problem (determining the length of the longest halting computation among machines of a specified size).&lt;br /&gt;
* [[Rice&#039;s theorem]] states that for all non-trivial properties of partial functions, it is undecidable whether a machine computes a partial function with that property.&lt;br /&gt;
&lt;br /&gt;
=== Other problems ===&lt;br /&gt;
&lt;br /&gt;
* The [[Post correspondence problem]].&lt;br /&gt;
* The [[word problem for groups]].&lt;br /&gt;
* The [[word problem (computability)|word problem]] for certain [[formal languages]].&lt;br /&gt;
* The problem of determining if a given set of [[Wang tile]]s can tile the plane.&lt;br /&gt;
* The problem whether a [[Tag system]] halts.&lt;br /&gt;
* The problem of determining the [[Kolmogorov complexity]] of a string.&lt;br /&gt;
* Determination of the solvability of a Diophantine equation, known as [[Hilbert&#039;s tenth problem]]&lt;br /&gt;
* Determining whether two finite [[simplicial complex]]es are homeomorphic&lt;br /&gt;
* Determining whether the [[fundamental group]] of a finite simplicial complex is trivial&lt;br /&gt;
* Determining if a [[context-free grammar]] generates all possible strings, or if it is ambiguous.&lt;br /&gt;
* Given two context-free grammars, determining whether they generate the same set of strings, or whether one generates a subset of the strings generated by the other, or whether there is any string at all that both generate.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
* {{Citation | last = Chomsky | first = Noam | year = 1959 | title = On certain formal properties of grammars | journal = Information and Control | volume = 2 | issue = 2 | pages = 137–167 | doi = 10.1016/S0019-9958(59)90362-6 | postscript = .}}&lt;br /&gt;
*{{ citation | author=Cutland, N. |title=Computability.|publisher=Cambridge University Press|year=1980|isbn=0-521-29465-7 }}&lt;br /&gt;
* {{Citation | last1=Rogers | first1=Hartley | title=The Theory of Recursive Functions and Effective Computability | origyear=1967 | publisher=First MIT press paperback edition | isbn=978-0-262-68052-3 | year=1987}}&lt;br /&gt;
* {{Citation|author = [[Michael Sipser]] | year = 1997 | title = Introduction to the Theory of Computation | publisher = PWS Publishing | chapter = Decidability | pages = 151–170 | isbn = 0-534-94728-X}}&lt;br /&gt;
* {{Citation | last1=Soare | first1=R. | title=Recursively Enumerable Sets and Degrees | publisher=[[Springer-Verlag]] | location=Berlin, New York | year=1987}}&lt;br /&gt;
&lt;br /&gt;
{{Formal languages and grammars}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Computability theory]]&lt;br /&gt;
[[Category:Theory of computation]]&lt;br /&gt;
[[Category:Formal languages]]&lt;/div&gt;</summary>
		<author><name>89.71.152.246</name></author>
	</entry>
</feed>