<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=PLS_%28complexity%29</id>
	<title>PLS (complexity) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=PLS_%28complexity%29"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=PLS_(complexity)&amp;action=history"/>
	<updated>2026-06-02T05:15:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0-wmf.28</generator>
	<entry>
		<id>https://en.formulasearchengine.com/index.php?title=PLS_(complexity)&amp;diff=13448&amp;oldid=prev</id>
		<title>en&gt;Mathmon at 23:05, 12 December 2013</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=PLS_(complexity)&amp;diff=13448&amp;oldid=prev"/>
		<updated>2013-12-12T23:05:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In [[queueing theory]], a discipline within the mathematical [[probability theory|theory of probability]], &amp;#039;&amp;#039;&amp;#039;Buzen&amp;#039;s algorithm&amp;#039;&amp;#039;&amp;#039; (or  &amp;#039;&amp;#039;&amp;#039;convolution algorithm&amp;#039;&amp;#039;&amp;#039;) is an algorithm for calculating the [[normalization constant]] G(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;) in the [[Gordon–Newell theorem]]. This method was first proposed by [[Jeffrey P. Buzen]] in 1973.&amp;lt;ref name=&amp;quot;buzen-1973&amp;quot;&amp;gt;{{cite doi | 10.1145/362342.362345}}&amp;lt;/ref&amp;gt; Computing G(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;) is required to compute the stationary [[probability distribution]] of a closed queueing network.&amp;lt;ref name=&amp;quot;gn&amp;quot;&amp;gt;{{cite doi|10.1287/opre.15.2.254}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Performing a naïve computation of the normalising constant requires enumeration of all states. For a system with &amp;#039;&amp;#039;N&amp;#039;&amp;#039; jobs and &amp;#039;&amp;#039;M&amp;#039;&amp;#039; states there are &amp;lt;math&amp;gt;\tbinom{N+M-1}{M-1}&amp;lt;/math&amp;gt; states. Buzen&amp;#039;s algorithm &amp;quot;computes G(1), G(2), ..., G(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;) using a total of &amp;#039;&amp;#039;NM&amp;#039;&amp;#039; multiplications and &amp;#039;&amp;#039;NM&amp;#039;&amp;#039; additions.&amp;quot; This is a significant improvement and allows for computations to be performed with much larger networks.&amp;lt;ref name=&amp;quot;buzen-1973&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Problem setup==&lt;br /&gt;
&lt;br /&gt;
Consider a closed queueing network with &amp;#039;&amp;#039;M&amp;#039;&amp;#039; service facilities and &amp;#039;&amp;#039;N&amp;#039;&amp;#039; circulating customers. Write &amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;(&amp;#039;&amp;#039;t&amp;#039;&amp;#039;) for the number of customers present at the &amp;#039;&amp;#039;i&amp;#039;&amp;#039;th facility at time &amp;#039;&amp;#039;t&amp;#039;&amp;#039;, such that &amp;lt;math&amp;gt;\scriptstyle \sum_{i=1}^M n_i = N&amp;lt;/math&amp;gt;. We assume that the service time for a customer at the &amp;#039;&amp;#039;i&amp;#039;&amp;#039;th facility is given by an [[exponentially distributed]] random variable with parameter &amp;#039;&amp;#039;μ&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; and that after completing service at the &amp;#039;&amp;#039;i&amp;#039;&amp;#039;th facility a customer will proceed to the &amp;#039;&amp;#039;j&amp;#039;&amp;#039;th facility with probability &amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;ij&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt;.&amp;lt;ref name=&amp;quot;gn&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It follows from the [[Gordon–Newell theorem]] that the equilibrium distribution of this model is&lt;br /&gt;
::&amp;lt;math&amp;gt;\mathbb P(n_1,n_2,\cdots,n_M) = \frac{1}{\text{G}(N)}\prod_{i=1}^M \left( X_i \right)^{n_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
where the &amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; are found by solving&lt;br /&gt;
::&amp;lt;math&amp;gt;\mu_j X_j = \sum_{i=1}^M \mu_i X_i p_{ij}\quad\text{ for }j=1,\ldots,N.&amp;lt;/math&amp;gt;&lt;br /&gt;
and &amp;#039;&amp;#039;G&amp;#039;&amp;#039;(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;) is a normalizing constant chosen that the above probabilities sum to 1.&amp;lt;ref name=&amp;quot;buzen-1973&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Buzen&amp;#039;s algorithm is an efficient method to compute G(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;).&amp;lt;ref name=&amp;quot;buzen-1973&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Algorithm description==&lt;br /&gt;
&lt;br /&gt;
Write g(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;,&amp;#039;&amp;#039;M&amp;#039;&amp;#039;) for the normalising constant of a closed queueing network with &amp;#039;&amp;#039;N&amp;#039;&amp;#039; circulating customers and &amp;#039;&amp;#039;M&amp;#039;&amp;#039; service stations. The algorithm starts by noting solving the above relations for the &amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;lt;sub&amp;gt;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;lt;/sub&amp;gt; and then setting starting conditions&amp;lt;ref name=&amp;quot;buzen-1973&amp;quot; /&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;g(0, m) = 1 \text{ for }m=1,2,\cdots,M&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;g(n, 1) = (X_1)^n \text{ for }n=0,1,\cdots,N.&amp;lt;/math&amp;gt;&lt;br /&gt;
The recurrence relation&amp;lt;ref name=&amp;quot;buzen-1973&amp;quot; /&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;g(n, m) = g(n,m-1)+X_m g(n-1,m).&amp;lt;/math&amp;gt;&lt;br /&gt;
is used to compute a grid of values. The sought for value G(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;)&amp;amp;nbsp;=&amp;amp;nbsp;g(&amp;#039;&amp;#039;N&amp;#039;&amp;#039;,&amp;#039;&amp;#039;M&amp;#039;&amp;#039;).&amp;lt;ref name=&amp;quot;buzen-1973&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Marginal distributions, expected number of customers==&lt;br /&gt;
&lt;br /&gt;
The coefficients g(&amp;#039;&amp;#039;n&amp;#039;&amp;#039;,&amp;#039;&amp;#039;m&amp;#039;&amp;#039;), computed using Buzen&amp;#039;s algorithm, can also be used to compute [[marginal distribution]]s and [[expected value|expected]] number of customers at each node.&lt;br /&gt;
::&amp;lt;math&amp;gt;\mathbb P(n_i = k) = \frac{X_i^k}{G(N)}[G(N-k) - X_i G(N-k-1)]\quad\text{ for }k=0,1,\ldots,N-1,&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt;\mathbb P(n_i = N) = \frac{X_i^N}{G(N)}[G(0)].&amp;lt;/math&amp;gt;&lt;br /&gt;
the expected number of customers at facility &amp;#039;&amp;#039;i&amp;#039;&amp;#039; by&lt;br /&gt;
::&amp;lt;math&amp;gt;\mathbb E(n_i) = \sum_{k=1}^N X_i^k \frac{G(N-k)}{G(N)}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
It will be assumed that the &amp;#039;&amp;#039;X&amp;lt;sub&amp;gt;m&amp;lt;/sub&amp;gt;&amp;#039;&amp;#039; have been computed by solving the relevant equations and are available as an input to our routine.  Although &amp;#039;&amp;#039;g&amp;#039;&amp;#039; is in principle a two dimensional matrix, it can be computed in a column by column fashion starting from the leftmost column. The routine uses a single column vector &amp;#039;&amp;#039;C&amp;#039;&amp;#039; to represent the current column of &amp;#039;&amp;#039;g&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
C[0] := 1&lt;br /&gt;
for n := 1 step 1 until N do&lt;br /&gt;
   C[n] := 0;&lt;br /&gt;
&lt;br /&gt;
for m := 1 step 1 until M do&lt;br /&gt;
for n := 1 step 1 until N do&lt;br /&gt;
   C[n] := C[n] + X[m]*C[n-1];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At completion, &amp;#039;&amp;#039;C&amp;#039;&amp;#039; contains the desired values &amp;#039;&amp;#039;G(0), G(1)&amp;#039;&amp;#039; to &amp;#039;&amp;#039;G(N)&amp;#039;&amp;#039;. &amp;lt;ref name=&amp;quot;buzen-1973&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
*[http://www.cs.wustl.edu/~jain/cse567-08/ftp/k_35ca.pdf Jain: The Convolution Algorithm (class handout)]&lt;br /&gt;
*[http://cs.gmu.edu/~menasce/cs672/slides/CS672-convolution.pdf Menasce: Convolution Approach to Queueing Algorithms (presentation)]&lt;br /&gt;
&lt;br /&gt;
{{Queueing theory}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Stochastic processes]]&lt;br /&gt;
[[Category:Queueing theory]]&lt;br /&gt;
[[Category:Statistical algorithms]]&lt;/div&gt;</summary>
		<author><name>en&gt;Mathmon</name></author>
	</entry>
</feed>